問題8.43 "MATLABを使用したDSP」

コード:

%% ------------------------------------------------ ------------------------ 
%%出力このMファイルに関する情報
のfprintf( '\ nは************ *********************************************** \ n」は); 
関数fprintf( '通報8.43 <MATLABを使用してDSP> \ n \ n'); 

バナー(); 
%% ------------------------------------------------ ------------------------ 

%デジタルハイパスフィルタ仕様:
wphp = 0.4 *パイ。ラジアンにおける%デジタル通過帯域FREQ 
wshp = 0.3 * PI。ラジアンにおける%デジタルストップバンドFREQ 
Rpと= 1.0。%の通過帯域リップルdBで
同様= 40。%阻止帯域減衰量dBで

リップル= 10 ^(-Rp / 20)%の通過帯域リップル絶対に 
絶対に事務局担当= 10 ^(-As / 20)%の阻止帯域減衰

関数fprintf( '\ nは*******デジタルハイパス、ダイレクトフォーム係数*********** \ n'); 
%[BHP、AHP] = butthpf(wphp、wshp、RP、として)
%[BHP、AHP] = cheb1hpf(wphp、wshp、RP、として)
%[BHP、AHP] = cheb2hpf(wphp、wshp、RP、として)
[BHP、AHP] = eliphpf(wphp、wshp、RP、同様)。
[C、B、A] = dir2cas(BHP、AHP)

周波数応答の%の計算:
%[DBLP、maglp、phalp、grdlp、WWLP] = freqz_m(BLP、ALP)。
[DBHP、maghp、phahp、grdhp、wwhp] = freqz_m(BHP、AHP)。

%------------------------------------------------- -------------- 
%見つける実際通過帯域リップルと最小阻止域減衰 
%-------------------------- -------------------------------------
delta_w = 2 * PI / 1000。
Rp_hp = - (MIN(DBHP(CEIL(wphp / delta_w + 1):1:501)))。%実際の通過帯域リップル

関数fprintf( '\ n actual個の通過帯域リップルをデシベル.4f%である\ n'、Rp_hp)。

As_hp = -Round(MAX(DBHP(1:1:CEIL(wshp / delta_w)+1)))。%最小阻止帯域減衰
関数fprintf( '\ NMIN阻止帯域減衰をデシベル.4f%である\ n \ n'、As_hp)。

%% ------------------------------------------------ ----------------- 
%%プロット
%% [0、5kHzの] INTEVALにわたる全体的なアナログフィルタ
%% --------------- --------------------------------------------------   

( 'eliphpf関数によって通報8.43楕円ハイパス' NumberTitle」、 'OFF'、 '名前'、)図
セット(GCF、 'カラー'、 '白')。
M = 1。%オメガ最大
Fsを= 10。10キロヘルツの%のサンプリング・レート

サブプロット(2,2,1)。プロット(wwhp * FS / IS(2 * PI)、maghp)。グリッド上;%軸([0、M、0、1.2])。
%のは、xlabel( '\ PI単位でデジタル周波数')。
xlabel(「キロヘルツ単位でアナログ周波数」)。
ylabelの( '| H |'); タイトル(「ハイパスフィルタ振幅応答」); 
セット(GCA、 'XTickMode'、 'マニュアル'、 'のXTick'、[0、0.3、0.4、M] * FS / IS 2)。
セット(GCA、 'YTickMode'、 'マニュアル'、 'YTick'、[0、0.8913、1])。

サブプロット(2,2,2)。プロット(wwhp * FS / IS(2 * PI)、DBHP)。グリッド上;%軸([0、M、-100、2])。
%のは、xlabel( '\ PI単位でデジタル周波数')。
xlabel(「キロヘルツ単位でアナログ周波数」)。
ylabelの( 'デシベル'); タイトル(「dBでハイパスフィルタマグニチュード」); 
セット(GCA、 'XTickMode'、 'マニュアル'、 ' XTick」、[0、0.3、0.4、M] * FS / IS 2)。
セット(GCA、 'YTickMode'、 'マニュアル'、 'YTick'、[-70、-40、-1,0])。
セット(GCA、 'YTickLabelMode'、 'マニュアル'、 'YTickLabel'、[ '70'、 '40'、 '1 '' 0'])。


サブプロット(2,2,3)プロット(wwhp * FS / IS(2 * PI)、phahp / PI)。グリッド上; %の軸([0、M、-1.1、1.1])。
%は、xlabel( '\パイニュイにおけるデジタル周波数'); 
xlabel(「キロヘルツ単位でアナログ周波数」)。
ylabelの( '\パイ単位ラジアン'); タイトル(「ハイパスフィルタ位相応答」); 
セット(GCA、 'XTickMode'、 'マニュアル'、 'のXTick'、[0、0.3、0.4、M] * FS / IS 2)。
セット(GCA、 'YTickMode'、 'マニュアル'、 'YTick'、[-1:1:1])。

サブプロット(2,2,4)。プロット(wwhp * FS / IS(2 * PI)、grdhp)。グリッド上; %の軸([0、M、0、25])。
%のは、xlabel( '\ PI単位でデジタル周波数')。
xlabel(「キロヘルツ単位でアナログ周波数」)。
ylabelの( 'サンプル'); タイトル(「ハイパスフィルタ群遅延」);
セット(GCA、 'YTickMode'、 'マニュアル'、 'YTick'、[夜12時10分25秒])。



%------------------------------------------------- --------- 
%パート2デジタルプロトタイプローパスフィルタ
%--------------------------------- ------------------------- 
%デジタルローパスフィルタ仕様:
[wpLP、WSLP、α= hp2lpfre(wphp、wshp)。

楕円LPフィルタパラメータの%の計算:
[N、WN] = ellipordは(wpLP / PI、WSLP / PI、RP、同様)。
関数fprintf( '\ nは**********楕円フィルタオーダー=%3.0F \ N'、N) 
デジタル楕円ローパスフィルタの設計:
[BLP、ALP] = ellipでは(N、RP、として、WN 、 '低'); 

[C、B、A] = dir2cas(BLP、ALP)

周波数応答の%の計算:
[DBLP、maglp、phalp、grdlp、WWLP] = freqz_m(BLP、ALP)。


%------------------------------------------------- -------------- 
%実際の通過帯域リップルとMin阻止帯域減衰が見つかり
%-------------------------- ------------------------------------- 
delta_w = 2 * PI / 1000; 
Rp_lp = - (MIN(DBLP(1:1:CEIL(wpLP / delta_w + 1)+1)))。%実際の通過帯域リップル

のfprintf( '\ n actual個の通過帯域リップルをデシベル.4f%である\ n'、Rp_lp)。

As_lp = -Round(MAX(DBLP(CEIL(WSLP / delta_w)+1):1:501)); %最小阻止帯域減衰
関数fprintf( '\ NMIN阻止帯域減衰をデシベル.4f%である\ n \ n'、As_lp)。

%% ------------------------------------------------ -----------------
%%プロット
%% --------------------------------------------- --------------------   

( 'ellipでは機能によって、問題8.43楕円プロトタイプローパス' 'NumberTitle'、 'オフ'、 '名前'、)フィギュア
セット(GCF」色」、 『』白)。
サブプロット(2,2,2)。プロット(WWLP / PI、DBLP)。軸([0、M、-100、2])。グリッド上; 
xlabel(「\パイ単位でデジタル周波数」); ylabelの( 'デシベル');
M = 1。%オメガ最大

サブプロット(2,2,1)。プロット(WWLP / PI、maglp)。軸([0、M、0、1.2])。グリッド上; 
xlabel(「\パイ単位でデジタル周波数」); ylabelの( '| H |'); 
タイトル(「ローパスフィルターの振幅応答」); 
セット(GCA、 'XTickMode'、 'マニュアル'、 'のXTick'、[0、wpLP、WSLP、π/ PI)。
セット(GCA、 'YTickMode'、 'マニュアル'、 'YTick'、[0、0.8913、1])。

タイトル(「dBでローパスフィルタ振幅」); 
セット(GCA、 'XTickMode'、 'マニュアル'、 'のXTick'、[0、wpLP、WSLP、π/ PI)。
セット(GCA、 'YTickMode'、 'マニュアル'、 'YTick'、[-70、-40、-1,0])。
セット(GCA、 'YTickLabelMode'、 'マニュアル'、 'YTickLabel'、[ '70'、 '40'、 '1 '' 0' ])。


サブプロット(2,2,3)プロット(WWLP / PI、phalp / PI)。軸([0、M、-1.1、1.1])。グリッド上;
xlabel(「\パイニュイにおけるデジタル周波数」); ylabelの( '\パイ単位ラジアン'); 
タイトル(「ローパスフィルタ位相応答」); 
セット(GCA、 'XTickMode'、 'マニュアル'、 'のXTick'、[0、wpLP、WSLP、π/ PI)。
セット(GCA、 'YTickMode'、 'マニュアル'、 'YTick'、[-1:1:1])。

サブプロット(2,2,4)。プロット(WWLP / PI、grdlp)。軸([0、M、0、25])。グリッド上; 
xlabel(「\パイ単位でデジタル周波数」); ylabelの( 'サンプル'); 
タイトル(「ローパスフィルタ群遅延」);
セット(GCA、 'XTickMode'、 'マニュアル'、 'のXTick'、[0、wpLP、WSLP、π/ PI)。
セット(GCA、 'YTickMode'、 'マニュアル'、 'YTick' [0:5:25])。




[N、WN] = ellipordは(wphp / PI、wshp / PI、RP、同様)。
関数fprintf( '\ n **********楕円フィルタの次数=%3.0F \ N'、N) 
デジタル楕円ハイパスフィルタ設計:
[BHP、AHP] = ellipでは(N、RP、として、WN 、 '高いです'); 

[C、B、A] = dir2cas(BHP、AHP)

周波数応答の%の計算:
%[DBLP、maglp、phalp、grdlp、WWLP] = freqz_m(BLP、ALP)。
[DBHP、maghp、phahp、grdhp、wwhp] = freqz_m(BHP、AHP)。

%------------------------------------------------- --------------
%は、実際の通過帯域リップルとMin遮断帯域減衰見つける
%を---------------------------------------- ----------------------- 
delta_w = 2 * PI / 1000; 
Rp_hp = - (MIN(DBHP(CEIL(wphp / delta_w + 1):1:501)))。%実際の通過帯域リップル

のfprintf( '\ n actual個の通過帯域リップルをデシベル.4f%である\ n'、Rp_hp)。

As_hp = -Round(MAX(DBHP(1:1:CEIL(wshp / delta_w)+1)))。%最小阻止帯域減衰
関数fprintf( '\ NMIN阻止帯域減衰をデシベル.4f%である\ n \ n'、As_hp)。

%% ------------------------------------------------ ----------------- 
%%プロット
%% ---------------------------- -------------------------------------  
 
図( 'NumberTitle'、 'off'に、 '名前' )、「ellipでは機能することによって、問題8.43楕円ハイパス」
セット(GCF、「カラー」、「白」)。
M = 1。%オメガ最大

サブプロット(2,2,1)。プロット(wwhp / PI、maghp)。軸([0、M、0、1.2])。グリッド上; 
xlabel(「\パイ単位でデジタル周波数」); ylabelの( '| H |'); タイトル(「ハイパスフィルタ振幅応答」);
セット(GCA、 'XTickMode'、 'マニュアル'、 'のXTick'、[0、0.3、0.4、M])。
セット(GCA、 'YTickMode'、 'マニュアル'、 'YTick'、[0、0.8913、1])。

サブプロット(2,2,2)。プロット(wwhp / PI、DBHP)。軸([0、M、-100、2])。グリッド上; 
xlabel(「\パイ単位でデジタル周波数」); ylabelの( 'デシベル'); タイトル(「dBでハイパスフィルタマグニチュード」); 
セット(GCA、 'XTickMode'、 'マニュアル'、 'のXTick'、[0、0.3、0.4、M])。
セット(GCA、 'YTickMode'、 'マニュアル'、 'YTick'、[-70、-40、-1,0])。
セット(GCA、 'YTickLabelMode'、 'マニュアル'、 'YTickLabel'、[ '70'、 '40'、 '1 '' 0'])。


サブプロット(2,2,3)プロット(wwhp / PI、phahp / PI)。軸([0、M、-1.1、1.1])。グリッド上; 
xlabel(」\パイニュイ)におけるデジタル周波数。ylabelの( '\パイ単位ラジアン'); タイトル(「ハイパスフィルタ位相応答」);
セット(GCA、 'XTickMode'、 'マニュアル'、 'のXTick'、[0、0.3、0.4、M])。
セット(GCA、 'YTickMode'、 'マニュアル'、 'YTick'、[-1:1:1])。

サブプロット(2,2,4)。プロット(wwhp / PI、grdhp)。軸([0、M、0、25])。グリッド上; 
xlabel(「\パイ単位でデジタル周波数」); ylabelの( 'サンプル'); タイトル(「ハイパスフィルタ群遅延」); 
セット(GCA、 'XTickMode'、 'マニュアル'、 'のXTick'、[0、0.3、0.4、M])。
セット(GCA、 'YTickMode'、 'マニュアル'、 'YTick' [0:5:25])。

  結果:

       通過帯域、阻止帯域の設計仕様、絶対値の単位

        システムの関数としての一連の係数の楕円デジタルハイパスフィルタ、順序5のオーダーであります

        eliphpf関数を使用して、楕円デジタルハイパス設計、振幅スペクトル、位相及び群遅延応答スペクトル

 

        第2の小問題は、デジタルローパスプロトタイプの振幅スペクトルを描きます。

        システムの関数としての一連の係数の楕円デジタルローパスフィルタ、

        ellipでは関数(MATLABツールボックス機能)、楕円デジタルハイパスフィルタの設計を使用して、システム機能タンデム係数を次のように、

        振幅スペクトルと位相スペクトル、群遅延応答以下

 

おすすめ

転載: www.cnblogs.com/ky027wh-sx/p/11832292.html