Matlab 范数函数向向量添加一个额外的元素?

Matlab norm function adds an extra element to a vector?

我有一个包含 3 个矩阵的元胞数组(数据),每个矩阵有 18 列,分别有 108021、108022 和 108021 行。我需要计算每个矩阵的第 13、14 列和第 15、16 列之间的欧氏距离,我使用以下代码:

for m = 1:length(data)
 for i = 1:length(data{m})
  distance(i) = norm(data{m}(i,13:14)-data{m}(i,15:16));
 end
end

除了最后一个矩阵(当 m=3 时)它添加了一个额外的元素外,它都有效。所以现在 distance 是一个元胞数组,包含 3 个大小为 108021、108022 和 108022 的向量...

有人知道这里出了什么问题吗?

谢谢!

奥埃斯罗

您可以将 distance 变量预先分配给一个矩阵并将值存储在那里。

distance = zeros(length(data),max(cellfun('size',data,1)));
for m = 1:length(data)
 for i = 1:length(data{m})
  distance(m,i) = norm(data{m}(i,13:14)-data{m}(i,15:16));
 end
end

或者如果 distance 必须是元胞数组

for m = 1:length(data)
 for i = 1:length(data{m})
  d{m}(i) = norm(data{m}(i,13:14)-data{m}(i,15:16));
 end
end