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
我有一个包含 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