Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
 
 
主题工具 显示模式
旧 2019-12-10, 20:48   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 在Matlab中从对角线重建矩阵

给定矩阵中矩阵反对角的向量,是否有一种简单的方法来重构矩阵?

例如,给定

x = [1 2 3 4 5 6 7 8 9] 有什么简单的方法可以将其重构为以下内容?

1 2 4 3 5 7 6 8 9 由于已知原始块的尺寸,因此使此过程稍微容易一些。重建原始矩阵的旋转或转置很好,因为旋转和转置很容易撤消。越快越好,此计算必须在许多x s上完成。

谢谢!



回答:

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

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

更多&回答...
poster 当前离线   回复时引用此帖
 


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 01:15


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.