[討論] 關於取出矩陣index

看板MATLAB作者 (ptt bye~)時間11年前 (2014/09/14 13:05), 編輯推噓5(501)
留言6則, 3人參與, 最新討論串1/1
各位版友午安 :) 小弟碰到一個關於在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的話 感激不盡 <(_ _)> -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 128.173.38.185 ※ 文章網址: http://www.ptt.cc/bbs/MATLAB/M.1410671120.A.914.html

09/14 13:30, , 1F
c=0:n-1; r=0:-1:n-1; B=toeplitz(c,r).*A;
09/14 13:30, 1F

09/14 13:32, , 2F
r=0:-1:-n+1;
09/14 13:32, 2F

09/14 16:58, , 3F
啊我蠢了 r=-c;
09/14 16:58, 3F

09/14 18:44, , 4F
bsxfun(@minus,(1:n)',1:n)).*A
09/14 18:44, 4F

09/15 03:35, , 5F
感謝樓上二位的建議m(_ _)m
09/15 03:35, 5F

09/15 16:01, , 6F
實測之下4F的方法比較快!! 建議你用他的方法
09/15 16:01, 6F
文章代碼(AID): #1K5I8GaK (MATLAB)
文章代碼(AID): #1K5I8GaK (MATLAB)