Re: [問題] 對稱矩陣有只需輸入半邊的指令嗎?! 선…已回收
※ 引述《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
05/26 23:26, 1F
→
05/26 23:26, , 2F
05/26 23:26, 2F