Matlab - Generando nueva columna en función de los valores de otra

 
Vista:

Generando nueva columna en función de los valores de otra

Publicado por Guillon_ (10 intervenciones) el 14/12/2013 14:40:20
Hola a todos,

Tengo matrices

m1 = [a,b,c; 4,3,7]
m2 =[b,c,b; NaN,NaN,Nan]

La idea es simple, quiero que los valores NaN de la m2 cambien en función de la m1, i.e respetando la asociacion a=4,b=3 y c=7.

El resultado debería, por tanto ser la matrix 2:

m2 = [b,c,b; 3,7,3]

Alguna idea?!

Gracias de antemano
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
Imágen de perfil de Dave
Val: 497
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Generando nueva columna en función de los valores de otra

Publicado por Dave (1094 intervenciones) el 15/12/2013 14:12:08
Hola Guillon;

A continuación una opción de código para tu consulta.

1
2
3
4
5
6
7
8
9
10
11
a=4,b=3, c=7
 
 
m1 = [a,b,c; 4,3,7]
 
m2 =[b,c,b; nan,nan,nan]
 
m3 = m2;
 
ind = find(isnan(m2));
m3(ind) = m1(ind)


Salida

1
2
3
4
5
6
7
8
9
10
11
12
13
14
m1 =
 
     4     3     7
     4     3     7
 
m2 =
 
     3     7     3
   NaN   NaN   NaN
 
m3 =
 
     3     7     3
     4     3     7

Espero que sea de alguna ayuda.

Saludos
Dave Correa
[email protected]
Servicios de Programación Matlab
http://fismatlab.blogspot.com/
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
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Generando nueva columna en función de los valores de otra

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 16/12/2013 02:59:26
1
2
3
4
5
6
7
8
9
10
11
12
clear all
syms a b c d e f g h j k l m n o p q
m1 =[a,b,c,d,  e, f,g, h, j, k, l, m, n, o, p, q;
     4,3,7,12,56,74,45,45,23,90,19,67,44,66,88,44]
 
m2 =[b,c,b,b,a,c,g,k,f,h,a,q,m,f,j,o; NaN,NaN,NaN NaN,NaN,NaN, NaN,NaN,NaN NaN NaN,NaN, NaN,NaN,NaN NaN ]
 for i=1:size(m2,2)
 [rows,cols] = find(m2(1,i)==m1(1,:));
 [rows1,cols1] = find(m2(1,i)==m2(1,:));
 m2(rows1+1,cols1)=  m1(rows+1,cols);
 end
  m2



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
>> generando_columnas
 
m1 =
 
[ a, b, c,  d,  e,  f,  g,  h,  j,  k,  l,  m,  n,  o,  p,  q]
[ 4, 3, 7, 12, 56, 74, 45, 45, 23, 90, 19, 67, 44, 66, 88, 44]
 
 
m2 =
 
[   b,   c,   b,   b,   a,   c,   g,   k,   f,   h,   a,   q,   m,   f,   j,   o]
[ NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN]
 
 
m2 =
 
[ b, c, b, b, a, c,  g,  k,  f,  h, a,  q,  m,  f,  j,  o]
[ 3, 7, 3, 3, 4, 7, 45, 90, 74, 45, 4, 44, 67, 74, 23, 66]




Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
[email protected]


http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
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