Max value of row in matrix and creating new matrix

조회 수: 1 (최근 30일)
Etan Cole
Etan Cole 2014년 10월 7일
댓글: Star Strider 2014년 10월 8일
I want something like this matrixa=[12 33 44;26 59 14;15 99 54] matrixb=[26 89 95;23 54 12;2 54 43]
and to get output like this
matrixc=[15 99 54;26 89 95]
calculate the sum of rows in both matrix and to create a new matrix with the two rows that have the greatest sum value like example above. can it be done with max function ? thanks in advance :)
  댓글 수: 2
José-Luis
José-Luis 2014년 10월 7일
What have you tried so far?
Etan Cole
Etan Cole 2014년 10월 7일
clear; a=[15 9 7;8 5 5;1 7 4]; b=[6 5 9;8 2 5;5 4 4]; [C,I]=max(sum(a,1)); [C1,I1]=max(sum(b,1)); matrix=[a(I,:);b(I1,:)];

댓글을 달려면 로그인하십시오.

답변 (2개)

Star Strider
Star Strider 2014년 10월 7일
This works:
sa = sum(matrixa,2);
sb = sum(matrixb,2);
c = zeros(size(matrixa));
q1 = matrixa(sa > sb,:);
q2 = matrixb(sb > sa,:);
c(sa > sb,:) = matrixa(sa > sb,:);
c(sb > sa,:) = matrixb(sb > sa,:);
  댓글 수: 3
Star Strider
Star Strider 2014년 10월 7일
Misread it at first. This works:
sa = sum(matrixa,2);
sb = sum(matrixb,2);
mab = [matrixa; matrixb];
sab = [sa; sb];
[srtab,ix] = sort(sab,'descend');
matrixc = mab(ix(1:2),:);
Star Strider
Star Strider 2014년 10월 8일
With respect to your solution, what happens if the two largest row sums happen to be in the same matrix?
My code accounts for that, so that ‘c’ contains the rows of either matrix with the largest row sums.
Your code selects the largest row sums from ‘matrixa’ and ‘matrixb’. They may not be the largest row sums of the two matrices.

댓글을 달려면 로그인하십시오.


Etan Cole
Etan Cole 2014년 10월 7일
i got it working like this. thanks for the help
[C,I]=max(sum(a,2)); [C1,I1]=max(sum(b,2)); rezultat=[a(I,:);b(I1,:)];

카테고리

Help CenterFile Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by