フィルターのクリア

How to sum up row values in a matrix?

2 ビュー (過去 30 日間)
Sayanta
Sayanta 2012 年 9 月 14 日
回答済み: Renda Mohammedjuhar 2019 年 4 月 30 日
Dear All
I have matrix A
A = [ 1 2 3 5;
3 4 5 4;
];
I want to add row values like that using a loop ( without manual input)
A(1,1) + A(1,2) = B1
A(1,3) + A(1,4) = B2
A(2,1) + A(2,2) = B3
A(2,3) + A(2,4) = B4
B= [ B1 B2;
B3 B4
];
How can I do that any tips
Many Thanks in advance
  6 件のコメント
Yuli Hartini
Yuli Hartini 2017 年 1 月 2 日
Help me please
Image Analyst
Image Analyst 2017 年 1 月 2 日
I'm not sure of your rule, but it looks like you might be doing
Values = cumsum(M(:, end))

サインインしてコメントする。

採用された回答

Renda Mohammedjuhar
Renda Mohammedjuhar 2019 年 4 月 30 日
I have a matrix like [1 2 3 4] I want an output [1 3 6 10]

その他の回答 (4 件)

Azzi Abdelmalek
Azzi Abdelmalek 2012 年 9 月 14 日
編集済み: Azzi Abdelmalek 2012 年 9 月 14 日
A = [ 1 2 3 5;3 4 5 4]
res=reshape(sum(reshape(A',1,2,[])),2,2)'
%or
res=A(:,[1 3])+A(:,[2 4])
%or
n=size(A,2)/2
res=[sum(A(1,1:n)) sum(A(1,n+1:end)); sum(A(2,1:n)) sum(A(2,n+1:end))]

Image Analyst
Image Analyst 2012 年 9 月 14 日
編集済み: Image Analyst 2012 年 9 月 14 日
Here's one way:
A = [ 1 2 3 5;
3 4 5 4]
% Get the sliding sum.
a2 = conv2(A, [1 1], 'valid');
% Extract just the first and last column.
output = [a2(:,1) a2(:,3)]

Sayanta
Sayanta 2012 年 9 月 14 日
Hi Image analyst
I have bigger matrix.
A=
0.0018 0.0008 0.0000 0.0000 0.2304 0.7345 0.0159 0.0166
0.0024 0.0016 0.0001 0.0000 0.2161 0.7441 0.0165 0.0192
0.0029 0.0027 0.0002 0.0000 0.2084 0.7475 0.0169 0.0214
0.0034 0.0040 0.0003 0.0000 0.2041 0.7479 0.0172 0.0230
0.0038 0.0055 0.0005 0.0001 0.2016 0.7468 0.0175 0.0243
0.0041 0.0072 0.0007 0.0001 0.1999 0.7450 0.0177 0.0253
0.0044 0.0090 0.0009 0.0001 0.1988 0.7429 0.0178 0.0261
I want to do the operation like your code
% Get the sliding sum
a2 = conv2(A, [1 1], 'valid');
how can I do that
Here I want have to add
A(1,1) + A(1,2) + A(1,3)+ A(1,4) = B1
A(1,5) + A(1,6) + A(1,7)+ A(1,8) = B2
A(2,1) + A(2,2) + A(2,3)+ A(2,4) = B3
A(2,5) + A(2,6) + A(2,7)+ A(2,8) = B4
B = [ B1 B2
B3 B4]
Thanks
  4 件のコメント
Azzi Abdelmalek
Azzi Abdelmalek 2012 年 9 月 14 日
or simpler
n=size(A,2)/2
res=[sum(A(1,1:n)) sum(A(1,n+1:end)); sum(A(2,1:n)) sum(A(2,n+1:end))]
Image Analyst
Image Analyst 2012 年 9 月 14 日
Yeah, that's probably better - more direct - as long as he has a 2 row array. In his example here (which he incorrectly posted as an answer), he has a 7 row by 8 column array. See my build on your solution for when it has any number of rows.

サインインしてコメントする。


Image Analyst
Image Analyst 2012 年 9 月 14 日
編集済み: Image Analyst 2012 年 9 月 14 日
A=[...
0.0018 0.0008 0.0000 0.0000 0.2304 0.7345 0.0159 0.0166
0.0024 0.0016 0.0001 0.0000 0.2161 0.7441 0.0165 0.0192
0.0029 0.0027 0.0002 0.0000 0.2084 0.7475 0.0169 0.0214
0.0034 0.0040 0.0003 0.0000 0.2041 0.7479 0.0172 0.0230
0.0038 0.0055 0.0005 0.0001 0.2016 0.7468 0.0175 0.0243
0.0041 0.0072 0.0007 0.0001 0.1999 0.7450 0.0177 0.0253
0.0044 0.0090 0.0009 0.0001 0.1988 0.7429 0.0178 0.0261]
[rows columns] = size(A)
% Get the sliding sum
a2 = conv2(A, ones(1, columns/2), 'valid')
% Extract just the first and last column.
B = [a2(:,1) a2(:,end)]
Or, building off Azzi's solution and making it work for a 2D array of any number of rows:
B = [sum(A(:,1:columns/2), 2) sum(A(:,(columns/2)+1:end), 2)]
This is probably the most direct way. And it's only 1 line of code instead of 2.

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by