Borrar filtros
Borrar filtros

Set specific values to NaN

82 visualizaciones (últimos 30 días)
Sascha  Winter
Sascha Winter el 13 de Abr. de 2017
Editada: Peter Strassmann el 19 de Oct. de 2020
Hello everyone
My problem is as follows. I have a matrix like this for example:
A = [1 2 3 4 5 6 6 6 6;
2 4 3 5 4 6 7 7 7;
5 4 4 4 3 7 8 8 8;
2 1 3 3 3 3 3 3 5]'
Now i want to get a matrix which deletes the values which are similar (starting with the second) untill the end of the column. So columns 1, 2, 3 should delete some values while column 4 shouldn't delete any numbers.
At the end the matrix should look like this
A = [1 2 3 4 5 6 NaN NaN NaN;
2 4 3 5 4 6 7 NaN NaN;
5 4 4 4 3 7 8 NaN NaN;
2 1 3 3 3 3 3 3 5]'
I hope you get my problem. Thanks in Advance.
  1 comentario
Peter Strassmann
Peter Strassmann el 19 de Oct. de 2020
Editada: Peter Strassmann el 19 de Oct. de 2020
Be aware that NaN values are only defined for data with single or double precision! It is resets integers to zero, e.g. uint8, int8.
rng(1);
A=randi([0,8], [100,1], "int8");
%A=double(A);
A(A>2)=nan;
If you want to associate NaN values to such data, you have to convert them first (before the remapping) with single(A) or double(A) into values with the according precision.

Iniciar sesión para comentar.

Respuesta aceptada

Stephen23
Stephen23 el 13 de Abr. de 2017
Editada: Stephen23 el 14 de Abr. de 2017
>> A = [1,2,5,2;2,4,4,1;3,3,4,3;4,5,4,3;5,4,3,3;6,6,7,3;6,7,8,3;6,7,8,3;6,7,8,5];
>> idx = cumprod(double(diff(flipud(A))==0),1);
>> idx(end+1,:) = false;
>> idx = logical(flipud(idx));
>> A(idx) = NaN
A =
1 2 5 2
2 4 4 1
3 3 4 3
4 5 4 3
5 4 3 3
6 6 7 3
NaN 7 8 3
NaN NaN NaN 3
NaN NaN NaN 5
  5 comentarios
Stephen23
Stephen23 el 14 de Abr. de 2017
Try this:
A = [1,2,3,4,5,6,6,6,6; 3,4,4,4,5,6,6,2,1; NaN,NaN,2,4,5,6,6,6,6; 1,2,2,2,2,2,NaN,NaN,NaN; NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN]'
idx = diff(flipud(A));
idx = cumprod(double(idx==0|isnan(idx)),1);
idx(end+1,:) = isnan(A(1,:));
idx = logical(flipud(idx));
A(idx) = NaN
which outputs this:
A =
1 3 NaN 1 NaN
2 4 NaN 2 NaN
3 4 2 NaN NaN
4 4 4 NaN NaN
5 5 5 NaN NaN
6 6 6 NaN NaN
NaN 6 NaN NaN NaN
NaN 2 NaN NaN NaN
NaN 1 NaN NaN NaN
Sascha  Winter
Sascha Winter el 18 de Abr. de 2017
I think it works thanks a lot.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Logical 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