Programación Específica > Matlab

 Novato en MatLab

(1/1)

Victorv:
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:
Si No quieres cambiar tu codigo:

--- Código: Matlab M --- cont=1;for index=1:length(N)   if ( N(index)!=0 )       NN(cont)=N(index);      cont=cont+1;   endendN=NN; 
Si quieres cambiarlo:

--- Código: Matlab M ---%M son los 50 datosn=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]';cont=1; %lo utilizaremos para que no se añadan ceros, que vaya añadiendo los números que queremos, uno tras otro.for i=1:n   if (M(i) <= 70.00)      N(cont,1) = i;      cont=cont+1;   elseif (M(i) >= 125.00)      N(cont,1) = i;      cont=cont+1;   endendN % indica la posicion de los datos buscados 
Sin duda este ultimo es mejor, mucho más rápido.

Victorv:
Excelente, la respuesta.
Muchas gracias, Saludos.

Navegación

[0] Índice de Mensajes

Ir a la versión completa