Matlab 对双精度矩阵中每行的特定列求和

Matlab 对双精度矩阵中每行的特定列求和,matlab,for-loop,matrix,nested-forms,Matlab,For Loop,Matrix,Nested Forms,我想使用for循环对矩阵中每行的特定列求和。下面是我的问题的简化版本。到目前为止,我正在单独计算列和,但这并不有效,因为我的实际问题有多个矩阵(数据集) 我想知道如何创建一个for循环,该循环自动循环并对我拥有的每个矩阵的每一行的特定列求和 多谢各位 这里有一个解决方案,您不需要对循环使用 假设您有一个大小为2x12的矩阵a,并且您希望每4列对行进行求和,那么您可以使用重塑()和挤压()获得最终结果: k = 4; a = [1:12 13:24]; % a = % 1 2

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

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


多谢各位

这里有一个解决方案,您不需要对循环使用

假设您有一个大小为2x12的矩阵
a
,并且您希望每
4列对行进行求和,那么您可以使用
重塑()
挤压()
获得最终结果:

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

这里有一个解决方案,您不需要为
循环使用

假设您有一个大小为2x12的矩阵
a
,并且您希望每
4列对行进行求和,那么您可以使用
重塑()
挤压()
获得最终结果:

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

sum(a(:,1:3),2)
等。使用
sum
的第二个输入指示要求和的维度?嗨@David,我忘了提到我的矩阵是双格式的,所以您指示的代码没有给我正确的答案。你知道怎么做吗?谢谢。我不明白,在你的问题代码中,
a
b
都是双精度向量。你好@David,我的错。我想说的是,假设我生成一个随机矩阵,然后我用它求和(g(:,1:50),37)
,结果会是37 x 50矩阵。我想要的是一个37 x 1的矩阵,即每一行代表矩阵中每一行1:50列的总和。如何定义应求和的列组?目前,它们的索引是硬编码的。您是否有定义组的变量?
sum(a(:,1:3),2)
等。使用
sum
的第二个输入指示要求和的维度?嗨@David,我忘了提到我的矩阵是双格式的,所以您指示的代码没有给我正确的答案。你知道怎么做吗?谢谢。我不明白,在你的问题代码中,
a
b
都是双精度向量。你好@David,我的错。我想说的是,假设我生成一个随机矩阵,然后我用它求和(g(:,1:50),37)
,结果会是37 x 50矩阵。我想要的是一个37 x 1的矩阵,即每一行代表矩阵中每一行1:50列的总和。如何定义应求和的列组?目前,它们的索引是硬编码的。您有定义组的变量吗?@ChelseaG。好的,我知道了,你有大小不等的块来切割矩阵。你对切片有什么规定吗?在知道编辑我的答案会更容易之后,感谢@thomasscoding的帮助。你展示的正是我真正想要的。我刚刚注意到我的错误,专栏数量参差不齐,我将更正上面最初发布的问题。很抱歉造成这么多混乱。@Kendo96太好了@Kendo96还有,我看到您还需要所有列的行和。我想你知道怎么做,也就是说,
sum(a,2)
,所以我没有把它放在我的代码中。如果你认为我的答案解决了你的问题,并且你对此感到满意,那么请点击投票下方的勾号接受,那么你的帖子将在so中被视为“已回答”。谢谢@谢尔希。好的,我知道了,你有大小不等的块来切割矩阵。你对切片有什么规定吗?在知道编辑我的答案会更容易之后,感谢@thomasscoding的帮助。你展示的正是我真正想要的。我刚刚注意到我的错误,专栏数量参差不齐,我将更正上面最初发布的问题。很抱歉造成这么多混乱。@Kendo96太好了@Kendo96还有,我看到您还需要所有列的行和。我想你知道怎么做,也就是说,
sum(a,2)
,所以我没有把它放在我的代码中。如果你认为我的答案解决了你的问题,并且你对此感到满意,那么请点击投票下方的勾号接受,那么你的帖子将在so中被视为“已回答”。谢谢