将双精度矩阵中每一行的特定列相加
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
我想使用 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