gpt4 book ai didi

matlab - 在Matlab中总结每第n行

转载 作者:太空宇宙 更新时间:2023-11-03 19:48:27 25 4
gpt4 key购买 nike

在 Matlab 中是否有任何简单的方法来总结每第 n 行?假设我有:

A =

1 2 3
4 5 6
7 8 9
10 11 12
13 14 15
16 17 18

我希望每 2 行添加一次,如下所示:row1+row3+row5,然后是 row2+row4+row6,所以我的输出是:

B =

21 24 27
30 33 36

我知道可以通过 sum(A(1:2:end,:)) 来完成,但是如果你有大矩阵和许多第 n 行,这就没有帮助了,for 循环是另一种选择,但到目前为止我无法让它工作。对于如何使用 for 循环解决此问题,您有任何建议/解决方案吗?或者可能有一个内置函数?

最佳答案

那怎么样?

B = cell2mat(arrayfun(@(x) sum(A(x:n:end,:)),1:n,'uni',0)')

我首先考虑使用 accumarray 但它需要一个向量作为输入。还是有可能的,如果你关注this answer .

另一个 accumarray 替代方案:

[a,b] = size(A);
idx = bsxfun(@plus, 1:b,repmat([0:b:b*n-1]',a/n,1))
B = reshape(accumarray(idx(:),A(:)),b,[]).'

关于matlab - 在Matlab中总结每第n行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23776307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com