gpt4 book ai didi

matlab - 在matlab中从对角线重建矩阵

转载 作者:太空宇宙 更新时间:2023-11-03 20:01:08 24 4
gpt4 key购买 nike

在 matlab 中给定一个矩阵的对角线向量,是否有一种简单的方法来重建矩阵?

例如给定

x = [1 2 3 4 5 6 7 8 9]

是否有任何简单的方法可以将其重构为以下内容?

1 2 4
3 5 7
6 8 9

由于原始 block 的尺寸是已知的,因此这会稍微容易一些。重建原始矩阵的旋转或转置很好,因为旋转和转置很容易撤消。越快越好,这个计算必须在许多 x 上完成。

谢谢!

最佳答案

可以创建对应的Hankel矩阵并将其用于排序(仅在输出为方矩阵时有效!):

x = [1 2 3 4 5 6 7 8 9];

%# find size of output (works only with square arrays)
n=sqrt(length(x));

%# create Hankel matrix
hh = hankel(1:n,n:(2*n-1));

%# sort to get order of elements (conveniently, sort doesn't disturb ties)
[~,sortIdx]=sort(hh(:));

%# reshape and transpose
out = reshape(x(sortIdx),n,n)'; %'# SO formatting

out =
1 2 4
3 5 7
6 8 9

关于matlab - 在matlab中从对角线重建矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4300793/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com