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

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

Publicado por Dave correa.dave30@gmail.com (934 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
correa.dave30@gmail.com
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

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

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3440 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
jjcc94@hotmail.com


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