首页 > 解决方案 > 对双精度矩阵中每一行的特定列求和

问题描述

我想使用 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 循环,该循环自动循环并为我拥有的每个矩阵的每一行的特定列求和。

谢谢你。

标签: matlabfor-loopmatrixnested-forms

解决方案


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

假设您有一个asize矩阵2x12,并且您想要对每一4列进行行求和,那么您可以使用reshape()andsqueeze()来获得最终结果:

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

推荐阅读