Re: [討論] 請教一段程式寫法

看板MATLAB作者 (巫師c的小弟)時間13年前 (2012/07/05 17:33), 編輯推噓2(202)
留言4則, 3人參與, 最新討論串3/4 (看更多)
※ 引述《jeffppp (煩..)》之銘言: : a1=[1 2 3 4 . . .]; : a2=[5 2 5 1 . . .]; : a3=[4 5 2 1 . . .]; : . : . : a9=[1 4 5 8 . . .]; : a = [a1;a2 ... ; a9]; : B = zeros(size(a1)); : for i=1:n : B(i)=det(reshape(a(:,i),3,3)); : end : (如果你連這個for 都不想要,那可能還要再另請高人 XD) : ※ 引述《math99 (新世界)》之銘言: : : 假設我有 9 個 n by 1 行向量 和 1 個存值的 n by 1 行向量 : : 然後我想要做的是,把這 9 個 行向量的 i 個元素 : : 抓出來,組合 成 3 by 3 矩陣(有固定順序),然後算 行列式 : : 算出來的值再放入存值的行向量第 i 個元素裡面 : : ---- : : 請問高手,這樣有向量式的寫法嗎? : : 用迴圈跑實在太久了 : : 謝謝 如果完全不想用迴圈的話可以從3*3的矩陣det公式下手 ex: B(i)=det([a1 a2 a3; a4 a5 a6; a7 a8 a9]) => B(i) = a1*a5*a9 + a2*a6+a7 + a3*a4*a8 -a3*a5*a7 - a6*a8*a1 - a9*a2*a4 這樣就可以透過向量運算直接算出來 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.27.148

07/05 17:40, , 1F
對齁 記得加 .
07/05 17:40, 1F

07/05 19:22, , 2F
再快一點的話可以共用乘法器, 例如 a1*a5*a9 - a6*a8*a1
07/05 19:22, 2F

07/05 19:22, , 3F
= a1*(a5*a9 - a6*a8)
07/05 19:22, 3F

07/05 21:06, , 4F
謝謝 我試試看
07/05 21:06, 4F
文章代碼(AID): #1FzLzHVa (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1FzLzHVa (MATLAB)