【问题标题】:matlab efficient way to extract diagonals of a 3D matrix [duplicate]matlab提取3D矩阵对角线的有效方法[重复]
【发布时间】:2016-03-17 12:09:58
【问题描述】:

我想将一个 3D 矩阵(以下 Sigma)的对角线提取到另一个 3D 矩阵(以下 Sigma2)中。

Sigma = repmat(magic(4),1,1,3);
Sigma2 = nan(1,4,3);
for i=1:3
    Sigma2(1,:,i) = diag(Sigma(:,:,i));
end

有没有更有效的方法来做到这一点?

【问题讨论】:

    标签: performance matlab multidimensional-array diagonal


    【解决方案1】:

    你可以。如果将Sigma 重塑为矩阵,则选择 3D 矩阵的对角线现在是从矩阵中选择行。

    Sigma3=reshape(Sigma,[],size(Sigma,3));
    Selector=diag(true(size(Sigma,1),1));
    Sigma2=Sigma3(Selector(:),:);
    %Sigma2=permute(Sigma2,[3,1,2]) %optional last step to get a result with the same dimensions.
    

    【讨论】:

      猜你喜欢
      • 2015-05-15
      • 1970-01-01
      • 2017-12-23
      • 2021-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-30
      • 1970-01-01
      相关资源
      最近更新 更多