【问题标题】:A subset of 3 dimensional matrix in MatlabMatlab中3维矩阵的子集
【发布时间】:2015-11-23 22:57:59
【问题描述】:

假设我们有一个 3 维矩阵 AX_IND = 4:8Y_IND = f(X_IND)f 是一个类似2*x^2+1 的函数。如何从A 中提取以下向量:

a = A(X_IND,Y_IND,3)

但是,MATLAB 中的上述方程导致一个矩阵,而结果应该是一个数组,因为Y_INDX_IND 的函数。

【问题讨论】:

  • 您将 A 索引为 3D 矩阵,因此显然它将输出一个矩阵。请包括a 的外观所需的结果。
  • 输出 = f(X_IND) = A(X_IND, 对应的 Y(X_IND))

标签: arrays matlab matrix submatrix


【解决方案1】:

使用sub2ind 构建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

【讨论】:

    猜你喜欢
    • 2013-05-06
    • 1970-01-01
    • 1970-01-01
    • 2012-06-22
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多