作者tomichy (绝倒~ 公园阿伯~)
站内MATLAB
标题[讨论] 请帮看代码可有机会简化或加速?
时间Wed Jun 25 18:06:19 2014
代码在最下面 内容不复杂但却带两个回圈
想问的问题是 对a矩阵的特定元素做取和这件事
在矩阵a size变大或另外再加上loop後 时间难免暴增
写法上 有没有办法改成不需 for-end loop
或者减少一个for-end loop的可能性?
谢谢您的回答
=====================================================
clear all;clc;
a=[1,1,2,2,2,3,3,3,3,4,5,5,5,5,5;1,3,4,5,7,3,4,8,9,13,21,31,41,51,67]'
s=zeros(max(unique(a(:,1))),1);
for j=1:max(unique(a(:,1)));
bb=find(a(:,1)==j);
[cc dd]=size(find(a(:,1)==j));
for jj=1:cc;
s(j,1)=s(j,1)+a(bb(jj),2)
end
end
a
s
=====================================================
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 60.250.193.64
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/MATLAB/M.1403690785.A.76D.html
1F:推 sunev:s=accumarray(a(:,1),a(:,2)) 06/25 18:30
2F:→ tomichy:真的太夭寿了 我说 thx! 06/25 21:13