Estoy intentando hacer la ventana Hanning manualmente, pero no «No funciona, ¿qué estoy haciendo mal?
t=[0:.1:10]; x=.5-.5*cos(2*pi*t/102); plot(x);
No estoy seguro de por qué no puedo obtener la ventana de Hanning completa ..
Comentarios
Responder
Necesitas cambiar » 102 «a» 10 «.
x=.5-.5*cos(2*pi*t/10);
Comentarios
- Gracias :), pensé que era el número de muestras
- @ Pulse9 Quiere que la ventana comience en 0 y termine en 0, por lo que eso significa que el cos debe comenzar y terminar en 1, es decir, debe pasar exactamente por un ciclo.
Responder
Había un meteorólogo (y Hann window- fabricante ) llamado
Julius von Hann , Hanning es un abuso (similitud con Hamming). Tendría un mejor control de su código llamando a las funciones hann.m
o window.m
:
nSample = 101; t = linspace(0,10,nSample); % w = hann(nSample); w = window(@hann,nSample); % w = .5-.5*cos(2*pi*t/10); plot(t,w)
Espero que implementarlo manualmente no implique calcular el coseno con series.
Comentarios
- ¿Por qué llamar al build en funciones ser mejor? Funcionan internamente exactamente igual que el método manual y tienen más capas de verificación y análisis, lo que los hace un poco más lentos. Las funciones integradas usan específicamente " w = 0.5 – 0.5 * cos (2 * pi * x); "
- @Hilmar Escribí " un mejor control de código ", porque la función que se está implementando (una ventana) es explícita desde la llamada, incluso sin comentarios. Alguien más, o el programador tres meses después, entenderá fácilmente lo que hace y podrá cambiarlo, mejorarlo de inmediato, sin tener que adivinar. Además, poner la longitud (
nSample
) o el nombre de la ventana como variables mejora la legibilidad.
w=hann(100);
y funciona bien, pero lo necesito hacerlo manualmente