Main Content

phasedelay

Phase delay of digital filter

Description

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

example

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

[phi,w] = phasedelay(d,n) returns the n-point phase delay response of the digital filter d.

example

[phi,w] = phasedelay(___,n,'whole') returns the phase delay response at n equally spaced points around the whole unit circle.

[phi,f] = phasedelay(___,n,fs) returns the phase delay response and the corresponding n-point frequency vector f for a digital filter designed to filter signals sampled at a rate fs.

[phi,f] = phasedelay(___,n,'whole',fs) returns the frequency vector f at n points ranging between 0 and fs.

phi = phasedelay(___,w) returns the phase delay response evaluated at the angular frequencies specified in w.

phi = phasedelay(___,f,fs) returns the phase delay response evaluated at the frequencies specified in f.

[phi,w,s] = phasedelay(___) returns plotting information, where s is a structure with fields that you can change to display different frequency response plots.

[phi,f,s] = phasedelay(___) returns plotting information, where s is a structure with fields that you can change to display different frequency response plots.

example

phasedelay(___) plots the phase delay response versus frequency.

Examples

collapse all

Use constrained least squares to design a lowpass FIR filter of order 54 and normalized cutoff frequency 0.3. Specify the passband ripple and stopband attenuation as 0.02 and 0.08, respectively, expressed in linear units. Compute and plot the phase delay response of the filter.

Ap = 0.02;
As = 0.008;

b = fircls1(54,0.3,Ap,As);
phasedelay(b)

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

Repeat the example using designfilt. Keep in mind that this function expresses the ripples in decibels.

Apd = 40*log10((1+Ap)/(1-Ap));
Asd = -20*log10(As);

d = designfilt('lowpassfir','FilterOrder',54,'CutoffFrequency',0.3, ...
               'PassbandRipple',Apd,'StopbandAttenuation',Asd);
phasedelay(d)

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

Design a third-order lowpass Butterworth filter with a cutoff frequency of 200 Hz. The sample rate is 1000 Hz.

fc = 200;
fs = 1000;

[z,p,k] = butter(3,fc/(fs/2),'low');

Use the zp2sos function to convert the zeros, poles, and gain to second-order sections. Compute the phase delay response of the filter and set the number of evaluation points to 1024. Display the result.

sos = zp2sos(z,p,k);
phasedelay(sos,1024)

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

Design an elliptic filter of order 10 and normalized passband frequency 0.4. Specify a passband ripple of 0.5 dB and a stopband attenuation of 20 dB. Display the phase delay response of the filter over the complete unit circle.

[b,a] = ellip(10,0.5,20,0.4); 
phasedelay(b,a,512,'whole')

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

Repeat the example using designfilt.

d = designfilt('lowpassiir','DesignMethod','ellip','FilterOrder',10, ...
               'PassbandFrequency',0.4, ...
               'PassbandRipple',0.5,'StopbandAttenuation',20);
phasedelay(d,512,'whole')

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

Input Arguments

collapse all

Transfer function coefficients, specified as vectors.

Data Types: single | double

Number of evaluation points, specified as a positive integer. Set n to a value greater than the filter order.

Data Types: single | double

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

Data Types: single | double

Digital filter, specified as a digitalFilter object. To generate d based on frequency-response specifications, use the designfilt function.

Angular frequencies at which the function evaluates the phase delay response, specified as a vector and expressed in rad/sample. The frequencies are normally between 0 and π. w must contain at least two elements.

Sample rate, specified as a real-valued scalar and expressed in hertz.

Data Types: double

Frequencies at which the function evaluates the phase delay response, specified as a vector and expressed in hertz. f must contain at least two elements.

Output Arguments

collapse all

Phase delay response, returned as a vector of length n. The phase delay response is evaluated at n equally spaced points around the upper half of the unit circle.

Note

If the input to phasedelay is single precision, the function calculates the phase delay response using single-precision arithmetic. The output phi is single precision.

Angular frequencies in rad/sample, returned as a vector. If you specify n, w has length n. If you do not specify n or you specify n as an empty vector, then w has length 512.

Frequencies in hertz, returned as a vector. If you specify n, f has length n. If you do not specify n or you specify n as an empty vector, then f has length 512.

Plotting information, returned as a structure. You can modify the fields in s to display different frequency response plots.

Algorithms

The phase delay response of a filter corresponds to the time delay that each frequency component experiences as the input signal passes through the system. The phasedelay function returns the phase delay response and the frequency vector of the filter

H(ejω)=B(ejω)A(ejω)=b(1)+b(2)ejω++b(m+1)ejmωa(1)+a(2)ejω++a(n+1)ejnω

given numerator and denominator coefficients in inputs b and a.

Version History

Introduced before R2006a