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

问题描述 投票:0回答:1

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

matlab euclidean-distance
1个回答
0
投票
来计算第13、14和15、16列之间的欧几里得距离

您可以将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
© www.soinside.com 2019 - 2024. All rights reserved.