• Viernes 1 de Noviembre de 2024, 11:39

Autor Tema:  Novato en MatLab  (Leído 1178 veces)

Victorv

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
Novato en MatLab
« en: Jueves 16 de Julio de 2009, 15:45 »
0
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.

EliotHijano

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Novato en MatLab
« Respuesta #1 en: Jueves 16 de Julio de 2009, 17:30 »
0
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.

Victorv

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
Re: Novato en MatLab
« Respuesta #2 en: Jueves 16 de Julio de 2009, 19:39 »
0
Excelente, la respuesta.
Muchas gracias, Saludos.