在给定MATLAB中的坐标数组的情况下从数组中返回特定项

时间:2014-07-25 20:54:48

标签: arrays matlab function cell-array

假设我有一些名为A_array的(数字)数组,其大小为N1xN2xN3,还有两个向量数组x = [x1,x2, ... ,xn]y = [y1,y2, ... ,yn]其中{ {1}}。 size(x) = size(y)

现在我正试图在(where n < N1,N2,N3) A_array(t,x1,y1)(t,x2,y2)处获取值,以便结果是一个看起来像这样的数组: etc.

我尝试编写[A_array(t,x1,y1), A_array(t,x2,y2), ... , A_array(t,xn,yn)],但这会返回一个A_array(t,x,y)数组,这不是我想要的。 我试图尽我所能将问题写成文字...... 这也可以推广到多个列表,即nxnxyz

1 个答案:

答案 0 :(得分:1)

使用 sub2ind ,如下所示 -

A_array = A(sub2ind(size(A),repmat(t,1,numel(x)),x,y))

对于使用xyzz2等作为索引数组的更高维数组的情况,只需将它们添加为这样 -

A_array = A(sub2ind(size(A),repmat(t,1,numel(x)),x,y,z,z2))

如果t用于索引到其他维度,例如第3维度[A_array(x1,y1,t), A_array(x2,y2,t), ... , A_array(xn,yn,t)],则相应地更改tsub2ind的位置。所以,对于这个修改过的案例,你会有 -

A_array = A(sub2ind(size(A),x,y,repmat(t,1,numel(x))))