首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在matlab中由对角线重构矩阵

在matlab中由对角线重构矩阵
EN

Stack Overflow用户
提问于 2010-11-29 12:08:34
回答 1查看 730关注 0票数 4

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

例如,给定

代码语言:javascript
复制
x = [1 2 3 4 5 6 7 8 9]

有没有什么简单的方法可以把它重建成下面的样子?

代码语言:javascript
复制
1 2 4
3 5 7
6 8 9

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

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-29 12:15:26

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

代码语言:javascript
复制
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
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4300793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档