[討論] 請幫看代碼可有機會簡化或加速?

看板MATLAB作者 (絕倒~ 公園阿伯~)時間11年前 (2014/06/25 18:06), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串1/1
代碼在最下面 內容不複雜但卻帶兩個迴圈 想問的問題是 對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://www.ptt.cc/bbs/MATLAB/M.1403690785.A.76D.html

06/25 18:30, , 1F
s=accumarray(a(:,1),a(:,2))
06/25 18:30, 1F

06/25 21:13, , 2F
真的太夭壽了 我說 thx!
06/25 21:13, 2F
文章代碼(AID): #1JgfyXTj (MATLAB)
文章代碼(AID): #1JgfyXTj (MATLAB)