Matlab - Eliminar NaN de una n-matriz

   
Vista:

Eliminar NaN de una n-matriz

Publicado por Morán (8 intervenciones) el 28/02/2011 11:06:40
Hola:

A=[NaN 3 5 8; 5 2 7 NaN; 4 1 NaN 8]

Cómo puedo eliminar los NaN?

Gracias.
Morán
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Eliminar NaN de una n-matriz

Publicado por Jorge (226 intervenciones) el 28/02/2011 22:56:45
Bueno, una matriz tiene un número determinado de renglones y columnas.

Los renglones y columnas deben estar completos. No se puede que un columna tenga 3 elementos y otra columna tenga 4 elementos.

Puedes quitar renglones completos o columnas completas, pero no puedes dejar espacios vacíos en las matrices.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Eliminar NaN de una n-matriz

Publicado por Juan Morán (8 intervenciones) el 01/03/2011 10:46:47
Gracias Jorge,
pero lo que quiero decir, es qué, lo que sí puedo hacer es transformar cada fila de la matriz en una 'cell-array' que éstas sí que pueden tener las dimensiones variables, el problema es que no puedo eliminar los NaN en este tipo de formato.

En el foro oficial de Matlab, me han dado una solución:

Matlab can use cell arrays to store rows with an unequal number of elements. Here is a way to get this:

A=[1 2 3 4 -99; NaN NaN 7 4 12; 9 4 NaN 5 11];
% split A into rows, and keep the non-NaN values
C = mat2cell(A,ones(1,size(A,1)))
C = cellfun(@(x) x(~isnan(x)), C, 'un',0)

pero cuando lo hago, Matlab responde 'Too many inputs.' en la ecuación:
C = cellfun(@(x) x(~isnan(x)), C, 'un',0)

Sabéis que significa @(x) y quien es 'x'

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Eliminar NaN de una n-matriz

Publicado por Juan Morán (8 intervenciones) el 01/03/2011 16:17:10
Al final, es un problema de la versión instalada de Matlab, por lo que si no funciona la anterior, podéis probar con:

A=[1 2 3 4 -99;
NaN NaN 7 4 12;
9 4 NaN 5 11]

B = A.';
b = ~isnan(B);
l = sum(b,1);
B = B(b).';
C = mat2cell(B,1,l)';
C{:}

Morán
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Eliminar NaN de una n-matriz

Publicado por Jorge (226 intervenciones) el 01/03/2011 21:23:26
A ver, no estoy entendiendo...

¿Con esos códigos ya resolviste el problema?

O si no, ¿qué es lo que quieres obtener?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Eliminar NaN de una n-matriz

Publicado por Juan Morán (8 intervenciones) el 02/03/2011 09:15:22
Sí, con esos códigos ya resolví el problema

Un saludo

Juan Morán
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar