问题
我有一个矩阵 M 如下:
M = [1, 1, 0, 1, 0, 0, 0;
0, 1, 1, 0, 1, 0, 0;
0, 0, 1, 1, 0, 1, 0;
0, 0, 0, 1, 1, 0, 1;
1, 0, 0, 0, 1, 1, 0;
0, 1, 0, 0, 0, 1, 1;
1, 0, 1, 0, 0, 0, 1];
所有列中的总数为 21:
Total_ones_in_cols = 21;
然后我预分配内存以查找 M 中每一列的行索引:
row_indices = zeros(1,Total_ones_in_cols);
下一步是查找所有列的行索引:
for i = 1:7
Temp = find(M(:,i));
row_indices = [row_indices, Temp.'];
end
问题
尽管对 row_indices 进行了预分配,MATLAB 仍然建议在循环内预分配 row_indices 以提高速度。有人可以解释为什么会这样吗?我的猜测是,由于我在循环中不断更改 row_indices 的大小,因此我预分配的先前内存被覆盖并被丢弃,这本质上意味着我所做的预分配变得无用。