Matlab提取3D矩阵对角线的有效方法

克尔

我想将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

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

丹尼尔

你可以。如果您将形状重塑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.

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章