delete value from double class by using logical class

조회 수: 1 (최근 30일)
ha ha
ha ha 2018년 3월 20일
편집: ha ha 2018년 3월 20일
Let's say:
A : 2x7 double class
A=[ 1 2 3 4 5 6 7; 8 9 1 2 3 4 5] ;
A=[ 1 2 3 4 5 6 7
8 9 1 2 3 4 5 ]
B: 2x7 logical class:
B=boolean( [1 0 0 0 0 0 1;1 0 1 1 1 1 1] );
B={ 1 0 0 0 0 0 1
1 0 1 1 1 1 1 }
How to find the matrix C (double class)as follow result from A & B:
C=[ 1 7
8 1 2 3 4 5 ]
C=[1 7; 8 1 2 3 4 5] ????
  댓글 수: 2
Rik
Rik 2018년 3월 20일
You can't. Arrays in Matlab are always rectangular.
ha ha
ha ha 2018년 3월 20일
편집: ha ha 2018년 3월 20일
thank @Rik Wisselink

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

채택된 답변

Jan
Jan 2018년 3월 20일
편집: Jan 2018년 3월 20일
As said already: Matrices must be rectangular. But you can use a cell array:
A = [ 1 2 3 4 5 6 7; ...
8 9 1 2 3 4 5];
B = logical([ 1 0 0 0 0 0 1; ...
1 0 1 1 1 1 1]);
n = size(A, 1);
C = cell(n, 1);
for k = 1:n
C{k} = A(k, B(k, :));
end
Then:
C = {[1 7]; ...
[8 1 2 3 4 5]}

추가 답변 (1개)

Birdman
Birdman 2018년 3월 20일
Addition to Rik's comment, you should use cell array for this type of problems:
idx=A&~B;
C=mat2cell(A,ones(1,size(A,1)),ones(1,size(A,2)));
C(idx)={[]}

카테고리

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

태그

Community Treasure Hunt

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

Start Hunting!

Translated by