Solutions - Stanford University

13
1 Music 421 Spring 2000 Homework #2 Solutions 1. Consider the ideal differentiator having continuous-time transfer function () s s = Γ Supposing this in an admittance function (force input f(t), velocity output v(t)), (a) What is the mechanical analog of the differentiator? ANS: The mechanical analog of the differentiator is a spring with stiffness k. In this case, k = 1. (b) What is the electrical analog of the differentiator? ANS: The electrical analog of the differentiator is a capacitor with capacitance C = 1/k. (c) Convert the differentiator to discrete-time form using the finite difference approximation (FDA). ANS: The differentiator, in the time domain, is given by T T n f nT f t f dt d t v T ) ) 1 (( ) ( lim ) ( ) ( 0 = = Now, approximate the derivative. T T n f nT f nT v ) ) 1 (( ) ( ) ( which can be notated as ( ) 1 1 = n n n f f T v ANSWER (d) Convert the differentiator to discrete-time form using the bilinear transformation. Choose the mapping constant so that discrete-time and continuous-time frequencies coincide in the limit as the sampling-rate goes to infinity. ANS: This problem can be solved in one of two ways, by either (i) performing the numerical integration (the trapezoidal rule), or (ii) using the bilinear transformation to convert the Laplace domain (continuous) to the z-domain (discrete). Ill show the second method in this solution. In the Laplace domain, the differentiator is represented by ) ( ) ( s sF s V = The bilinear transform is defined as the mapping 1 1 1 1 + z z c s If you want to map s to 1 = z , let T c 2 = . To apply the transform, simply replace s in the first equation and make V and F functions of z. ) ( 1 1 2 ) ( 1 1 z F z z T z V + = To get to the time domain,

Transcript of Solutions - Stanford University

Page 1: Solutions - Stanford University

1

Music 421 Spring 2000 Homework #2

Solutions

1. Consider the ideal differentiator having continuous-time transfer function ( ) ss =Γ

Supposing this in an admittance function (force input f(t), velocity output v(t)), (a) What is the mechanical analog of the differentiator?

ANS: The mechanical analog of the differentiator is a spring with stiffness k. In this case, k = 1.

(b) What is the electrical analog of the differentiator? ANS: The electrical analog of the differentiator is a capacitor with

capacitance C = 1/k. (c) Convert the differentiator to discrete-time form using the finite difference

approximation (FDA). ANS: The differentiator, in the time domain, is given by

TTnfnTftf

dtdtv

T

))1(()(lim)()(0

−−==→

Now, approximate the derivative.

TTnfnTfnTv ))1(()()( −−≈

which can be notated as

( )11

−−= nnn ffT

v ANSWER

(d) Convert the differentiator to discrete-time form using the bilinear transformation.

Choose the mapping constant so that discrete-time and continuous-time frequencies coincide in the limit as the sampling-rate goes to infinity. ANS: This problem can be solved in one of two ways, by either (i) performing the

numerical integration (the �trapezoidal rule�), or (ii) using the bilinear transformation to convert the Laplace domain (continuous) to the z-domain (discrete). I�ll show the second method in this solution. In the Laplace domain, the differentiator is represented by

)()( ssFsV = The bilinear transform is defined as the mapping

1

1

11

+−→

zzcs

If you want to map ∞→s to 1−=z , let Tc 2= . To apply the transform, simply replace s in the first equation and make V and F functions of z.

)(112)( 1

1

zFzz

TzV

+−=

To get to the time domain,

Page 2: Solutions - Stanford University

2

( ) ( ) )(121)( 11 zFzT

zzV −− −=+

)1())1()((2)( −−−−= nvnfnfT

nv ANSWER

(e) Denote the discrete-time transfer function obtained by the finite difference approximation by ( )z1Γ , and that obtained by the bilinear transform by ( )z2Γ . In Matlab, plot and overlay the amplitude responses ( ) 1

Tje ωΓ and ( ) 2Tje ωΓ .

(f) Similarly compare the phase responses. ANS: (for parts (e) and (f)) The following two pages show the comparison of plots,

where ( )z1Γ is in dashed lines and ( )z2Γ is solid line. The third page shows the pole-zero plots of the two transfer functions. These were obtained by using the command zplane in Matlab. While these are far too simple to make using zplane reasonable, looking at more complicated filters this way will help you get a better feeling about what the filter�s frequency response is like. If you�re feeling like playing with algebra, I�ll tell you that the closed form for the magnitude responses are the following. (This was not asked for, but it�s nice to see.)

( ) 2ωsin2 1

=Γ T

Te Tjω and ( )

2ωtan2 2

=Γ T

Te Tjω

(g) Describe the merits of one approximation over the other, stating under what conditions the comparison holds. ANS: At low frequencies (below 23.0 sf or so), the magnitude responses are nearly

identical. As the frequencies get closer to the Nyquist rate, the magnitude response of the bilinear transform method, ( ) 2

Tje ωΓ , asymptotically approaches infinity, due to the pole located at z = 1. The phase responses are different between the two methods. The phase response of the FDA method, ( )Tje ω

1Γ∠ , is linear whereas the bilinear transform shows no net delay (it has an ideal phase response).

Page 3: Solutions - Stanford University

3

Problem 1 part (e)

Matlab code:

T=1; w=[-pi:.01:pi]; w=w([2:628]); % chop off endpoints for plotting purposes gamma1=(1/T)*(1-exp(-j*w*T)); gamma2=(2/T)*(1-exp(-j*w*T))./(1+exp(-j*w*T)); figure(1); clg plot(w,20*log10(abs(gamma2)),'g'); hold on plot(w,20*log10(abs(gamma1)),'y'); xlabel('w [frequency]'); ylabel('|Gamma1(w)| and |Gamma2(w)| [dB scale]'); title('Magnitude of frequency responses'); zoomit=[290:335]; % zoom in plot on lower frequencies figure(2); clg plot(w(zoomit),20*log10(abs(gamma1(zoomit))),'y'); hold on plot(w(zoomit),20*log10(abs(gamma2(zoomit))),'g'); ylabel('|Gamma1(w)| and |Gamma2(w)| [dB scale]'); xlabel('w [frequency]'); title('Magnitude of frequency responses -- low frequencies only');

-4 -3 -2 -1 0 1 2 3 4 -60

-40

-20

0

20

40

60

ω [frequency]

|Γ1(ω

)| a

nd |Γ

2(ω

)| [d

B sc

ale]

Magnitude of frequency responses

|Γ1(ω)| (dashed) |Γ2(ω)| (solid)

-0.3 -0.2 -0.1 0 0.1 0.2 0.3 -60

-55

-50

-45

-40

-35

-30

-25

-20

-15

-10

ω [frequency]

|Γ1(ω

)| a

nd |Γ

2(ω

)| [d

B sc

ale]

Magnitude of frequency responses low frequencies only

|Γ1(ω)| (dashed) |Γ2(ω)| (solid)

Page 4: Solutions - Stanford University

4

Problem 1 part (f)

Matlab code:

T=1; w=[-pi:.01:pi]; w=w([2:627]); % drop off endpoints for plotting purposes gamma1=(1/T)*(1-exp(-j*w*T)); gamma2=(2/T)*(1-exp(-j*w*T))./(1+exp(-j*w*T)); figure(1); clg; plot(w,angle(gamma1)),'y'; hold on; plot(w,angle(gamma2)),'g'); hold on; ylabel('angle(Gamma1(w)) and angle(Gamma2(w))'); xlabel('w [frequency]'); title('Phase responses');

-4 -3 -2 -1 0 1 2 3 4 -2

-1.5

-1

-0.5

0

0.5

1

1.5

2

ω [frequency]

∠Γ 1

(ω) a

nd ∠

Γ2(ω

) Phase responses

∠ Γ1(ω) (dashed) ∠ Γ2(ω) (solid)

Page 5: Solutions - Stanford University

5

Pole-Zero plots for Problem 1. (see zplane in Matlab)

-1 -0.5 0 0.5 1

-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Real part

Imag

inar

y pa

rt Pole-Zero plot of Γ1(z)

-1 -0.5 0 0.5 1

-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Real part

Imag

inar

y pa

rt

Pole-Zero plot of Γ2(z)

×

Page 6: Solutions - Stanford University

6

Problem 2. (a) The following Matlab code designs a one-pole, one-zero digital filter. The maximum

error for the invfreqz designed filter is 1.0 dB at 21.5Hz. (b) The iter=3 argument tells Matlab to run the invfreqz algorithm 3 times. The

invfreqz algorithm does an incremental fit based on the error, which is weighted by the Wt argument.

(c) To see how the FDA and bilinear transform differentiators compare, see the matlab code. The maximum error for the FDA differentiator is 0.7 dB at 9969.9 Hz. (Note that we don�t care about the error outside the region of 0-10kHz, since that�s outside the scope of the filter design.) The maximum error for the bilinear transform differentiator is 1.7dB at 9969.9 Hz.

(d) To compare the various differentiators, look at the magnitude and phase responses compared to the ideal differentiator response. If you wanted the response to be closest at low frequencies, the FDA filter would be the best choice since the error increases with frequency. But if you wanted the response to be closest at the high-end of the 0-10kHz range, the invfreqz or bilinear transform would be better. The FDA filter requires the least amount of computation. Once the bilinear and invfreqz filters have been calculated, they take about the same amount of calculation to implement (they�re both one-pole, one-zero filters.)

(e) For the 440-880Hz case, set Wt equal to 1 in the range corresponding to 440-880Hz and zero everywhere else (see Matlab code). This way, the filter is fit to match the ideal response in that range. There is virtually no error for this small range of frequencies.

(f) Repeating part (a) with 7-poles and 7-zeros gives you a smaller error, but this filter is unstable. Looking at the pole-zero plot, you can see that there are several poles outside the unit circle. The �Warning that the matrix is badly scaled� should also be a red flag. This is the practical problem, since you can�t use unstable filters.

Matlab code: % ********* Problem 2 part a *********** % fs = 44100.0; % sampling rate fc = 10000.0; % Upper frequency limit nf = 2048; % No. freq. pts around unit circle fn = fs/2; % Nyquist limit nf1 = nf/2+1; % No. freq. pts from 0 to pi df = fs/nf; f = [0:df:fs-df]; f1 = f(1:nf1); % positive frequencies from 0 to pi H = j*2*pi*f1; % ideal differentiator frequency response W = f1*pi/(fs/2);% normalized radian positive frequencies Wt = ones(size(H)); nc = round(nf*fc/fs); Wt(nc:nf1) = zeros(1,nf1-nc+1); % zero weighting in guard band iter = 3; % number of iterations for invfreqz algorithm nb = 1; % number of zeros na = 1; % number of poles [B,A] = invfreqz(H,W,nb,na,Wt,iter); Hh = freqz(B,A,nf1);

Page 7: Solutions - Stanford University

7

Hh = conj(Hh'); % prefer row vector [gerr,gerrloc] = max(abs(20*log10(abs(H(2:nc)) ./ abs(Hh(2:nc))))); % forget DC disp(sprintf('Maximum in-band gain error = %5.1f dB at frequency %5.1f Hz', ... gerr,gerrloc*fs/nf)); % for the invfreqz designed filter Maximum in-band gain error = 1.0 dB at frequency 21.5 Hz f2 = f(1:nc); N=1; figure(N); clf; subplot(221); plot(f2/1000.0, abs(H(1:nc)),'y'); hold on; plot(f2/1000.0, abs(Hh(1:nc)),'g-.'); grid on; xlabel('Frequency (kHz)'); ylabel('Gain (linear)'); title(['Ideal and Invfreqz-Designed Differentiator Frequency Response, ', ... sprintf('%d pole(s) and %d zeros', na, nb)]); subplot(222); plot(f2/1000.0,[angle(H(1:nc))*180/pi;angle(Hh(1:nc))*180/pi]); grid; xlabel('Frequency (kHz)'); ylabel('Phase (degrees)'); subplot(223); plot(f2/1000.0, 20*log10(abs(H(1:nc)) ./ abs(Hh(1:nc)))); grid; Warning: Log of zero xlabel('Frequency (kHz)'); ylabel('Gain Error (dB)'); title(['Ideal MINUS Invfreqz-Designed Differentiator Frequency Response, ', ... sprintf('%d poles and %d zeros', na, nb)]); subplot(224); plot(f2/1000.0,[angle(H(1:nc))*180/pi-angle(Hh(1:nc))*180/pi]); grid; xlabel('Frequency (kHz)'); ylabel('Phase Error (degrees)'); N=N+1; figure(N); clf; zplane(B,A); title('Pole-zero plot of invfreq-designed filter, 1 pole and 1 zero'); % ********* Problem 2 part c *********** % % compare FDA and bilinear approximations to ideal Hh1 = (1 - exp(-j*2*pi*f1/fs))*fs; % finite difference approximation [gerr,gerrloc] = max(abs(20*log10(abs(H(2:nc)) ./ abs(Hh1(2:nc))))); % forget DC disp(sprintf('FDA method: Maximum in-band gain error = %5.1f dB at frequency %5.1f Hz', gerr, gerrloc*fs/nf)); FDA method: Maximum in-band gain error = 0.7 dB at frequency 9969.9 Hz N=N+1; figure(N); clf; subplot(221); plot(f2/1000.0,abs(H(1:nc)),'y'); hold on; plot(f2/1000.0,abs(Hh1(1:nc)),'g-.'); grid; xlabel('Frequency (kHz)'); ylabel('Gain (linear)'); title('Ideal and FDA Differentiator Frequency Response, 0 poles and 1 zero'); subplot(222); plot(f2/1000.0,[angle(H(1:nc))*180/pi;angle(Hh1(1:nc))*180/pi]); grid;

Page 8: Solutions - Stanford University

8

xlabel('Frequency (kHz)'); ylabel('Phase (degrees)'); subplot(223); plot(f2/1000.0, 20*log10(abs(H(1:nc)) ./ abs(Hh1(1:nc)))); grid; Warning: Divide by zero xlabel('Frequency (kHz)'); ylabel('Gain Error (dB)'); title('Ideal MINUS FDA Differentiator Frequency Response, 0 poles and 1 zero'); subplot(224); plot(f2/1000.0,[angle(H(1:nc))*180/pi-angle(Hh1(1:nc))*180/pi]); grid; xlabel('Frequency (kHz)'); ylabel('Phase Error (degrees)'); Hh2 = 2*fs*(1 - exp(-j*2*pi*f1/fs)) ./ (1 + exp(-j*2*pi*f1/fs)); % bilinear (trapez.) [gerr,gerrloc] = max(abs(20*log10(abs(H(2:nc)) ./ abs(Hh2(2:nc))))); % forget DC disp(sprintf('Bilinear Transform: Maximum in-band gain error = %5.1f dB at ... frequency %5.1f Hz’, gerr,gerrloc*fs/nf)); Bilinear Transform:

Maximum in-band gain error = 1.7 dB at frequency 9969.9 Hz N=N+1; figure(N); clf; subplot(221); plot(f2/1000.0, abs(H(1:nc)),'y'); hold on; plot(f2/1000.0, abs(Hh2(1:nc)),'g-.'); grid; xlabel('Frequency (kHz)'); ylabel('Gain (linear)'); title('Ideal and Bilinear Differentiator Frequency Response, 1 pole and 1 zero'); subplot(222); plot(f2/1000.0,angle(H(1:nc))*180/pi,'y'); hold on; plot(f2/1000.0,angle(Hh2(1:nc))*180/pi,'g-.'); grid; xlabel('Frequency (kHz)'); ylabel('Phase (degrees)'); subplot(223); plot(f2/1000.0, 20*log10(abs(H(1:nc)) ./ abs(Hh2(1:nc)))); grid; Warning: Divide by zero xlabel('Frequency (kHz)'); ylabel('Gain Error (dB)'); title('Ideal MINUS Bilinear Differentiator Frequency Response, 1 pole and 1 zero'); subplot(224); plot(f2/1000.0,[angle(H(1:nc))*180/pi-angle(Hh2(1:nc))*180/pi]); grid; xlabel('Frequency (kHz)'); ylabel('Phase Error (degrees)'); % ********* Problem 2 part d *********** % % Show all of them on one graph for comparison N=N+1; figure(N); clf; subplot(211); plot(f2/1000.0,[abs(H(1:nc));abs(Hh(1:nc));abs(Hh1(1:nc));abs(Hh2(1:nc))]); grid; xlabel('Frequency (kHz)'); ylabel('Gain (linear)'); title('Ideal and All Approximate Differentiator Frequency Responses');

Page 9: Solutions - Stanford University

9

subplot(212); plot(f2/1000.0,[angle(H(1:nc))*180/pi;angle(Hh(1:nc))*180/pi; ... angle(Hh1(1:nc))*180/pi;angle(Hh2(1:nc))*180/pi]); grid; xlabel('Frequency (kHz)'); ylabel('Phase (degrees)'); % ********* Problem 2 part e *********** % % Only use in range of 440-880 Hz % The only thing we need to change is the Wt function W = f1*pi/(fs/2);% normalized radian positive frequencies Wt = zeros(size(H)); nc = round(nf*440/fs); ns = round(nf*880/fs); Wt(nc:ns) = ones(1,ns-nc+1); % zero weighting in guard band % recalculate filter [B,A] = invfreqz(H,W,nb,na,Wt,iter); Hh = freqz(B,A,nf1); Hh = conj(Hh'); % prefer row vector [gerr,gerrloc] = max(abs(20*log10(abs(H(2:nc)) ./ abs(Hh(2:nc))))); % forget DC disp(sprintf('Maximum in-band gain error = %5.1f dB at frequency %5.1f Hz', ... gerr,gerrloc*fs/nf)); % Error for invfreqz filter in 440-880Hz range Maximum in-band gain error = 0.0 dB at frequency 21.5 Hz f2 = f(nc:ns); %only display frequencies in 440-880 range N=N+1; figure(N); clf; subplot(221); plot(f2/1000.0, abs(H(nc:ns)),'y'); hold on; plot(f2/1000.0, abs(Hh(nc:ns)),'g-.'); grid on; xlabel('Frequency (kHz)'); ylabel('Gain (linear)'); title(['Ideal and Invfreqz-Designed Differentiator Frequency Response, ', ... sprintf('%d pole(s) and %d zeros', na, nb)]); subplot(222); plot(f2/1000.0,[angle(H(nc:ns))*180/pi;angle(Hh(nc:ns))*180/pi]); grid; xlabel('Frequency (kHz)'); ylabel('Phase (degrees)'); subplot(223); plot(f2/1000.0, 20*log10(abs(H(nc:ns)) ./ abs(Hh(nc:ns)))); grid; xlabel('Frequency (kHz)'); ylabel('Gain Error (dB)'); title(['Ideal MINUS Invfreqz-Designed Differentiator Frequency Response, ', ... sprintf('%d poles and %d zeros', na, nb)]); subplot(224); plot(f2/1000.0,[angle(H(nc:ns))*180/pi-angle(Hh(nc:ns))*180/pi]); grid; xlabel('Frequency (kHz)'); ylabel('Phase Error (degrees)'); N=N+1; figure(N); clf; zplane(B,A); title('Pole-zero plot of invfreq-designed filter for 440-880Hz range, 1 pole and 1 zero'); % ********* Problem 2 part f *********** % % Now calculate a 7-pole, 7-zero filter (iter=0)

Page 10: Solutions - Stanford University

10

% to match in the 0-10000Hz range fs = 44100.0; % sampling rate fc = 10000.0; % Upper frequency limit nf = 2048; % No. freq. pts around unit circle fn = fs/2; % Nyquist limit nf1 = nf/2+1; % No. freq. pts from 0 to pi df = fs/nf; f = [0:df:fs-df]; f1 = f(1:nf1); % positive frequencies from 0 to pi H = j*2*pi*f1; % ideal differentiator frequency response W = f1*pi/(fs/2);% normalized radian positive frequencies Wt = ones(size(H)); nc = round(nf*fc/fs); Wt(nc:nf1) = zeros(1,nf1-nc+1); % zero weighting in guard band nb = 7; % number of zeros na = 7; % number of poles [B,A] = invfreqz(H,W,nb,na,Wt); Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 3.697887e-028 Hh = freqz(B,A,nf1); Hh = conj(Hh'); % prefer row vector [gerr,gerrloc] = max(abs(20*log10(abs(H(2:nc)) ./ abs(Hh(2:nc))))); % forget DC disp(sprintf('Maximum in-band gain error = %5.1f dB at frequency %5.1f Hz', ... gerr,gerrloc*fs/nf)); Maximum in-band gain error = 0.0 dB at frequency 9560.7 Hz f2 = f(1:nc); N=N+1; figure(N); clf; subplot(221); plot(f2/1000.0, abs(H(1:nc)),'y'); hold on; plot(f2/1000.0, abs(Hh(1:nc)),'g-.'); grid on; xlabel('Frequency (kHz)'); ylabel('Gain (linear)'); title(['Ideal and Invfreqz-Designed Differentiator Frequency Response, ', ... sprintf('%d pole(s) and %d zeros', na, nb)]); subplot(222); plot(f2/1000.0,[angle(H(1:nc))*180/pi;angle(Hh(1:nc))*180/pi]); grid; xlabel('Frequency (kHz)'); ylabel('Phase (degrees)'); subplot(223); plot(f2/1000.0, 20*log10(abs(H(1:nc)) ./ abs(Hh(1:nc)))); grid; Warning: Log of zero xlabel('Frequency (kHz)'); ylabel('Gain Error (dB)'); title(['Ideal MINUS Invfreqz-Designed Differentiator Frequency Response, ', ... sprintf('%d poles and %d zeros', na, nb)]); subplot(224); plot(f2/1000.0,[angle(H(1:nc))*180/pi-angle(Hh(1:nc))*180/pi]); grid; xlabel('Frequency (kHz)'); ylabel('Phase Error (degrees)'); N=N+1; figure(N); clf; zplane(B,A); title('Pole-zero plot of invfreq-designed filter, 7 poles and 7 zeros');

Page 11: Solutions - Stanford University

11

0 5 10 0

2

4

6

8 x 104

Frequency (kHz)

Gai

n (li

near

)

Ideal and Invfreqz-Designed Differentiator Frequency Response 1 pole(s) and 1 zeros

0 5 10 0

50

100

150

200

Frequency (kHz)

Phas

e (d

egre

es)

0 5 10 -1

-0.5

0

0.5

1

Frequency (kHz)

Gai

n Er

ror (

dB)

Ideal MINUS Invfreqz-Designed Differentiator Frequency

0 5 10 -200

-100

0

100

Frequency (kHz)

Phas

e Er

ror (

degr

ees)

-1 -0.5 0 0.5 1

-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Real part

Imag

inar

y pa

rt

Pole-zero plot of invfreq-designed filter, 1 pole and 1

Page 12: Solutions - Stanford University

12

Ideal and FDA Differentiator Frequency Response 0 poles and 1 zero

0 5 10 0

2

4

6

8 x 104

Frequency (kHz)

Gai

n (li

near

)

0 5 10 0

50

100

Frequency (kHz)

Phas

e (d

egre

es)

0 5 10 0

0.2

0.4

0.6

0.8

Frequency (kHz)

Gai

n Er

ror (

dB)

Ideal MINUS FDA Differentiator Frequency Response

0 5 10 0

20

40

60

Frequency (kHz)

Phas

e Er

ror (

degr

ees)

0 5 10 0

2

4

6

8 x 10 4

Frequency (kHz)

Gai

n (li

near

)

Ideal and Bilinear Differentiator Frequency Response

0 5 10 0

50

100

Frequency (kHz)

Phas

e (d

egre

es)

0 5 10 -2

-1.5

-1

-0.5

0

Frequency (kHz)

Gai

n Er

ror (

dB)

Ideal MINUS Bilinear Differentiator Frequency Response

0 5 10 -4

-2

0

2

4 x 10

-13

Frequency (kHz)

Phas

e Er

ror (

degr

ees)

Page 13: Solutions - Stanford University

13

0 5 10 0

2

4

6

8 x 10 4

Frequency (kHz)

Gai

n (li

near

)

Ideal and Invfreqz-Designed Differentiator Frequency Response 7 pole(s) and 7 zeros

0 5 10 0

50

100

Frequency (kHz)

Phas

e (d

egre

es)

0 5 10 8.478

8.4781

8.4782

8.4783 x 10 -3

Frequency (kHz)

Gai

n Er

ror (

dB)

Ideal MINUS Invfreqz-Designed Differentiator

0 5 10 -2

0

2

4

6 x 10 -6

Frequency (kHz)

Phas

e Er

ror (

degr

ees)

-100 0 100 200 300 400

-200

-150

-100

-50

0

50

100

150

200

Real

Imag

inar

y

Pole-zero plot of invfreq-designed filter 7 poles and 7 zeros