我有一个包含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时,它添加了一个额外的元素,它起作用了。因此,现在距离是一个具有3个向量的单元格数组,大小分别为108021、108022和108022 ...]
任何人都知道这是怎么回事吗?
谢谢!
Auesro
您可以将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