有没有办法在 Octave 中成对求和,向量化(即映射和减少矩阵)?
Is there a way to sum pairwise in Octave, vectorized (ie. mapping and reducing matrices)?
有没有办法在 Octave 中进行成对求和?
如果我有一个 10 行 4 列的例子。我想要一个新的 10 行 2 列,其中每列都是对的总和。
例如
[ 1 2 3 4
2 3 4 5
...
]
=> [ 3 7
5 9
...
]
我知道如何使用 for 循环和 accumarray 等来完成此操作,但我不确定是否有完全矢量化的方法来完成此操作。
也许有人有更好的主意:
a = [1 2 3 4; 2 3 4 5]
b = reshape (sum (reshape (a.', 2, [])), [], rows(a)).'
给予
b =
3 7
5 9
这里还有几个选项。
鉴于:
a = reshape(1:40, 10, 4)
a =
1 11 21 31
2 12 22 32
3 13 23 33
4 14 24 34
5 15 25 35
6 16 26 36
7 17 27 37
8 18 28 38
9 19 29 39
10 20 30 40
保持简单
b = [sum(a(:,1:2),2) sum(a(:,3:4),2)]
b =
12 52
14 54
16 56
18 58
20 60
22 62
24 64
26 66
28 68
30 70
挤一点
b = squeeze(sum(reshape(a, [], 2, 2), 2))
b =
12 52
14 54
16 56
18 58
20 60
22 62
24 64
26 66
28 68
30 70
或者,我个人最喜欢的...
数学魔法
b = a * [1 1 0 0; 0 0 1 1].'
b =
12 52
14 54
16 56
18 58
20 60
22 62
24 64
26 66
28 68
30 70
有没有办法在 Octave 中进行成对求和?
如果我有一个 10 行 4 列的例子。我想要一个新的 10 行 2 列,其中每列都是对的总和。
例如
[ 1 2 3 4
2 3 4 5
...
]
=> [ 3 7
5 9
...
]
我知道如何使用 for 循环和 accumarray 等来完成此操作,但我不确定是否有完全矢量化的方法来完成此操作。
也许有人有更好的主意:
a = [1 2 3 4; 2 3 4 5]
b = reshape (sum (reshape (a.', 2, [])), [], rows(a)).'
给予
b =
3 7
5 9
这里还有几个选项。
鉴于:
a = reshape(1:40, 10, 4)
a =
1 11 21 31
2 12 22 32
3 13 23 33
4 14 24 34
5 15 25 35
6 16 26 36
7 17 27 37
8 18 28 38
9 19 29 39
10 20 30 40
保持简单
b = [sum(a(:,1:2),2) sum(a(:,3:4),2)]
b =
12 52
14 54
16 56
18 58
20 60
22 62
24 64
26 66
28 68
30 70
挤一点
b = squeeze(sum(reshape(a, [], 2, 2), 2))
b =
12 52
14 54
16 56
18 58
20 60
22 62
24 64
26 66
28 68
30 70
或者,我个人最喜欢的...
数学魔法
b = a * [1 1 0 0; 0 0 1 1].'
b =
12 52
14 54
16 56
18 58
20 60
22 62
24 64
26 66
28 68
30 70