作者KingSteven (HHung)
看板MATLAB
标题[问题] summation
时间Fri Jan 3 11:06:37 2014
假设我有一个vector [1 2 3 4 5 6 7 8 9] (实际上数字没有大小顺序或规则)
我想要三个三个加在一起
变成[6 15 24]
我目前只想到用回圈
可是感觉可以有更聪明更快的方法(看能不能用sum之类的)
想请较大家
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.109.135.192
1F:推 kurt28:sum(reshape(vector,[],3)) 01/03 11:11
2F:→ KingSteven:其实我是要加总三维的vector,复杂很多. 01/03 11:20
3F:→ KingSteven:不过sum(reshape(......))这概念不错,感觉可行 01/03 11:20
4F:推 kurt28:我刚刚是想说用成cell 再用cellfun去运作@@ 01/03 11:21
5F:→ kurt28:不过好像有点多此一举 如果维度确定的话 用sum(..,dim)也ok 01/03 11:22
6F:→ KingSteven:我是要加总一个维度(120,160,92)的东西,希望用(4,4,4) 01/03 12:18
7F:→ KingSteven:的cube做加总,所以我reshape成(4,30,4,40,4,23) 01/03 12:19
8F:→ KingSteven:然後再sum(sum(sum(...,1),3),5).这样应该没错吧?! 01/03 12:20
9F:推 kurt28:这应该可以再化简 我会从维度那边去下手 01/03 12:30
10F:推 YoursEver:h = ones(4,4,4); convn( data, h, 'same'); 01/08 12:46
11F:→ YoursEver:h = ones(4,4,4); temp = convn( data, h, 'same'); 01/08 12:47
12F:→ YoursEver:result = temp(2:4:end, 2:4:end, 2:4:end); 01/08 12:47
13F:→ YoursEver:边界的位置要留意一下...上一行的写法边界会有问题. 01/08 12:51
14F:→ YoursEver:说错,不是边界位置,是起始位置要确认一下. 01/08 14:57
15F:→ KingSteven:大概懂楼上的意思,用convolution的概念 01/08 15:11
16F:→ KingSteven:不过目前用sum(reshape(...))最简洁,只有两行 01/08 15:12