Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
我试图做一个循环,将创建适当大小的矩阵。我需要由指定数量的元素构成的矩阵,这些元素是从另一个矩阵中提取并加在一起的。
这是一些伪代码: ' 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矩阵,这足以让您入门。 更多&回答... |
![]() |
![]() |