两个数组在matlab/octave中定义2d坐标,作为数组索引

Jas*_*son 7 arrays indexing matlab octave

我有一个2D数组,称之为'A'.我还有另外两个2D数组,称之为'ix'和'iy'.我想创建一个输出数组,其元素是x_idx和y_idx提供的索引对的A元素.我可以通过循环执行此操作,如下所示:


for i=1:nx
    for j=1:ny
        output(i,j) = A(ix(i,j),iy(i,j));
    end
end
Run Code Online (Sandbox Code Playgroud)

如果没有循环,我怎么能这样做?如果我输出= A(ix,iy),我在(ix)X(iy)的整个范围内得到A的值.

谢谢你,杰森

mer*_*erv 11

更快的方法是直接使用线性索引而不调用SUB2IND:

output = A( size(A,1)*(iy-1) + ix )
Run Code Online (Sandbox Code Playgroud)

...将矩阵A视为一维数组(按列顺序)

  • @Jacob:实际上,我认为`output`的结尾大小与`ix`相同. (2认同)