ディジタル信号処理 課題解説 その9
- 4. 課題65
clear all
close all
N=7; %次数
thresh=100; %カットオフ周波数
omega_c=thresh*2*pi; %周波数→角
周波数
%2次のバターワースフィルタを求める
[z,p,k] = buttap(N);
%伝達関数に変換
[b, a]= zp2tf(z,p,k);
%カットオフ周波数の変更
[bt,at] = lp2lp(b,a,omega_c);
buttapの出力[z,p,k]は
z…零点
p…極
k…ゲイン
𝑠− 𝑧 1
𝑠 − 𝑧 2 … (𝑠 − 𝑧(𝑚))
ℎ 𝑠 = 𝑘
𝑠− 𝑝 1
𝑠 − 𝑝 2 … (𝑠 − 𝑝(𝑛))
カットオフ周波数の変更
lp2lp…LPF→LPF
lp2hp…LPF→HPF
lp2bp…LPF→BPF
lp2bs…LPF→BEF
- 5. 課題65
%双1次変換(s領域→z領域)
ここでフィルタが完成する
[numd,dend] = bilinear(bt,at,fs);
[H,W]=freqz(numd,dend,2048);
F1=(W*fs)/(2*pi*1000);
plot(F1,abs(H))
xlabel('frequency(kHz)');
ylabel('amplitude');
line([thresh/1000 thresh/1000],[0 1],'LineWidth',2,'Color','y');
line([0 5],[1/sqrt(2) 1/sqrt(2)],'LineWidth',2,'Color','y');
- 13. 課題66-69
fs=44100;
b=(1/19)*ones(1,19);a=1;
[H1,W]=freqz(b,a,512);
F1=(W*fs)/(2*pi*1000);
plot(F1,abs(H1),'b');
xlabel('frequency(kHz)');
ylabel('amplitude');
line([0 fs/2000+0.5],[1/sqrt(2)
1/sqrt(2)],'linewidth',2,'Color','y');
line([1 1],[0 1],'linewidth',2,'Color','y');
xlim([0 5]);
制作してみる
- 14. 課題66-69
• HPFを作る
• 係数𝑎 𝑚 を −1
𝑚
𝑓𝑠
𝑚 に変換、カットオフ周波数( 2
𝑎
− 𝑓𝑐)となる
HPFが作成される
• fs=44100Hz,fc=44100/2-1000を代入
44100
𝑀 = 0.443・
= 0.93 ≈ 1
44100
− 1000
2
作れないのでやむを得ずfs=2500Hzとして再計算
2500
𝑀 = 0.443・
= 4.4 ≈ 4
2500
− 1000
2