Re: [問題] 對稱矩陣有只需輸入半邊的指令嗎?! 선…已回收

看板MATLAB作者 (小太保)時間15年前 (2009/05/26 23:24), 編輯推噓0(002)
留言2則, 1人參與, 最新討論串1/1
※ 引述《ISAMH (○PONY○)》之銘言: : 請問一下如果我有一個對稱矩陣,例如: : [ a b c ; : b e f ; : c f g ] : 有沒有一個指令可以讓我只輸入半邊就好 : 如: : 指令 [ a b c ; : . e f ; : . . . ] : 就是我只需輸入其中的一半 : 而就可以跑出整個完整的對稱矩陣 : 請問各位大大有這種指令嗎 : 感謝解惑!! 如果看不懂 squareform 函數, 可以自己寫簡易的 sqform function omat = sqform(omat,chk) n=size(omat,1); if chk > 1 omat = omat'; end for i=1:n omat(i+1:n,i) = omat(i,i+1:n)'; end if chk > 1 omat = omat'; end end >> x=[1 2 3;0 1 2;0 0 1] x = 1 2 3 0 1 2 0 0 1 >> x=sqform(x,1) x = 1 2 3 2 1 2 3 2 1 上面的東西就是如果你今天要做的是把左半邊的東西 cp 到右半邊, 那就先對 omat 做轉置, 這樣題目就變成把右半邊的東西 cp 到左半 邊(跟 chk=1 時一樣). 等轉完後再判斷一次 chk, 如果 chk 不等於 1, 就再把 omat 轉置 一次就符合題目原先的要求了. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.170.141.203

05/26 23:26, , 1F
剛看了一下 squareform, 應該不難理解..這函數好像有使用
05/26 23:26, 1F

05/26 23:26, , 2F
限制, 自寫的 squareform 可以比較彈性喔~(但運算應該較慢
05/26 23:26, 2F
文章代碼(AID): #1A70cT9i (MATLAB)