在Matlab中存储矢量坐标的最佳方法是什么? 例如,h是图像的高度,w是宽度,我该怎么做(伪代码):
vectors = [];
for i=1:h
for j=1:w
vectors += p(i,j);
end
end
要从向量中获取第k个p对象,我可以使用向量(k)。
非常感谢。
答案 0 :(得分:1)
MATLAB中的数组增长通过索引超过最后一个元素来实现:
vectors(end+1) = p(i,j);
传统观点认为,最好预先分配数组并使用索引,但automatic array growth has become much more efficient,尤其是cell
和非内置对象数组。
但是,您可以直接通过p
从[ii,jj] = ind2sub(size(p),k); p(jj,ii)
获得您想要的内容。注意顺序jj,ii
以匹配您的循环语义,这将创建一个向量,该行向量以行主要顺序与MATLAB的本机列主要顺序索引p
的元素。也就是说,p(2)
引用p
的第2行第1列,但您的vectors(2)
将使用您的循环顺序包含p
的第1行第2列。
答案 1 :(得分:0)