将双精度矩阵中每一行的特定列相加

Summing specific columns for each row in a matrix of double

我想使用 for 循环对矩阵中每一行的特定列求和。下面我包含了我的问题的简化版本。截至目前,我正在单独计算列总和,但这并不有效,因为我的实际问题有多个矩阵(数据集)。

a = [1 2 3 4 5 6; 4 5 6 7 8 9];
b = [2 2 3 4 4 6; 3 3 3 4 5 5];
% Repeat the 3 lines of code below for row 2 of matrix a
% Repeat the entire process for matrix b
c = sum(a(1,1:3));                   % Sum columns 1:3 of row 1
d = sum(a(1,4:6));                   % Sum columns 4:6 of row 1
e = sum(a(1,:));                     % Sum all columns of row 1

我想知道如何创建一个 for 循环,自动循环并对我拥有的每个矩阵的每一行的特定列求和。

谢谢。

这是一个不需要使用 for 循环的解决方案。

假设您有一个大小为 2x12 的矩阵 a,并且您想要每隔 4 列进行行求和,那么您可以使用 reshape()squeeze()得到最终结果:

k = 4;
a = [1:12
     13:24];
% a =
%    1    2    3    4    5    6    7    8    9   10   11   12
%   13   14   15   16   17   18   19   20   21   22   23   24

s = squeeze(sum(reshape(a,size(a,1),k,[]),2));

你会得到

s =

   10   26   42
   58   74   90