Contenido principal

Respuesta de fase

MATLAB® incluye funciones para extraer la respuesta de fase de un filtro. A partir de una respuesta en frecuencia, la función abs devuelve la magnitud y angle devuelve el ángulo de la fase en radianes. Para ver la magnitud y la fase de un filtro Butterworth:

d = designfilt("lowpassiir",FilterOrder=9, ...
    HalfPowerFrequency=0.4);
freqz(d)

Figure contains 2 axes objects. Axes object 1 with title Phase, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Phase (degrees) contains an object of type line. Axes object 2 with title Magnitude, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Magnitude (dB) contains an object of type line.

La función unwrap también es útil en el análisis de frecuencia. unwrap desenvuelve la fase para hacerla continua en discontinuidades de fase de 360° añadiendo múltiplos de ±360° según se requiera. Para ver cómo unwrap le puede resultar de utilidad, diseñe un filtro paso bajo FIR de 25.º orden:

h = fir1(25,0.4);

Obtenga la respuesta en frecuencia con freqz y represente la fase en grados:

[H,f] = freqz(h,1,512,2);
plot(f,angle(H)*180/pi)
grid

Figure contains an axes object. The axes object contains an object of type line.

Resulta difícil distinguir los saltos de 360° (un artefacto de la función arctangent dentro de angle) de los saltos de 180° que expresan ceros en la respuesta en frecuencia. unwrap elimina los saltos de 360°:

plot(f,unwrap(angle(H))*180/pi)

Figure contains an axes object. The axes object contains an object of type line.

También puede utilizar phasez para ver la fase no envuelta:

phasez(h,1)

Figure contains an axes object. The axes object with title Phase Response, xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Phase (radians) contains an object of type line.

Consulte también

| | | |