假设我有一些名为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)
数组,这不是我想要的。
我试图尽我所能将问题写成文字......
这也可以推广到多个列表,即nxn
,x
,y
,z
?
答案 0 :(得分:1)
使用 sub2ind
,如下所示 -
A_array = A(sub2ind(size(A),repmat(t,1,numel(x)),x,y))
对于使用x
,y
,z
,z2
等作为索引数组的更高维数组的情况,只需将它们添加为这样 -
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)]
,则相应地更改t
内sub2ind
的位置。所以,对于这个修改过的案例,你会有 -
A_array = A(sub2ind(size(A),x,y,repmat(t,1,numel(x))))