作者liuzijan (未来加油)
看板MATLAB
标题Re: [问题] 产生N个编号矩阵 & 回圈写入矩阵元素
时间Sat Apr 6 11:34:52 2013
感谢板友的提示,目前可以使用 eval 和 num2str 语法,
产生 A1, A2,... Am 矩阵,并将矩阵元素写入这些矩阵中。
但目前又遇到另一个问题:
要如何将 A1, A2,... Am 放入大矩阵的对角线 or 垂直排列?
也就是要执行 A=blkdiag(A1, A2,... Am) 或 A=[A1; A2;... Am] 时,
当 m 数值很大,Ai矩阵数目很多,难以逐一输入,要如何执行此步骤?
再次感谢!
※ 引述《liuzijan (未来加油)》之铭言:
: 新手遇到一些瓶颈,请求高手指点 orz
: 我想要在 Matlab 中写入这样的矩阵:
: A为 mn x mn 矩阵:
: A1 0 ... 0
: 0 A2 ... 0
: A = . . . .
: . . . .
: . . . .
: 0 0 ... Am
: 其中 Ai (i=1:1:m) 为 n x n 矩阵
: 而 Ai内的元素:
: 如果 i=j=1 时, 则 Ai(i,j)=1/a+1/R(i,1)+1/b ps. R(i,1)为另一矩阵中的元素
: 如果 i=j=2:1:n 时, 则 Ai(i,j)=1/R(i,1)+2/b
: 如果 i=j+1 或 i=j-1 时, 则 Ai(i,j)=-1/b
: 如果 i=j=n 时, Ai(n,n)=1/c+1/R(i,1)+1/b
: 其它元素则为 0
: 问题:
: 1. 如何产生 m 个 Ai 矩阵, 并将这些矩阵编号为 A1, A2,... Am
: 2. 如何以回圈方式将 Ai 内的元素写入?
: 例如,写 Ai 中其中一个元素时,我目前只会这种写法:
: for i=1:1:m
: for j=1:1:n
: if abs(i-j)==1
: A1(i,j)=-1./b;
: A2(i,j)=-1./b;
: A3(i,j)=-1./b;
: A4(i,j)=-1./b;
: .
: .
: end
: end
: end
: 其中 A1, A2,... Am 要如何跑回圈呢?
: 感谢各位!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 108.74.163.35
1F:→ u941716:sparse can help you. 04/06 12:07