作者hhhtsai (ptt bye~)
看板MATLAB
标题[讨论] 关於取出矩阵index
时间Sun Sep 14 13:05:18 2014
各位版友午安 :)
小弟碰到一个关於在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://webptt.com/cn.aspx?n=bbs/MATLAB/M.1410671120.A.914.html
1F:推 profyang: c=0:n-1; r=0:-1:n-1; B=toeplitz(c,r).*A; 09/14 13:30
2F:推 profyang: r=0:-1:-n+1; 09/14 13:32
3F:推 profyang: 啊我蠢了 r=-c; 09/14 16:58
4F:推 sunev: bsxfun(@minus,(1:n)',1:n)).*A 09/14 18:44
5F:→ hhhtsai: 感谢楼上二位的建议m(_ _)m 09/15 03:35
6F:推 profyang: 实测之下4F的方法比较快!! 建议你用他的方法 09/15 16:01