【发布时间】:2022-01-12 22:06:21
【问题描述】:
我有一个长度不同的矩阵数组。我想比较矩阵 1 中每个项目与矩阵 2 中项目的距离,依此类推。我在下面编写的 for 循环运行良好,除非它到达长度为 2 的矩阵。循环继续到 xx = 3,然后调用错误(“位置 1 的索引超出数组边界。索引不得超过 2。” ) 因为没有 current_mat(3,:)。为什么只对长度为 2 的矩阵执行此操作?我对matlab比较陌生,所以如果这是一个简单的问题,我深表歉意。以下是一些玩具数据,它们与我在使用更大数据集时看到的错误相同。
matrix_1 = ones(16,3)
matrix_2 = ones(14,3)
matrix_3 = ones(2,3)
matrix_4 = ones(10,3)
my_array = {matrix_1; matrix_2; matrix_3; matrix_4}
for ii = 1:length(my_array)-1;
current_mat = my_array{ii};
compare_mat = my_array{ii+1};
for xx = 1:length(current_mat);
xx_info = current_mat(xx,:);
end
end
【问题讨论】:
-
我建议你永远不要使用
length。这是没用的。numel对于向量来说更快,或者明确说明您想要使用矩阵的大小:size(…, dim)。
标签: matlab for-loop variable-length