Matlab 中 3 维矩阵的子集
A subset of 3 dimensional matrix in Matlab
假设我们有一个 3 维矩阵 A
和 X_IND = 4:8
和 Y_IND = f(X_IND)
。
f
是一个类似于 2*x^2+1
的函数。我如何从 A
:
中提取以下向量
a = A(X_IND,Y_IND,3)
但是,MATLAB 中的上述等式得出一个矩阵,而结果应该是一个数组,因为 Y_IND
是 X_IND
的函数。
使用sub2ind
to build a linear index。这是一个例子:
>> 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
假设我们有一个 3 维矩阵 A
和 X_IND = 4:8
和 Y_IND = f(X_IND)
。
f
是一个类似于 2*x^2+1
的函数。我如何从 A
:
a = A(X_IND,Y_IND,3)
但是,MATLAB 中的上述等式得出一个矩阵,而结果应该是一个数组,因为 Y_IND
是 X_IND
的函数。
使用sub2ind
to build a linear index。这是一个例子:
>> 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