コード:
%% ------------------------------------------------ ------------------------ このMファイルについて%%出力情報 のfprintf( '\ nは************ *********************************************** \ n」は); 関数fprintf( '<DSP使用MATLAB>問題8.7 \ n \ n'); バナー(); %% ------------------------------------------------ ------------------------ %デジタルIIRローパスフィルタ B = [1 1]。 = [1 -0.9]。 フィギュア( 'NumberTitle'、 'オフ'、 '名前'、 '問題8.7ポール・ゼロプロット') セット(GCF、 '色'、 '白'); z平面(B、A)。 タイトル(はsprintf( 'ポール・ゼロプロット')); %のpzplotz(B、A)。 %対応するシステム機能を直接形 K = 1。 B = Kの* Bと、%分母 A = A。%の分子 [DB、MAG、PHA、GRD、W] = freqz_m(B、A)。 %------------------------------------------------- -------------------- %最大ゲインは1に等しく、フィルタの利得パラメータを選択 --------------% -------------------------------------------------- ----- GAIN1 = maxの極を有する(MAG)% K = 1 / GAIN1 = freqz_m [DB、MAG、PHA、GRD、W(Kの* Bを、A)。 同図( 'NumberTitle'、 'OFF'、 '名前'、 '問題8.7 IIRローパスフィルタ') セット(GCF、 'カラー'、 '白')。 サブプロット(2,2,1)。プロット(W / PI、DB)。グリッド上; 軸([0 2 -60 10])。 セット(GCA、 'YTickMode'、 'マニュアル'、 'YTick'、[ - 60、-30,0]) セット(GCA、 'YTickLabelMode'、 'マニュアル'、 'YTickLabel'、[ '60'、 '30' ;」0' ])。 セット(GCA、 'XTickMode'、 'マニュアル'、 'のXTick'、[0,0.25,0.5,1,1.5,1.75,2])。 xlabel( '\型PI単位で周波数')。ylabelの( 'デシベル'); タイトル(「dBで振幅応答」); サブプロット(2,2,3)プロット(W / PI、MAG)。グリッド上; %の軸([0 1 -100 10])。 xlabel( '\型PI単位で周波数')。ylabelの( '絶対'); タイトル(' 絶対的でマグニチュード応答 '); セット(GCA、 'XTickMode'、 'マニュアル'、 'のXTick'、[0,0.25,0.5,1,1.5,1.75,2])。 セット(GCA、 'YTickMode'、 'マニュアル'、 'YTick'、[0,1.0])。 サブプロット(2,2,2)。プロット(W / PI、PHA)。グリッド上; %の軸([0 1 -100 10])。 xlabel( '\型PI単位で周波数')。ylabelの( 'ラッド'); タイトル(「ラジアンで位相応答」); サブプロット(2,2,4)。(PI、* GRD PI / 180 / w)のプロット。グリッド上; %の軸([0 1 -100 10])。 xlabel(」 セット(GCA、 'XTickMode'、 'マニュアル'、 'のXTick'、[0,0.25,0.5,1,1.5,1.75,2])。 %セット(GCA、 'YTickMode'、 'マニュアル'、 'YTick'、[0,1.0])。 %インパルス応答 のfprintf( '\ nは----------------------------------'); 関数fprintf( '\ nPartial分数展開方法:\ n'); [R、P、C = residuez(B、A) MR =(ABS(R)) '%残留マグニチュード AR =(角度(R))' PI単位/ PI%残留角度 融点=(ABS(P) ) '%ポールマグニチュード のAp =(角度(P))' /パイ%の極角PI単位で h_chk =フィルタ(B、デルタ)。%チェックシーケンス %------------------------------------------------- ----------------------------------------------- 時間=( 0.9 ^ n)の* 0.1056から0.0556 *デルタ。。。 %------------------------------------------------- ----------------------------------------------- フィギュア(」 NumberTitle」、 'オフ'、 '名前'、 '問題8.7のIIR LPフィルタ、H(n)はフィルタ及びINV-Zによって') セット(GCF、'カラー'、 ''白); サブプロット(2,1,1)。ステム(N、h_chk)。グリッド上; %の軸([0 2 -60 10])。 xlabel( 'N')。ylabelの( '時間の\ _chk')。タイトル(「フィルタによるインパルス応答列」); サブプロット(2,1,2)。ステム(N、H)。グリッド上; %の軸([0 1 -100 10])。 xlabel( 'N')。ylabelの( 'H')。タイトル( 'INV-Zによるインパルス応答列'); [DB、MAG、GRD、PHA、W] = freqz_m(H、[1])。 同図( 'NumberTitle'、 'OFF'、 '名前'、 '問題8.7 IIRフィルタH(n)のINV-Zによって') セット(GCF、'カラー'、 '白')。 サブプロット(2,2,1)。プロット(W / PI、DB)。グリッド上; 軸([0 2 -60 10])。 セット(GCA、 'YTickMode'、 'マニュアル'、 'YTick'、[ - 60、-30,0]) セット(GCA、 'YTickLabelMode'、 'マニュアル'、 'YTickLabel'、[ '60'、 '30' ;」0' ])。 セット(GCA、 'XTickMode'、 'マニュアル'、 'のXTick'、[0,0.25,1,1.75,2])。 xlabel( '\型PI単位で周波数')。ylabelの( 'デシベル'); タイトル(「dBで振幅応答」); サブプロット(2,2,3)プロット(W / PI、MAG)。グリッド上; %の軸([0 1 -100 10])。 xlabel( '\型PI単位で周波数')。ylabelの( '絶対'); タイトル(「絶対における振幅応答」); セット(GCA、 'XTickMode'、 'マニュアル'、 'のXTick'、[0,0.25,1,1.75,2])。 セット(GCA、 'YTickMode'、 'マニュアル'、 'YTick'、[0,1.0])。 サブプロット(2,2,2)。プロット(W / PI、PHA)。グリッド上; %の軸([0 1 -100 10])。 xlabel( '\型PI単位で周波数')。ylabelの( 'ラッド'); タイトル(「ラジアンで位相応答」); サブプロット(2,2,4)。(PI、* GRD PI / 180 / w)のプロット。グリッド上; %の軸([0 1 -100 10])。 xlabel( '\型PI単位で周波数')。ylabelの( 'ラッド'); タイトル(「群遅延」); セット(GCA、 'XTickMode'、 'マニュアル'、 'のXTick'、[0,0.25,1,1.75,2])。 %セット(GCA、 'YTickMode'、 'マニュアル'、 'YTick'、[0,1.0])。 %------------------------------------------------- - %デジタルIIRくし形フィルタ %------------------------------------------- ------- B = K * [1 0 0 0 0 0 1]。 = [1 0 0 0 0 0 -0.9]。 フィギュア(「NumberTitle」、「オフ」、「名前」、「問題8.7ポール・ゼロプロット」 ) z平面(B、A)。 タイトル(はsprintf( 'ポール・ゼロプロット')); [DB、MAG、GRD、PHA、W] = freqz_m(B、A)。 同図( 'NumberTitle'、 'OFF'、 '名前'、 '問題8.7 IIRくし形フィルタ') セット(GCF、 'カラー'、 '白')。 サブプロット(2,2,1)。プロット(W / PI、DB)。グリッド上; 軸([0 2 -60 10])。 セット(GCA、 'YTickMode'、 'マニュアル'、 'YTick'、[ - 60、-30,0]) セット(GCA、 'YTickLabelMode'、 'マニュアル'、 'YTickLabel'、[ '60'、 '30' ;」0' ])。 セット(GCA、 'XTickMode'、 'マニュアル'、 'のXTick'、[0,0.25,0.5,1,1.5,1.75,2])。 xlabel( '\型PI単位で周波数')。ylabelの( 'デシベル'); タイトル(「dBで振幅応答」); サブプロット(2,2,3)プロット(W / PI、MAG)。グリッド上; xlabel( '\型PI単位で周波数')。ylabelの( '絶対'); タイトル(「絶対における振幅応答」); セット(GCA、 'XTickMode'、 'マニュアル'、 'のXTick'、[0,0.25,0.5,1,1.5,1.75,2])。 セット(GCA、 'YTickMode'、 'マニュアル'、 'YTick'、[0,1.0])。 サブプロット(2,2,2)。プロット(W / PI、PHA)。グリッド上; %の軸([0 1 -100 10])。 xlabel( '\型PI単位で周波数')。ylabelの( 'ラッド'); タイトル(「ラジアンで位相応答」); サブプロット(2,2,4)。(PI、* GRD PI / 180 / w)のプロット。グリッド上; %の軸([0 1 -100 10])。 xlabel( '\型PI単位で周波数')。ylabelの( 'ラッド'); タイトル(「群遅延」); セット(GCA、 'XTickMode'、 'マニュアル'、 'のXTick'、[0,0.25,0.5,1,1.5,1.75,2])。 %セット(GCA、 'YTickMode'、 'マニュアル'、 'YTick'、[0,1.0])。 %インパルス応答 のfprintf( '\ nは----------------------------------'); 関数fprintf( '\ nPartial分数展開方法:\ n'); [R、P、 AR =(角度(R))」 AP =(角度(P)) 'PI単位/ PI%極角度 [デルタ、N] = impseq(0,0,300)。 h_chk =フィルタ(B、デルタ)。%チェックシーケンス %---------------------------------------------- -------------------------------------------------- %の利得パラメータK = 0.05 %------------------------------------------- -------------------------------------------------- --- %H = 0.0211 *((0.9791 ^ N)*(2 * COS(0.4 * PI * N)+ 2 * COS(0.8 * PI×n個)+ 1)。。) - 0.0556 *デルタ。%のL = 5。 H = 0.0176 *((0.9826 ^ N)*(2 * COS(2 *最も* N / 3)+ 2 * COS(* N / 3)+( - 1)^ N + 1)。。。) - 0.0556 *デルタ。%のL = 6。 %------------------------------------------------- ----------------------------------------------- フィギュア(」 NumberTitle」、 'オフ'、 '名前'、 '問題8.7櫛形フィルタ、H(n)はフィルタ及びINV-Zによって') セット(GCF、'カラー'、 '白 サブプロット(2,1,1)。ステム(N、h_chk)。グリッド上; %の軸([0 2 -60 10])。 xlabel( 'N')。ylabelの( '時間の\ _chk')。タイトル(「フィルタによるインパルス応答列」); サブプロット(2,1,2)。ステム(N、H)。グリッド上; %の軸([0 1 -100 10])。 xlabel( 'N')。ylabelの( 'H')。タイトル( 'INV-Zによるインパルス応答列'); [DB、MAG、GRD、PHA、W] = freqz_m(H、[1])。 同図( 'NumberTitle'、 'OFF'、 '名前'、「問題8.7櫛形フィルタ、INV-ZによってH(n)は') セット(GCF、' サブプロット(2,2,1)。プロット(W / PI、DB)。グリッド上; 軸([0 2 -60 10])。 セット(GCA、 'YTickMode'、 'マニュアル'、 'YTick'、[ - 60、-30,0]) セット(GCA、 'YTickLabelMode'、 'マニュアル'、 'YTickLabel'、[ '60'、 '30' ;」0' ])。 セット(GCA、 'XTickMode'、 'マニュアル'、 'のXTick'、[0,0.25,1,1.75,2])。ラジアンの位相応答); サブプロット(2,2,4)。(PI、* GRD PI / 180 / w)のプロット。グリッド上; %の軸([0 1 -100 10])。 xlabel( '\型PI単位で周波数')。ylabelの( 'デシベル'); タイトル(「dBで振幅応答」); サブプロット(2,2,3)プロット(W / PI、MAG)。グリッド上; %の軸([0 1 -100 10])。 xlabel( '\型PI単位で周波数')。ylabelの( '絶対'); タイトル(「絶対における振幅応答」); セット(GCA、 'XTickMode'、 'マニュアル'、 'のXTick'、[0,0.25,1,1.75,2])。 セット(GCA、 'YTickMode'、 'マニュアル'、 'YTick'、[0,1.0])。 サブプロット(2,2,2)。プロット(W / PI、PHA)。グリッド上; %の軸([0 1 -100 10])。 xlabel( '\型PI単位で周波数')。ylabelの( 'ラッド'); タイトル(「ラジアンで位相応答」); xlabel( '\型PI単位で周波数')。ylabelの( 'ラッド'); タイトル(「群遅延」); セット(GCA、 'XTickMode'、 'マニュアル'、 'のXTick'、[0,0.25,1,1.75,2])。 %セット(GCA、 'YTickMode'、 'マニュアル'、 'YTick'、[0,1.0])。
結果:
単一IIRローパスを計算するには、
ポール・ゼロ
L = 6次ローパス櫛、システムの関数として部分分数展開
図櫛極 - 零ローパスフィルタ。
振幅スペクトル、位相スペクトル、群遅延
0、π2の範囲で、見ることができるように、単一の低域は、元のスペクトルが六分の一に圧縮され、6回繰り返します。