En MATLAB el siguiente bucle for
:El bucle no iterar
for i = [1:100]'
%'// Do something, such as disp(i)
end
no es aparentemente muy implementado por iteración, en lugar i
se convierte en la matriz [1 2 3 ... 100] y el " loop "solo se ejecuta una vez en esta matriz i
. Puede verificar esto imprimiendo el valor de i
u otra información de seguimiento. Solo se hace una sola pasada a través del bucle.
¿Es posible obligar a MATLAB a realizar un bucle genuino? La razón por la que pregunto es que el enfoque anterior está bien para muchos casos, pero mucho más doloroso cuando tiene bucles anidados que deben ejecutarse.
Ejemplo:
El siguiente código no va a hacer lo que se puede esperar si usted pensaba que estaba recibiendo iteración real sobre un bucle:
for i = outlier
data(i) = median(data(i-100:i+100))
end
uno esperaría en cada índice de valores atípicos este reemplazaría datos (i) con la mediana de los datos de i-100 a i + 100, pero no es así. De hecho, la mediana arroja un único valor calculado en un conglomerado de todos los rangos que le interesan, y cada punto de datos (i) se reemplaza por ese único valor.
¿Puede puesto de salida que reproduce lo que se está viendo. No he visto este comportamiento, y he prestado mucha atención a los bucles de Matlab. – Iterator
¿No te refieres a 'mediana (datos (i-100: i + 100))'? (con un ':') –
@Clement J. Sí, lo hago. Corregido ahora. –