[問題] 重複數值相加的問題已回收

看板MATLAB作者 ( 小摩)時間17年前 (2008/11/03 23:18), 編輯推噓3(3010)
留言13則, 3人參與, 最新討論串1/1
小弟有一個問題想請教版上的前輩 有關將重複的數值加起來的問題 例如現在有A矩陣=[1 1 2 3 4 4 5 6 6]; B矩陣=[1 2 3 4 5 6 7 8 9]; 我有用unique找出有重複的數值及index 可是我想利用A矩陣所找出來的index將B矩陣該index的位置給相加 也就是把B矩陣的1、2相加,5、6相加,以及8、9相加 不知道有什麼方法可以做這樣的動作? 麻煩各位前輩了 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.229.110.149

11/04 00:37, , 1F
如果你的結果要為1x6的向量,可以用 B*sparse(B,A,1,9,6)
11/04 00:37, 1F

11/04 00:38, , 2F
9 是 size(B,2); 6 是 max(A)
11/04 00:38, 2F

11/04 08:35, , 3F
感謝高手解答困擾很久的疑惑!
11/04 08:35, 3F

11/04 10:50, , 4F
想再請問一下~那如果B矩陣是非整數的矩陣需要怎麼改呢?
11/04 10:50, 4F

11/04 10:54, , 5F
B為1*3似乎較合理 因為合併了
11/04 10:54, 5F

11/04 13:02, , 6F
哈,我沒考慮到只留下重覆的部份, 若要 B 為 1x3 向量的話
11/04 13:02, 6F

11/04 13:03, , 7F
C=sparse(B,A,1,9,6); C(:,find(sum(C)<=1))=[]; D=B*C;
11/04 13:03, 7F

11/04 13:04, , 8F
回NHKKK, 非整數的矩陣沒辦法用 sparse() 偷吃步
11/04 13:04, 8F

11/04 13:04, , 9F
我試著找合適的function, 但我還沒找到 :(
11/04 13:04, 9F

11/04 13:37, , 10F
C=sparse(1:9,A,1,9,6); C(:,find(sum(C)<=1))=[]; D=B*C;
11/04 13:37, 10F

11/04 13:39, , 11F
原來這麼容易,把原本sparse裡的B換成線性的index就可以解決
11/04 13:39, 11F

11/04 13:39, , 12F
B為非整數的情況
11/04 13:39, 12F

11/04 23:07, , 13F
感謝高手b大,我會試試看的! 感激
11/04 23:07, 13F
文章代碼(AID): #193nOwv4 (MATLAB)
文章代碼(AID): #193nOwv4 (MATLAB)