如何在Matlab中存储矢量坐标

时间:2013-10-08 21:47:00

标签: arrays matlab vector

在Matlab中存储矢量坐标的最佳方法是什么? 例如,h是图像的高度,w是宽度,我该怎么做(伪代码):

vectors = [];
for i=1:h
    for j=1:w
       vectors += p(i,j);
    end
end

要从向量中获取第k个p对象,我可以使用向量(k)。

非常感谢。

2 个答案:

答案 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)

您可以直接使用p(k)。它相当于p(i,j) [i,j] = ind2sub([h w], k)

除非我不明白你的问题......