freqz() - Signal Processing
example[h,w]
= freqz(b,a,n) returns
the n-point frequency response vector, h, and the corresponding angular
frequency vector, w, for
the digital filter with numerator and denominator polynomial coefficients
stored in b and a, respectively.
example[h,w] = freqz(sos,n) returns
the n-point complex frequency response corresponding
to the second-order sections matrix, sos.
example[h,w] = freqz(d,n) returns
the n-point complex frequency response for the
digital filter, d.
[h,w]
= freqz(___,n,'whole') returns
the frequency response at n sample points around
the entire unit circle.
[h,f]
= freqz(___,n,fs) returns
the frequency response vector, h,
and the corresponding physical frequency vector, f, for the digital filter with numerator
and denominator polynomial coefficients stored in b and a,
respectively, given the sampling frequency, fs.
[h,f]
= freqz(___,n,'whole',fs) returns
the frequency at n points ranging between 0 and fs.
h = freqz(___,w) returns
the frequency response vector, h, at the normalized
frequencies supplied in w.
h = freqz(___,f,fs) returns
the frequency response vector, h, at the physical
frequencies supplied in f.
examplefreqz(___) with
no output arguments plots the frequency response of the filter.
Note:
If the input to freqz is single precision,
the frequency response is calculated using single-precision arithmetic.
The output, h, is single precision.
Syntax
[h,w]
= freqz(b,a,n) example[h,w] = freqz(sos,n) example[h,w] = freqz(d,n) example[h,w]
= freqz(___,n,'whole')[h,f]
= freqz(___,n,fs)[h,f]
= freqz(___,n,'whole',fs)h = freqz(___,w)h = freqz(___,f,fs)freqz(___) example
Example
Frequency Response from Transfer FunctionOpen This Example
Compute and display the magnitude response of the third-order IIR lowpass filter described by the following transfer function:
Express the numerator and denominator as polynomial convolutions. Find the frequency response at 2001 points spanning the complete unit circle.b0 = 0.05634;
b1 = [1 1];
b2 = [1 -1.0166 1];
a1 = [1 -0.683];
a2 = [1 -1.4461 0.7957];
b = b0*conv(b1,b2);
a = conv(a1,a2);
[h,w] = freqz(b,a,'whole',2001);
Plot the magnitude response expressed in decibels.plot(w/pi,20*log10(abs(h)))
ax = gca;
ax.YLim = [-100 20];
ax.XTick = 0:.5:2;
xlabel('Normalized Frequency (\times\pi rad/sample)')
ylabel('Magnitude (dB)')
Frequency Response from Second-Order SectionsOpen This Example
Compute and display the magnitude response of the third-order IIR lowpass filter described by the following transfer function:
Express the transfer function in terms of second-order sections. Find the frequency response at 2001 points spanning the complete unit circle.b0 = 0.05634;
b1 = [1 1];
b2 = [1 -1.0166 1];
a1 = [1 -0.683];
a2 = [1 -1.4461 0.7957];
sos1 = [b0*[b1 0] [a1 0]];
sos2 = [b2 a2];
[h,w] = freqz([sos1;sos2],'whole',2001);
Plot the magnitude response expressed in decibels.plot(w/pi,20*log10(abs(h)))
ax = gca;
ax.YLim = [-100 20];
ax.XTick = 0:.5:2;
xlabel('Normalized Frequency (\times\pi rad/sample)')
ylabel('Magnitude (dB)')
Frequency Response of an FIR filterOpen This Example
Design an FIR lowpass filter of order 80 using a Kaiser window with
. Specify a normalized cutoff frequency of
rad/sample. Display the magnitude and phase responses of the filter.
b = fir1(80,0.5,kaiser(81,8));
freqz(b,1)
Design the same filter using designfilt. Display its magnitude and phase responses using fvtool.d = designfilt('lowpassfir','FilterOrder',80, ...
'CutoffFrequency',0.5,'Window',{'kaiser',8});
freqz(d)
Frequency Response of an FIR Bandpass FilterOpen This Example
Design an FIR bandpass filter with passband between
and
rad/sample and 3 dB of ripple. The first stopband goes from
to
rad/sample and has an attenuation of 40 dB. The second stopband goes from
rad/sample to the Nyquist frequency and has an attenuation of 30 dB. Compute the frequency response. Plot its magnitude in both linear units and decibels. Highlight the passband.
sf1 = 0.1;
pf1 = 0.35;
pf2 = 0.8;
sf2 = 0.9;
pb = linspace(pf1,pf2,1e3)*pi;
bp = designfilt('bandpassfir', ...
'StopbandAttenuation1',40, 'StopbandFrequency1',sf1,...
'PassbandFrequency1',pf1,'PassbandRipple',3,'PassbandFrequency2',pf2, ...
'StopbandFrequency2',sf2,'StopbandAttenuation2',30);
[h,w] = freqz(bp,1024);
hpb = freqz(bp,pb);
subplot(2,1,1)
plot(w/pi,abs(h),pb/pi,abs(hpb),'.-')
axis([0 1 -1 2])
legend('Response','Passband','Location','South')
ylabel('Magnitude')
subplot(2,1,2)
plot(w/pi,db(h),pb/pi,db(hpb),'.-')
axis([0 1 -60 10])
xlabel('Normalized Frequency (\times\pi rad/sample)')
ylabel('Magnitude (dB)')
Output / Return Value
Limitations
Alternatives / See Also
Reference