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

我试图做一个循环,将创建适当大小的矩阵。我需要由指定数量的元素构成的矩阵,这些元素是从另一个矩阵中提取并加在一起的。

这是一些伪代码:

' n=10 for x=1:1:n Kglobal=zeros(nxn) Kglobal(1,1)=1 Kglobal(x+1,x+1)=Klocalx(2,1) Kglobal(x+1,x+2)=Klocalx(2,2)+Klocalx+1(1,1)' if Kglobal(x+1,x+2)=(n+1,n) Kglobal(n,n)=Klocaln(2,2) end end 完成后会导致类似:

' Kglobal=[ 1 0 0 0 0 0 0 0 0 0 0; Klocal1(2,1) Klocal1(2,2)+Klocal2(1,1) 0 0 0 0 0 0 0 0 0; 0 Klocal2(2,1) Klocal2(2,2)+Klocal3(1,1) 0 0 0 0 0 0 0 0; 0 0 Klocal3(2,1) Klocal3(2,2)+Klocal4(1,1) 0 0 0 0 0 0 0; 0 0 0 Klocal4(2,1) Klocal4(2,2)+Klocal5(1,1) 0 0 0 0 0 0; 0 0 0 0 Klocal5(2,1) Klocal5(2,2)+Klocal6(1,1) 0 0 0 0 0; 0 0 0 0 0 Klocal6(2,1) Klocal6(2,2)+Klocal7(1,1) 0 0 0 0; 0 0 0 0 0 0 Klocal7(2,1) Klocal7(2,2)+Klocal8(1,1) 0 0 0; 0 0 0 0 0 0 0 Klocal8(2,1) Klocal8(2,2)+Klocal9(1,1) 0 0; 0 0 0 0 0 0 0 0 Klocal9(2,1) Klocal9(2,2)+Klocal10(1,1) 0; 0 0 0 0 0 0 0 0 0 Klocal10(2,1) Klocal10(2,2)]; ' 谢谢!!感谢您的帮助,我们会经常检查,如果有什么我可以尝试更好地解释的,请告诉我!



回答:

使用spdiags函数创建这样的矩阵非常简单。例如,

a=1:5; b=6:10; c=spdiags([a',b'],[-1,0],5,5); 创建一个看起来像这样的稀疏矩阵

6 0 0 0 0 1 7 0 0 0 0 2 8 0 0 0 0 3 9 0 0 0 0 4 10 除了只为非零元素分配内存外。这应该回答您有关如何创建这种矩阵的问题。

但是,问题是,如何获得a和b ,在您的情况下是一堆Klocal矩阵。至于您在代码中正在做什么,目前还不是很清楚。我猜想它们可以作为一些紧凑的矩阵/单元运算来完成,但是无法进一步说明。

无论如何,假设您已经有了Klocal矩阵,这足以让您入门。



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

主题工具
显示模式

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

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



所有时间均为北京时间。现在的时间是 03:24


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