delete value from double class by using logical class

2 visualizaciones (últimos 30 días)
ha ha
ha ha el 20 de Mzo. de 2018
Editada: ha ha el 20 de Mzo. de 2018
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 comentarios
Rik
Rik el 20 de Mzo. de 2018
You can't. Arrays in Matlab are always rectangular.
ha ha
ha ha el 20 de Mzo. de 2018
Editada: ha ha el 20 de Mzo. de 2018
thank @Rik Wisselink

Iniciar sesión para comentar.

Respuesta aceptada

Jan
Jan el 20 de Mzo. de 2018
Editada: Jan el 20 de Mzo. de 2018
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]}

Más respuestas (1)

Birdman
Birdman el 20 de Mzo. de 2018
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)={[]}

Categorías

Más información sobre Programming en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by