看板 MATLAB 關於我們 聯絡資訊
怎麼樣把同一矩陣第一列的相同數值的找出來 然後對應的第二列相加平均阿 同一矩陣 兩列 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,:)) 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.14.49.216 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1505708339.A.B95.html
LiamIssac: idx = find(x(1,:) == a); 09/18 13:06
LiamIssac: y = mean(x(2, idx)) 09/18 13:07
sppmg: 假設重複只有一個且未知: 09/18 13:19
sppmg: [cc,ii]=sort(x(1,:)) 09/18 13:19
sppmg: idx=find(! diff([cc(1),cc])) 09/18 13:20
sppmg: idx=ii(find(! diff([cc(1),cc]))) % 上面請改這個比較好 09/18 13:22
sppmg: x(2,idx) = mean( x(2,idx) ) 09/18 13:23
感謝 如果假設不只一個 因為是一筆2萬行矩陣 第一行差不多有五六百多個會重複 請問怎麼改會比較好 ※ 編輯: ismyname (101.14.49.216), 09/18/2017 13:45:54
sunev: 用內建的accumarray或histcounts都可以 09/18 14:18
sunev: A=accumarray(x(1,:)',x(2,:)',[],@mean);AA=find(A); 09/18 14:23
sunev: [AA A(AA)]' 09/18 14:23
sunev: histcounts好像不太行,那用accumarray就好了 09/18 14:31
感謝 accumarray可以執行 ※ 編輯: ismyname (101.15.241.126), 09/20/2017 13:48:39