在 Matlab 中存储矢量坐标的最佳方法是什么?例如,h是图像的高度,w是宽度,我该怎么做(伪代码):
vectors = [];
for i=1:h
for j=1:w
vectors += p(i,j);
end
end
要从向量中获取第 k 个 p 对象,我可以使用 vector(k)。
非常感谢。
MATLAB 中的数组增长通过索引最后一个元素来工作:
vectors(end+1) = p(i,j);
传统观点认为,最好预先分配数组并使用索引,但自动数组增长变得更加高效,尤其是对于cell
非内置对象的 s 和数组。
但是,您可以p
直接通过[ii,jj] = ind2sub(size(p),k); p(jj,ii)
. 请注意与您的循环语义相匹配的顺序jj,ii
,这将创建一个向量,该向量p
以行优先顺序与 MATLAB 的本机列优先顺序对 的元素进行索引。也就是说,p(2)
指的是第 2 行,第 1 列p
,但您vectors(2)
将包含p
使用您的循环顺序的第 1 行,第 2 列。