How to show the differences between the fundamental frequencies F0, harmonics and formants F1, F2, F3 etc. of a speech signal on a spectral diagram?
The following presentation file gives a good illustration.
http://research.cs.tamu.edu/prism/lectures/sp/l7.pdf
See slide #3.
Information about Electrical, Electronic, Communication and Computer Engineering 電機、電子、通訊、電腦資訊工程的學習筆記
相關資訊~生醫工程:StudyBME
聽力科技相關資訊:電子耳資訊小站
iOS程式語言:Study Swift
樹莓派和Python:Study Raspberry Pi
2018/11/29
2018/11/06
Matlab: Pole-Zero plots of various filters
This page shows the comparisons of various Butterworth filter designs.
(1) Chang the sampling rate Fs = 4k, 8k, 16k. Fco = 200.
Fs = 2000 %4000, 8000, 16000
Fco = 200; %Cutoff frequency
order = 4;
[b, a] = butter(order, Fco/(Fs/2), 'low');
zplane(b,a);title(['LPF Fco=',num2str(Fco),'Hz, Fs=',num2str(Fs),'Hz']);
When the sampling frequency increases, the poles move towards to z = 1.
(2) Chang the cutoff frequency Fco = 200, 1k, 2k, 4k, 6k.
Fs = 16000
Fco = 200; %Cutoff frequency %200, 1000, 2000, 4000, 6000
order = 4;
[b, a] = butter(order, Fco/(Fs/2), 'low');
zplane(b,a);title(['LPF Fco=',num2str(Fco),'Hz, Fs=',num2str(Fs),'Hz']);
When the cutoff frequency increases, the poles move towards z = -1.
(3) Chang the order of the Butterworth filter. Order = 1, 2, 3, 4.
Fs = 16000
Fco = 1000;
order = 1; %1, 2, 3, 4
[b, a] = butter(order, Fco/(Fs/2), 'low');
zplane(b,a);title(['LPF Fco=',num2str(Fco),'Hz, Fs=',num2str(Fs),'Hz, Order = ',num2str(order)]);
The number of zeros = the order of the Butterworth filter.
(4) Chang the filter type: LPF, HPF, BPF, BSF.
Fs = 16000
Fco = 1000;
order = 4;
[b, a] = butter(order, Fco/(Fs/2), 'low'); %low, high
zplane(b,a);title(['LPF Fco=',num2str(Fco),'Hz, Fs=',num2str(Fs),'Hz']);
For the low pass filter, repeated zeros are at z=-1.
For the high pass filter, repeated zeros are at z=1.
The band pass filter has repeated zeros at both z=1 and z=-1.
Fs = 16000
Fco1 = 1000; %3000
Fco2 = 2000; %4000
order = 4;
[b, a] = butter(order, [Fco1/(Fs/2),Fco2/(Fs/2)]);
zplane(b,a);title(['BPF Fco1=',num2str(Fco1),'Hz, Fco2=',num2str(Fco2),'Hz']);
The band stop filter (BSF) has repeated zeros on the unit circle. The zeros are surrounded by multiple poles.
Fs = 16000
Fco1 = 1000; %3000
Fco2 = 2000; %4000
order = 4;
[b, a] = butter(order, [Fco1/(Fs/2),Fco2/(Fs/2)],'stop');
zplane(b,a);title(['BSF Fco1=',num2str(Fco1),'Hz, Fco2=',num2str(Fco2),'Hz']);
(1) Chang the sampling rate Fs = 4k, 8k, 16k. Fco = 200.
Fs = 2000 %4000, 8000, 16000
Fco = 200; %Cutoff frequency
order = 4;
[b, a] = butter(order, Fco/(Fs/2), 'low');
zplane(b,a);title(['LPF Fco=',num2str(Fco),'Hz, Fs=',num2str(Fs),'Hz']);
When the sampling frequency increases, the poles move towards to z = 1.
(2) Chang the cutoff frequency Fco = 200, 1k, 2k, 4k, 6k.
Fs = 16000
Fco = 200; %Cutoff frequency %200, 1000, 2000, 4000, 6000
order = 4;
[b, a] = butter(order, Fco/(Fs/2), 'low');
zplane(b,a);title(['LPF Fco=',num2str(Fco),'Hz, Fs=',num2str(Fs),'Hz']);
When the cutoff frequency increases, the poles move towards z = -1.
(3) Chang the order of the Butterworth filter. Order = 1, 2, 3, 4.
Fs = 16000
Fco = 1000;
order = 1; %1, 2, 3, 4
[b, a] = butter(order, Fco/(Fs/2), 'low');
zplane(b,a);title(['LPF Fco=',num2str(Fco),'Hz, Fs=',num2str(Fs),'Hz, Order = ',num2str(order)]);
The number of zeros = the order of the Butterworth filter.
(4) Chang the filter type: LPF, HPF, BPF, BSF.
Fs = 16000
Fco = 1000;
order = 4;
[b, a] = butter(order, Fco/(Fs/2), 'low'); %low, high
zplane(b,a);title(['LPF Fco=',num2str(Fco),'Hz, Fs=',num2str(Fs),'Hz']);
For the low pass filter, repeated zeros are at z=-1.
For the high pass filter, repeated zeros are at z=1.
The band pass filter has repeated zeros at both z=1 and z=-1.
Fs = 16000
Fco1 = 1000; %3000
Fco2 = 2000; %4000
order = 4;
[b, a] = butter(order, [Fco1/(Fs/2),Fco2/(Fs/2)]);
zplane(b,a);title(['BPF Fco1=',num2str(Fco1),'Hz, Fco2=',num2str(Fco2),'Hz']);
The band stop filter (BSF) has repeated zeros on the unit circle. The zeros are surrounded by multiple poles.
Fs = 16000
Fco1 = 1000; %3000
Fco2 = 2000; %4000
order = 4;
[b, a] = butter(order, [Fco1/(Fs/2),Fco2/(Fs/2)],'stop');
zplane(b,a);title(['BSF Fco1=',num2str(Fco1),'Hz, Fco2=',num2str(Fco2),'Hz']);
Matlab: draw the Pole-Zero plot of the Z-transform
To plot the Pole-Zero diagram of the Z-transform on the Z-plane, write the transfer function in the form of b(z)/a(z) in terms of z-n:
z(z-1)/(z+1/2)(z-1/4) = (1 - z-1)/(1+1/2z-1)(1-1/4 z-1) = (1 - z-1)/(1+1/4 z-1-1/8 z-2)
Call the zplane() function to draw the ploe-zero plot with coefficients of b(z)/a(z):
>> b=[1,-1];
>> a=[1,1/4,-1/8];
>> zplane(b,a);
Result:
The zeros are at 0 and 1 and the poles are at -1/2 and 1/4.
Reference:
zplane (MathWorks)
z(z-1)/(z+1/2)(z-1/4) = (1 - z-1)/(1+1/2z-1)(1-1/4 z-1) = (1 - z-1)/(1+1/4 z-1-1/8 z-2)
Call the zplane() function to draw the ploe-zero plot with coefficients of b(z)/a(z):
>> b=[1,-1];
>> a=[1,1/4,-1/8];
>> zplane(b,a);
Result:
The zeros are at 0 and 1 and the poles are at -1/2 and 1/4.
Reference:
zplane (MathWorks)
訂閱:
文章 (Atom)