Main Content

phasez

Phase response of digital filter

Description

[phi,w] = phasez(b,a,n) returns the n-point phase response vector phi and the corresponding angular frequency vector w for the digital filter with the transfer function coefficients stored in b and a.

[phi,w] = phasez(sos,n) returns the n-point phase response corresponding to the second-order sections matrix sos.

[phi,w] = phasez(d,n) returns the n-point phase response for the digital filter d.

[phi,w] = phasez(___,n,'whole') returns the phase response at n sample points around the entire unit circle. This syntax can include any combination of input arguments from the previous syntaxes.

[phi,f] = phasez(___,n,fs) returns the frequency vector.

phi = phasez(___,f,fs) returns the phase response vector phi evaluated at the physical frequencies supplied in f. This syntax can include any combination of input arguments from the previous syntaxes.

phi = phasez(___,w) returns the unwrapped phase response in radians at frequencies specified in w.

example

phasez(___) with no output arguments plots the phase response of the filter.

Examples

collapse all

Use designfilt to design an FIR filter of order 54, normalized cutoff frequency 0.3π rad/s, passband ripple 0.7 dB, and stopband attenuation 42 dB. Use the method of constrained least squares. Display the phase response of the filter.

Nf = 54;
Fc = 0.3;
Ap = 0.7;
As = 42;

d = designfilt('lowpassfir','CutoffFrequency',Fc,'FilterOrder',Nf, ...
               'PassbandRipple',Ap,'StopbandAttenuation',As, ...
               'DesignMethod','cls');
phasez(d)

Figure Filter Visualization Tool - Phase Response contains an axes object and other objects of type uitoolbar, uimenu. The axes object with title Phase Response contains an object of type line.

Design the same filter using fircls1. Keep in mind that fircls1 uses linear units to measure the ripple and attenuation.

pAp = 10^(Ap/40);
Apl = (pAp-1)/(pAp+1);

pAs = 10^(As/20);
Asl = 1/pAs;

b = fircls1(Nf,Fc,Apl,Asl);
phasez(b)

Figure contains an axes object. The axes object with title Phase Response contains an object of type line.

Design a lowpass equiripple filter with normalized passband frequency 0.45π rad/s, normalized stopband frequency 0.55π rad/s, passband ripple 1 dB, and stopband attenuation 60 dB. Display the phase response of the filter.

d = designfilt('lowpassfir', ...
               'PassbandFrequency',0.45,'StopbandFrequency',0.55, ...
               'PassbandRipple',1,'StopbandAttenuation',60, ...
               'DesignMethod','equiripple');
phasez(d)

Figure Filter Visualization Tool - Phase Response contains an axes object and other objects of type uitoolbar, uimenu. The axes object with title Phase Response contains an object of type line.

Design an elliptic lowpass IIR filter with normalized passband frequency 0.4π rad/s, normalized stopband frequency 0.5π rad/s, passband ripple 1 dB, and stopband attenuation 60 dB. Display the phase response of the filter.

d = designfilt('lowpassiir', ...
               'PassbandFrequency',0.4,'StopbandFrequency',0.5, ...
               'PassbandRipple',1,'StopbandAttenuation',60, ...
               'DesignMethod','ellip');
phasez(d)

Figure Filter Visualization Tool - Phase Response contains an axes object and other objects of type uitoolbar, uimenu. The axes object with title Phase Response contains an object of type line.

Input Arguments

collapse all

Transfer function coefficients, specified as vectors. Express the transfer function in terms of b and a as

H(ejω)=B(ejω)A(ejω)=b(1)+b(2)ejω+b(3)ej2ω++b(M)ej(M1)ωa(1)+a(2)ejω+a(3)ej2ω++a(N)ej(N1)ω.

Example: b = [1 3 3 1]/6 and a = [3 0 1 0]/3 specify a third-order Butterworth filter with normalized 3 dB frequency 0.5π rad/sample.

Data Types: double | single
Complex Number Support: Yes

Number of evaluation points, specified as a positive integer scalar no less than 2. When n is absent, it defaults to 512. For best results, set n to a value greater than the filter order.

Second-order section coefficients, specified as a matrix. sos is a K-by-6 matrix, where the number of sections, K, must be greater than or equal to 2. If the number of sections is less than 2, the function treats the input as a numerator vector. Each row of sos corresponds to the coefficients of a second-order (biquad) filter. The ith row of sos corresponds to [bi(1) bi(2) bi(3) ai(1) ai(2) ai(3)].

Example: s = [2 4 2 6 0 2;3 3 0 6 0 0] specifies a third-order Butterworth filter with normalized 3 dB frequency 0.5π rad/sample.

Data Types: double | single
Complex Number Support: Yes

Digital filter, specified as a digitalFilter object. Use designfilt to generate a digital filter based on frequency-response specifications.

Example: d = designfilt('lowpassiir','FilterOrder',3,'HalfPowerFrequency',0.5) specifies a third-order Butterworth filter with normalized 3 dB frequency 0.5π rad/sample.

Sample rate, specified as a positive scalar. When the unit of time is seconds, fs is expressed in hertz.

Data Types: double

Angular frequencies, specified as a vector and expressed in rad/sample. w must have at least two elements, because otherwise the function interprets it as n. w = π corresponds to the Nyquist frequency.

Frequencies, specified as a vector. f must have at least two elements, because otherwise the function interprets it as n. When the unit of time is seconds, f is expressed in hertz.

Data Types: double

Output Arguments

collapse all

Phase response, returned as a vector. If you specify n, then phi has length n. If you do not specify n, or specify n as an empty vector, then phi has length 512.

If the input to phasez is single precision, the function computes the phase response using single-precision arithmetic. The output phi is single precision.

Angular frequencies, returned as a vector. w has values ranging from 0 to π. If you specify 'whole' in your input, the values in w range from 0 to 2π. If you specify n, w has length n. If you do not specify n, or specify n as the empty vector, w has length 512.

Frequencies, returned as a vector expressed in hertz. f has values ranging from 0 to fs/2 Hz. If you specify 'whole' in your input, the values in f range from 0 to fs Hz. If you specify n, f has length n. If you do not specify n, or specify n as an empty vector, f has length 512.

Extended Capabilities

Introduced before R2006a