[英]A subset of 3 dimensional matrix in Matlab
Lets assume we have a 3 dimensional matrix A
and X_IND = 4:8
and Y_IND = f(X_IND)
.假设我们有一个 3 维矩阵
A
和X_IND = 4:8
和Y_IND = f(X_IND)
。 f
is a function like 2*x^2+1
. f
是一个类似于2*x^2+1
的函数。 How I can extract following vector out of A
:我如何从
A
提取以下向量:
a = A(X_IND,Y_IND,3)
However, above equation in MATLAB leads to a matrix while the result should be an array since Y_IND
is function of X_IND
.然而,上述在MATLAB引线方程的矩阵,而结果应该是一个数组,因为
Y_IND
是的函数X_IND
。
Use sub2ind
to build a linear index .使用
sub2ind
构建线性索引。 Here's an example:下面是一个例子:
>> A = randi(9,2,3,3)
A(:,:,1) =
6 8 8
5 2 7
A(:,:,2) =
8 7 9
8 7 2
A(:,:,3) =
8 9 8
2 4 8
>> X_IND = [1 2];
>> Y_IND = X_IND + 1;
>> Z_IND = 3;
>> Z_IND = repmat(3, size(X_IND)); %// all indices should have the same size
>> ind = sub2ind(size(A), X_IND, Y_IND, Z_IND); %// build linear index
>> A(ind)
ans =
9 8
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.