看板 MATLAB 關於我們 聯絡資訊
假設我有一個vector [1 2 3 4 5 6 7 8 9] (實際上數字沒有大小順序或規則) 我想要三個三個加在一起 變成[6 15 24] 我目前只想到用迴圈 可是感覺可以有更聰明更快的方法(看能不能用sum之類的) 想請較大家 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.109.135.192
kurt28:sum(reshape(vector,[],3)) 01/03 11:11
KingSteven:其實我是要加總三維的vector,複雜很多. 01/03 11:20
KingSteven:不過sum(reshape(......))這概念不錯,感覺可行 01/03 11:20
kurt28:我剛剛是想說用成cell 再用cellfun去運作@@ 01/03 11:21
kurt28:不過好像有點多此一舉 如果維度確定的話 用sum(..,dim)也ok 01/03 11:22
KingSteven:我是要加總一個維度(120,160,92)的東西,希望用(4,4,4) 01/03 12:18
KingSteven:的cube做加總,所以我reshape成(4,30,4,40,4,23) 01/03 12:19
KingSteven:然後再sum(sum(sum(...,1),3),5).這樣應該沒錯吧?! 01/03 12:20
kurt28:這應該可以再化簡 我會從維度那邊去下手 01/03 12:30
YoursEver:h = ones(4,4,4); convn( data, h, 'same'); 01/08 12:46
YoursEver:h = ones(4,4,4); temp = convn( data, h, 'same'); 01/08 12:47
YoursEver:result = temp(2:4:end, 2:4:end, 2:4:end); 01/08 12:47
YoursEver:邊界的位置要留意一下...上一行的寫法邊界會有問題. 01/08 12:51
YoursEver:說錯,不是邊界位置,是起始位置要確認一下. 01/08 14:57
KingSteven:大概懂樓上的意思,用convolution的概念 01/08 15:11
KingSteven:不過目前用sum(reshape(...))最簡潔,只有兩行 01/08 15:12