1

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

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

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

非常感谢。

4

2 回答 2

1

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 列。

于 2013-10-08T21:57:42.523 回答
0

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

除非我不明白你的问题……</sub>

于 2013-10-08T21:56:07.340 回答