[討論] 第一列相同數值對應的第二列相加平均

作者: ismyname (窩)   2017-09-18 12:18:57
怎麼樣把同一矩陣第一列的相同數值的找出來
然後對應的第二列相加平均阿
同一矩陣 兩列
x= 1 1 10 5 17 1 18 2
4 3 2 1 8 8 4 5
怎麼把 第一列相同 這個例子裡是1提出
對應1的第二列 這個例子裡分別是 4 3 8 三個數相加平均阿(平均出來為5)
變成x= 1 2 5 10 17 18
5 5 1 2 8 4
x=[1,1,10,5,17,1,18,2];
x=[x; 4 3 2 1 8 8 4 5];
x=sortrows(x',[1 2])'
x(1,:)
x(2,:)
figure
plot(x(1,:),x(2,:))
感謝
作者: LiamIssac (Madchester)   2017-09-18 13:06:00
idx = find(x(1,:) == a);y = mean(x(2, idx))
作者: sppmg (sppmg)   2017-09-18 13:19:00
假設重複只有一個且未知:[cc,ii]=sort(x(1,:))idx=find(! diff([cc(1),cc]))idx=ii(find(! diff([cc(1),cc]))) % 上面請改這個比較好x(2,idx) = mean( x(2,idx) )
作者: sunev (Veritas)   2017-09-18 14:18:00
用內建的accumarray或histcounts都可以A=accumarray(x(1,:)',x(2,:)',[],@mean);AA=find(A);[AA A(AA)]'histcounts好像不太行,那用accumarray就好了

Links booklink

Contact Us: admin [ a t ] ucptt.com