SoloCodigo

Programación Específica => Matlab => Mensaje iniciado por: Victorv en Jueves 16 de Julio de 2009, 15:45

Título: Novato en MatLab
Publicado por: Victorv en Jueves 16 de Julio de 2009, 15:45
Hola a todos.
Soy novato en programacion, si pueden ayudarme con este algoritmo. Necesito que N sea N=[2 6 8 23 31 38 46].
%M son los 50 datos
n=50;
M=[101 49.21 77.78 87.30 92.06 52.38 88.00 68.89 87.30 122.00 95.00 99.00 92.06 87.30 90.48 90.48 80.00 110.00 72.50 88.89 77.50 89.00 42.00 88.89 87.00 85.00 77.00 92.06 112.00 82.54 60.00 93.65 82.00 93.65 85.71 87.30 99.00 142.00 88.00 95.24 77.78 95.24 99.00 96.83 93.65 57.14 72.50 122.22 79.00 71.43]';
for i=1:n
    if M(i) <= 70.00  
       N(i,1) = i;
    elseif M(i) >= 125.00  
       N(i,1) = i;
    end
end
N % indica la posicion de los datos buscados
Me da este resultado
N =[0 2 0 0 0 6 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 0 0 0 0 0 0 0 31 0 0 0 0 0 0 38 0 0 0 0 0 0 0 46]
Quiero que N sea N=[2 6 8 23 31 38 46].
Desde ya muchas gracias.
Título: Re: Novato en MatLab
Publicado por: EliotHijano en Jueves 16 de Julio de 2009, 17:30
Si No quieres cambiar tu codigo:
Código: Matlab M
  1.  
  2. cont=1;
  3. for index=1:length(N)
  4.    if ( N(index)!=0 )
  5.       NN(cont)=N(index);
  6.       cont=cont+1;
  7.    end
  8. end
  9. N=NN;
  10.  

Si quieres cambiarlo:
Código: Matlab M
  1. %M son los 50 datos
  2. n=50;
  3. M=[101 49.21 77.78 87.30 92.06 52.38 88.00 68.89 87.30 122.00 95.00 99.00 92.06 87.30 90.48 90.48 80.00 110.00 72.50 88.89 77.50 89.00 42.00 88.89 87.00 85.00 77.00 92.06 112.00 82.54 60.00 93.65 82.00 93.65 85.71 87.30 99.00 142.00 88.00 95.24 77.78 95.24 99.00 96.83 93.65 57.14 72.50 122.22 79.00 71.43]';
  4. cont=1; %lo utilizaremos para que no se añadan ceros, que vaya añadiendo los números que queremos, uno tras otro.
  5. for i=1:n
  6.    if (M(i) <= 70.00)
  7.       N(cont,1) = i;
  8.       cont=cont+1;
  9.    elseif (M(i) >= 125.00)
  10.       N(cont,1) = i;
  11.       cont=cont+1;
  12.    end
  13. end
  14. N % indica la posicion de los datos buscados
  15.  

Sin duda este ultimo es mejor, mucho más rápido.
Título: Re: Novato en MatLab
Publicado por: Victorv en Jueves 16 de Julio de 2009, 19:39
Excelente, la respuesta.
Muchas gracias, Saludos.