声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2891|回复: 7

[编程技巧] 块对角矩阵

[复制链接]
发表于 2008-12-18 10:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
想请教个问题。
块对角矩阵的形成,可以用blkdiag,这个函数生成的块对角矩阵是没有重叠的,现在我要生成一个有重叠的块对角矩阵。做个举例以说明问题。A为30×30的矩阵,现在要生成50×50的矩阵B,B为带状矩阵,B(1:20,1:20)=A(1:20,1:20),B(31:50,31:50)=A(31:50,31:50),而B(21:30,21:30)=2×A(21:30,21:30); 即B(21:30,21:30)为重叠的部分。
这样表述问题应该说清楚问题了吧,当然,我遇到的不是仅仅两个A形成,比如任意个A(30×30),重叠部分是10×10,由n个A形成的矩阵就是(2×n+1)×10了。
请高手帮忙解答下。谢谢
回复
分享到:

使用道具 举报

发表于 2008-12-18 15:35 | 显示全部楼层
楼主的意思是这样吗?
A为30×30的矩阵,现在要生成50×50的矩阵B
B(1:20,1:20)=A(1:20,1:20)
B(31:50,31:50)=A(21:30,21:30)
B(21:30,21:30)=A(21:30,21:30)+A(1:10,1:10)
发表于 2008-12-18 19:20 | 显示全部楼层

回复 楼主 skyismine 的帖子

找了下! 好像没现成的函数!?
我想使用loop应该就可以了
发表于 2008-12-18 22:41 | 显示全部楼层

回复 板凳 ChaChing 的帖子

仔细想了一下,楼主的意思和公式表达是不符的。如果使用A(1:20,1:20)和A(21:30,21:30)赋值的话,A(21:30,1:20)和A(1:20,21:30)就被忽略掉了。在没找到合适的函数的情况下,我想下面的循环应该是可用的。

  1. clear;clc
  2. m=30;
  3. mm=10;
  4. n=8;

  5. A=randn(m);
  6. B=zeros((m-mm)*(n-1)+m);
  7. B(1:m,1:m)=A;
  8. for i=1:n-1
  9.     B(i*(m-mm)+1:i*(m-mm)+30,i*(m-mm)+1:i*(m-mm)+30)=A+  B(i*(m-mm)+1:i*(m-mm)+30,i*(m-mm)+1:i*(m-mm)+30);
  10. end
  11. spy(B)
复制代码

[ 本帖最后由 sogooda 于 2008-12-18 22:48 编辑 ]
blk.jpg

评分

1

查看全部评分

发表于 2008-12-19 00:50 | 显示全部楼层

回复 地板 sogooda 的帖子

我的意思同你! 我想楼主可能不小心表达错了! 本来亦想帮忙写, 但有点懒得programing! 没动力?
你起头, 我稍修改下, 我比较习惯喜欢这个样, 参考下!
使用ones好检查程序有无错, 重覆的使用变数容易看, 我想你亦应该如此, 可能太赶忽略!

m=30; mm=10; n=8;
A=ones(m); B=zeros((m-mm)*(n-1)+m); B(1:m,1:m)=A;
for i=1:n-1
   pp=i*(m-mm)+1:i*(m-mm)+30; B(pp,pp)=A+B(pp,pp);
end
spy(B)

[ 本帖最后由 ChaChing 于 2008-12-19 01:12 编辑 ]
发表于 2008-12-19 01:13 | 显示全部楼层

回复 楼主 skyismine 的帖子

为何有此需求? 方便分享?
 楼主| 发表于 2008-12-19 12:00 | 显示全部楼层
感谢各位的热情解答,我后来也编出来了,我的初衷是想避开循环,通过矩阵的移动等操作实现,因为循环会影响速度。还是要感谢各位。:@)
发表于 2008-12-19 21:13 | 显示全部楼层

回复 7楼 skyismine 的帖子

方法可否分享一下?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-2 18:39 , Processed in 0.073068 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表