[問題] 矩陣改成band-diagonal已回收

看板MATLAB作者 (remember the fate)時間15年前 (2011/04/01 01:20), 編輯推噓4(407)
留言11則, 4人參與, 最新討論串1/1
把一個4*4的任意矩陣 轉成band-diagonal的形式 也就是[ 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 ] 我的作法是在command裡面 if i==j a(i,j)=1; elseif i-j==-1 a(i,j)=1; else a(i,j)=0; end ; 不曉得為什麼都無法順利轉換原來的矩陣 請問一下,哪個步驟做錯了?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.119.144.53

04/01 09:23, , 1F
你少了for迴圈=,=?
04/01 09:23, 1F

04/01 09:25, , 2F
直接宣告一個eye然後再填i-j=-1的位置為1會不會更快呢?
04/01 09:25, 2F

04/02 00:38, , 3F
a(i,i+1)=1
04/02 00:38, 3F

04/04 10:33, , 4F
a(i,i+1)=1在最後一個會讓矩陣爆掉吧...
04/04 10:33, 4F

04/04 10:34, , 5F
不知道有沒有什麼好方法或指令可以直接做說
04/04 10:34, 5F

04/04 17:11, , 6F
加個if就break出來好啦:P 可以先抓n = length(矩陣)
04/04 17:11, 6F

04/04 17:13, , 7F
剛想到還可以a(1)=1,for i=2:n a(i^2)及a(i^2-1) = 1
04/04 17:13, 7F

04/04 17:14, , 8F
啊上面這個是錯的,我想錯了XD
04/04 17:14, 8F

04/05 10:58, , 9F
eye(4,4) + [zeros(4,1) eye(4,3)]
04/05 10:58, 9F

04/05 14:45, , 10F
to bob可以先抓矩陣大小再減1就好了 這樣只需要跑一
04/05 14:45, 10F

04/05 14:45, , 11F
個迴圈 用i j的話 就要跑兩個迴圈了
04/05 14:45, 11F
文章代碼(AID): #1DbBV8-g (MATLAB)
文章代碼(AID): #1DbBV8-g (MATLAB)