简体   繁体   English

Matlab中3维矩阵的子集

[英]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 维矩阵AX_IND = 4:8Y_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM