[問題] summation

看板MATLAB作者 (HHung)時間11年前 (2014/01/03 11:06), 編輯推噓4(4012)
留言16則, 3人參與, 最新討論串1/1
假設我有一個vector [1 2 3 4 5 6 7 8 9] (實際上數字沒有大小順序或規則) 我想要三個三個加在一起 變成[6 15 24] 我目前只想到用迴圈 可是感覺可以有更聰明更快的方法(看能不能用sum之類的) 想請較大家 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.109.135.192

01/03 11:11, , 1F
sum(reshape(vector,[],3))
01/03 11:11, 1F

01/03 11:20, , 2F
其實我是要加總三維的vector,複雜很多.
01/03 11:20, 2F

01/03 11:20, , 3F
不過sum(reshape(......))這概念不錯,感覺可行
01/03 11:20, 3F

01/03 11:21, , 4F
我剛剛是想說用成cell 再用cellfun去運作@@
01/03 11:21, 4F

01/03 11:22, , 5F
不過好像有點多此一舉 如果維度確定的話 用sum(..,dim)也ok
01/03 11:22, 5F

01/03 12:18, , 6F
我是要加總一個維度(120,160,92)的東西,希望用(4,4,4)
01/03 12:18, 6F

01/03 12:19, , 7F
的cube做加總,所以我reshape成(4,30,4,40,4,23)
01/03 12:19, 7F

01/03 12:20, , 8F
然後再sum(sum(sum(...,1),3),5).這樣應該沒錯吧?!
01/03 12:20, 8F

01/03 12:30, , 9F
這應該可以再化簡 我會從維度那邊去下手
01/03 12:30, 9F

01/08 12:46, , 10F
h = ones(4,4,4); convn( data, h, 'same');
01/08 12:46, 10F

01/08 12:47, , 11F
h = ones(4,4,4); temp = convn( data, h, 'same');
01/08 12:47, 11F

01/08 12:47, , 12F
result = temp(2:4:end, 2:4:end, 2:4:end);
01/08 12:47, 12F

01/08 12:51, , 13F
邊界的位置要留意一下...上一行的寫法邊界會有問題.
01/08 12:51, 13F

01/08 14:57, , 14F
說錯,不是邊界位置,是起始位置要確認一下.
01/08 14:57, 14F

01/08 15:11, , 15F
大概懂樓上的意思,用convolution的概念
01/08 15:11, 15F

01/08 15:12, , 16F
不過目前用sum(reshape(...))最簡潔,只有兩行
01/08 15:12, 16F
文章代碼(AID): #1InYb0er (MATLAB)
文章代碼(AID): #1InYb0er (MATLAB)