[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.

[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.

freqz(___) 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.

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)

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.

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, freqz considers the input to be 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.

Angular frequencies, specified as a vector and expressed in
radians/sample. w must have at least two
elements. w = π corresponds to the Nyquist
frequency.

Frequency response, returned as a vector. If you specify n, h has
length n. If you do not specify n,
or specify n as the empty vector, h has
length 512.

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 the empty vector, f has
length 512.

The frequency response of a digital filter can be interpreted
as the transfer function evaluated at z = e^{jω}[1].

freqz determines the transfer function from
the (real or complex) numerator and denominator polynomials you specify
and returns the complex frequency response, H(e^{jω}),
of a digital filter. The frequency response is evaluated at sample
points determined by the syntax that you use.

freqz generally uses an FFT algorithm to
compute the frequency response whenever you don't supply a
vector of frequencies as an input argument. It computes the frequency
response as the ratio of the transformed numerator and denominator
coefficients, padded with zeros to the desired length.

When you do supply a vector of frequencies as an input argument, freqz evaluates
the polynomials at each frequency point using Horner's method
of nested polynomial evaluation, dividing the numerator response by
the denominator response.

References

[1] Oppenheim, Alan V., Ronald W. Schafer,
and John R. Buck. Discrete-Time Signal Processing.
2nd Ed. Upper Saddle River, NJ: Prentice Hall, 1999.