[討論] 關於取出矩陣index

作者: hhhtsai (ptt bye~)   2014-09-14 13:05:18
各位版友午安 :)
小弟碰到一個關於在Matlab取出矩陣元素的index情況, 目前只想到用double for loop做
無奈速度實在太慢, 所以來問看看有沒有妙招
問題大致如下:
今有一矩陣A,
[ a11 a12 a13 ]
A=[ a21 a22 a23 ], 寫成A=[a_ij]
[ a31 a32 a33 ]
打算產生一個新的矩陣B如下,
[ 0 -1*a12 -2*a13 ]
B=(i-j)*aij=[ 1*a21 0 -1*a23 ]
^^^^^ [ 2*a31 1*a32 0 ]
除了觀察對稱性可以稍稍簡化double for loop計算之外, 還有建議的更快的方法嗎?
特別是如果能避免double for loop的話
感激不盡 <(_ _)>
作者: profyang (prof)   2014-09-14 13:30:00
c=0:n-1; r=0:-1:n-1; B=toeplitz(c,r).*A;r=0:-1:-n+1;
作者: sunev (Veritas)   2014-09-14 18:44:00
bsxfun(@minus,(1:n)',1:n)).*A
作者: hhhtsai (ptt bye~)   2014-09-15 03:35:00
感謝樓上二位的建議m(_ _)m
作者: profyang (prof)   2014-09-15 16:01:00
實測之下4F的方法比較快!! 建議你用他的方法

Links booklink

Contact Us: admin [ a t ] ucptt.com