How to find sum of row vector and check this is equal to 0?

조회 수: 4 (최근 30일)
bala maths
bala maths 2022년 3월 1일
댓글: Walter Roberson 2022년 3월 3일
A = [0 1 0 0 0 1 ; 1 0 1 0 0 0 ; 0 1 0 1 0 0 ; 0 0 1 0 1 0; 0 0 0 1 0 1 ; 1 0 0 0 1 0];
B = [1; 2; 3; -3; -2; -1];
C = perms (B);
E=C
D=C*A
output:
E = 3 2 1 -1 -2 -3
3 2 1 -1 -3 -2
3 2 1 -2 -1 -3
3 2 1 -2 -3 -1
3 2 1 -3 -1 -2
3 2 1 -3 -2 -1 and so on...
D = -1 4 1 -1 -4 1
0 4 1 -2 -3 0
-1 4 0 0 -5 2
1 4 0 -2 -3 0
0 4 -1 0 -5 2 and so on...
Here i have lot of outputs for E and D.
so, I want print only the resultant Matrix D with two conditions
i) Matrix D has atmost one zero.
ii) Sum of all elements in D = 0.
and also their corresponding combination of Matrix E
by using any conditional statements (example for , if conditions).
  • if exist such matrix D & E, then display "Matrix D and corresponding Matrix E"
  • if does not exist such Matrix, then display " there is no such combination".

답변 (2개)

David Hill
David Hill 2022년 3월 1일
편집: David Hill 2022년 3월 1일
idx=sum(D==0,2)<=1&sum(D,2)==0;
d=D(idx,:);
e=E(idx,:);
  댓글 수: 1
David Hill
David Hill 2022년 3월 1일
h=histc(D,unique(D),2);
idx=sum(D==0,2)<=1&sum(D,2)==0&~sum(h>1,2)>0;
d=D(idx,:);
e=E(idx,:);

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


Walter Roberson
Walter Roberson 2022년 3월 1일
A = [0 1 0 0 0 1 ; 1 0 1 0 0 0 ; 0 1 0 1 0 0 ; 0 0 1 0 1 0; 0 0 0 1 0 1 ; 1 0 0 0 1 0];
B = [1; 2; 3; -3; -2; -1];
C = perms (B);
E=C;
D=C*A;
mask = sum(D==0,2) <= 1 & sum(D,2) == 0;
D(mask,:)
ans = 288×6
-1 -4 1 -1 4 1 1 -4 -1 -1 4 1 -1 2 -5 5 -2 1 -5 2 -1 5 -2 1 -1 1 -5 5 -2 2 -1 1 1 -1 4 -4 1 1 -1 -1 4 -4 -5 1 -1 5 -2 2 -2 -3 -1 1 3 2 -1 -3 -2 1 3 2
That sort of thing ??
  댓글 수: 4
bala maths
bala maths 2022년 3월 3일
편집: bala maths 2022년 3월 3일
1 -4 1 -1 4 1 (here 1 is repeated) remove it
1 -4 -1 -1 4 1 (Here 1 & -1 are repeated) remove it
-1 2 -5 5 -2 1 (all entry are distinct) i want print this type of rows only
-5 2 -1 5 -2 1 (all entry are distinct) i want print this type of rows only
-1 1 -5 5 -2 2
-1 1 1 -1 4 -4
1 1 -1 -1 4 -4
-5 1 -1 5 -2 2 (all entry are distinct) i want print this type of rows only
-2 -3 -1 1 3 2 (all entry are distinct) i want print this type of rows only
-1 -3 -2 1 3 2 (all entry are distinct) i want print this type of rows only
Walter Roberson
Walter Roberson 2022년 3월 3일
A = [0 1 0 0 0 1 ; 1 0 1 0 0 0 ; 0 1 0 1 0 0 ; 0 0 1 0 1 0; 0 0 0 1 0 1 ; 1 0 0 0 1 0];
B = [1; 2; 3; -3; -2; -1];
C = perms (B);
E=C;
D=C*A;
[~, F] = mode(D, 2);
mask = sum(D==0,2) <= 1 & sum(D,2) == 0 & F == 1;
D(mask,:)
ans = 216×6
-1 2 -5 5 -2 1 -5 2 -1 5 -2 1 -1 1 -5 5 -2 2 -5 1 -1 5 -2 2 -2 -3 -1 1 3 2 -1 -3 -2 1 3 2 -2 2 -5 5 -1 1 -2 2 -1 1 3 -3 -1 2 -2 1 3 -3 -5 2 -2 5 -1 1
E(mask,:)
ans = 216×6
-1 -2 3 -3 2 1 -1 -2 3 1 2 -3 -1 -2 2 -3 3 1 -1 -2 2 1 3 -3 -1 -3 -2 2 3 1 -1 -3 -2 1 3 2 -1 -3 3 -2 2 1 -1 -3 3 2 -2 1 -1 -3 3 1 -2 2 -1 -3 3 1 2 -2

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

카테고리

Help CenterFile Exchange에서 Linear Algebra에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by