「MATLABを使用したDSP「問題8.30

        10月1日、壮大な式典、きちんとした正方形の、高度な武器、祖先の英雄に敬意を見て午前中に新中国70歳の誕生日は、幸せな人々は、我々はしたいと思います

ナショナルは、人々の生活良くなっ、良くなって。

       そして、問題を行います。

コード:

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

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

%------------------------- ---------- 
%ω=(2 / T)を黄褐色(ω/ 2)   
%ω= 2×ATAN(ΩT/ 2)] 
%デジタルフィルタ仕様:
%------- ---------------------------- 
WP = * PI 0.4。RADの中%デジタル通過帯域FREQ 
= 0.6 * PI WS。ラジアンにおける%デジタルストップバンドFREQ 
Rpと= 0.5。dBで%の通過帯域のリップル
50 =として。dB単位%の阻止帯域減衰

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

%アナログプロトタイプ仕様:周波数に対して逆写像
T = 2。%セットT = 1つの
Fsの= 1 / T。
OmegaP =(2 / T)*黄褐色(WP / 2)。%プロトタイプ通過帯域FREQの
オメガ=(2 / T)*黄褐色(WS / 2)。%プロトタイプストップバンドFREQの

%アナログバターワースプロトタイプフィルタの計算:
[CS、DS = afd_butt(OmegaP、オメガ、RP、同様)。

2次セクションの%の計算: 
関数fprintf( 's平面における\ N *****カスケード型:***** STARTの\ n');
[CS、BS、AS] = sdir2cas(CS、DS)。
関数fprintf( 's平面における\ N *****カスケード型:END *****の\ n');

周波数応答の%の計算:
[db_s、mag_s、pha_s、ww_s] = freqs_m(CS、DS、2 * PI / T)。


%------------------------------------------------- ------------------- 
%所与dBの仕様の正確なバンドエッジ周波数を見つける
%------------------ -------------------------------------------------- 
%のIND =検索(ABS(CEIL(db_s)) - 50 == 0)
[diff_to_50dB、IND =分(ABS(db_s + 50))
db_s(IND-3:IND + 3)%の振幅応答のdB 

ww_s( IND)/(PI)KPI単位%アナログ周波数
ヘルツ単位の%ww_s(IND)/(2 * PI)%アナログ周波数

[SA、インデックス]は、ソート(ABS(db_s + 50 =))。 
AC_Hz = ww_s(指数(1:8))/(2 * PI)
AA_dB = db_s(指数(1:8))
AB_rad = ww_s(指数(1:8))/(PI) 
%IND =見つける(ABS(CEIL(DB)) - 50 == 0)
%------------------------------------------------- ------------------ 


インパルス応答の%の計算:
[HA、X、T] =インパルス(CS、DS)。


%インパルス不変変換:
%の[Bを、] = imp_invr(CS、DS、T)。

%双一次変換
[B、A] =バイリニア(CS、DS、FS)。
[C、B、A] = dir2cas(B、A)。

周波数応答の%の計算:
[DB、MAG、PHA、GRD、WW = freqz_m(B、A)。

%------------------------------------------------- ------------------- 
%所与dBの仕様の正確なバンドエッジ周波数を見つける
%------------------ -------------------------------------------------- 
[diff_to_80dB、IND =分(ABS(DB + 50))
DB(IND-3:IND + 3)%の振幅応答のdB 

WW(IND)/(PI) のWW(IND)* Fsを/(2 * PI)

(2 / T)*黄褐色(WW(IND)/ 2 )/ PI         

[SA、インデックス] =ソート(ABS(DB + 50))。
AA_dB = DB(指数(1:8))」
AB_rad = WW(指数(1:8)) '/パイ
AC_Hz =(2 / T)*黄褐色(WW(指数(1:8))' / 2)/パイ
%------------------------------------------------ ------------------- 


%% ----------------------------- ------------------------------------ 
%%プロット
%% --------- -------------------------------------------------- ------   
図( 'NumberTitle'、 'OFF'、 '名前'、 '問題8.30アナログバターワースローパス') 
セット(GCF」
M = 1。%オメガ最大'手動'、 'のXTick'、[-0.876、-0.463、0、0.463、0.8591、0.876])。%T = 1

サブプロット(2,2,1)。プロット(ww_s / PI、mag_s)。グリッド上; 軸([ - M、M、0、1.2])。
xlabel(」\のPI単位でアナログ周波数)。ylabelの( '| H |'); タイトル(「絶対でマグニチュード」); 
%セット(GCA、 'XTickMode'、 'マニュアル'、 'のXTick'、[-0.876、-0.463、0、0.463、0.876])。%T = 1 
セット(GCA、 'XTickMode'、 'マニュアル'、 'のXTick'、[-0.44、-0.23、0、0.23、0.44])。%T = 2 
セット(GCA、 'YTickMode'、 'マニュアル'、 'YTick'、[0、0.0032、0.5、0.9441、1])。

サブプロット(2,2,2)。プロット(ww_s / PI、db_s)。グリッド上; 軸([ - M、M、-100、10])。
xlabel(「\のPI単位でアナログ周波数」)。ylabelの( 'デシベル'); タイトル( 'dBでマグニチュード'); 
%セット(GCA、 'XTickMode'、 'マニュアル'、 'のXTick'、[-0.876、-0.463、0、0。463、0.8591、0.876])。%T = 1
セット(GCA、 'XTickMode'、 'マニュアル'、 'のXTick'、[-0.44、-0.23、0、0.23、0.4295、0.44])。%T = 2 
セット(GCA、 'YTickMode'、 'マニュアル'、 'YTick'、[-90、-50、-1,0])。
セット(GCA、 'YTickLabelMode'、 'マニュアル'、 'YTickLabel'、[ '90'、 '50'、」1 '' 0' ])。

サブプロット(2,2,3)プロット(ww_s / PI、pha_s / PI)。グリッド上; 軸([ - M、M、-1.2、1.2])。
xlabel(「\パイのニュイにおけるアナログ周波数」); ylabelの( 'ラジアン'); タイトル(「位相応答」); 
セット(GCA、 'XTickMode'、 'マニュアル'、 'のXTick'、[-OmegaS、-OmegaP、0、OmegaP、オメガ] / PI)。
セット(GCA、 'YTickMode'、 'マニュアル'、 'YTick'、[-1:0.5:1])。

サブプロット(2,2,4)。プロット(T、HA)。グリッド上; %の軸([0、30、-0.05、0.25])。
xlabel( '秒単位の時間'); ylabelの( 'ヘクタール(トン)'); タイトル(「インパルス応答」);


同図( 'NumberTitle'、 'OFF'、 '名前'、 'afd_butt機能によって、問題8.30デジタルバターワースローパス')
セット(GCF、 'カラー'、 '白')。
M = 2。%オメガ最大

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

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

サブプロット(2,2,3)プロット(WW / PI、DB)。軸([0、M、-100、10])。グリッド上; 
xlabel(「\パイ単位でデジタル周波数」); ylabelの( 'デシベル'); タイトル( 'dBでマグニチュード'); 
%セット(GCA、 'XTickMode'、 'マニュアル'、 'のXTick'、[0、0.4、0.594、0.6、1.0、M])。%T = 1 
セット(GCA、 'XTickMode'、 'マニュアル'、 'のXTick'、[0、0.4、0.594、0.6、1.0、M])。%T = 2 
セット(GCA、 'YTickMode'、 'マニュアル'、 'YTick'、[-70、-50、-1,0])。
セット(GCA、 'YTickLabelMode'、 'マニュアル'、 'YTickLabel'、[ '70'、 '50'、」1 '' 0' ])。

サブプロット(2,2,4)。プロット(WW / PI、GRD)。グリッド上; %の軸([0、M、0、35])。
xlabel(「\パイ単位でデジタル周波数」); ylabelの( 'サンプル'); タイトル(「群遅延」); 
%セット(GCA、 'YTickMode'、 'マニュアル'、 'YTick' [0:5:35])。

フィギュア(「NumberTitle」、「オフ」、「名前」、「問題8.30ポール・ゼロプロット」)
セット(GCF、 'カラー'、 '白')。
z平面(B、A)。
タイトル(はsprintf( 'ポール・ゼロプロット')); 
%のpzplotz(B、A)。




%---------------------------------------------- 
の%の計算インパルス応答
%---------------------------------------------- 
フィギュア( 'NumberTitle'、 'OFF'、 '名前'、 '問題8.30インプ&応答のFreq')
セット(GCF、 'カラー'、 '白')。
T = [0:0.5:60]。サブプロット(2,1,1)。インパルス(CS、DS、T)。グリッド上; アナログフィルタの%インパルス応答
軸([0,60、-0.3,0.5])に保持

N = [0:1:60 / T]。HN =フィルタ(B、impseq(0,0,60 / T))。デジタルフィルタの%インパルス応答 
幹(N * T、HN)。xlabel(「秒の時間」)。タイトル(のsprintf( 'インパルス応答、T =%のF'、T))。
延期

周波数応答の%の計算を:
[DBS、雑誌、PHA類、WWS] = freqs_m(CS、DS、2 * PI / T)。%アナログ周波数Sドメイン   

[DBZ、magz、phaz、grdz、WWZ] = freqz_m(B、A)。%デジタルのzドメイン

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

サブプロット(2,1,2) ; プロット(WWS /(2 * PI)、雑誌* Fsは、 'B +'、WWZ /(2 * PI)* Fsは、magz、 'R'); グリッド上; 

xlabel( 'Hzの周波数')。タイトル(「振幅応答」); ylabelの( 'マグニチュード'); 

テキスト(-0.3,0.15、 'アナログフィルタ'、 '色'、 'B')。テキスト(0.4,0.55、 'デジタルフィルタ'、 '色'、 'R');



%% ++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++ 
%アナログプロトタイプ注文計算:
N = CEIL((log10の((10 ^(。RP / 10)-1)/(10 ^( AS / 10)-1)))/(2 * log10の(OmegaP /オメガ)))。
関数fprintf( '\ n \ nは**********バタワースオーダー=%の3.0Fの\フィルターN'、N)

OmegaC = OmegaP /((10 ^(。RP / 10)-1)^(1 / (2 * N)))。%アナログBWプロトタイプ遮断FREQ 
WN = 2×ATAN((OmegaC * T)/ 2)。%デジタルBWカットFREQの

%デジタルバタワースフィルタの設計:
WN = WN / PI; %デジタルPI単位でバターワース遮断FREQ 

[B、A] =バター(N、WN)。[C、B、A] = dir2cas(B、

[DB、MAG、PHA、GRD、WW = freqz_m(B、A)。手動」、 'YTick'、[-1:1:1])。
サブプロット(2,2,3)プロット(WW / PI、DB)。軸([0、M、-100、10])。グリッド上;

フィギュア(「NumberTitle」、「オフ」、「名前」、「バター機能による問題8.30デジタルバタワースローパス」)
セット(GCF、「色」、
M = 2。%オメガ最大

サブプロット(2,2,1)。プロット(WW / PI、MAG)。軸([0、M、0、1.2])。グリッド上; 
xlabel(」\型PI単位で周波数)。ylabelの( '| H |'); タイトル(「振幅応答」); 
セット(GCA、 'XTickMode'、 'マニュアル'、 'のXTick'、[0、0.4、0.6、1.0、M])。
セット(GCA、 'YTickMode'、 'マニュアル'、 'YTick'、[0、0.0032、0.5、0.9441、1])。

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

xlabel( '\型PI単位で周波数')。ylabelの( 'デシベル'); タイトル( 'dBでマグニチュード');
セット(GCA、 'XTickMode'、 'マニュアル'、 'のXTick'、[0、0.4、0.6、1.0、M])。
セット(GCA、 'YTickMode'、 'マニュアル'、 'YTick'、[-70、-50、-1,0])。
セット(GCA、 'YTickLabelMode'、 'マニュアル'、 'YTickLabel'、[ '70'、 '50'、」1 '' 0' ])。

サブプロット(2,2,4)。プロット(WW / PI、GRD)。グリッド上; %の軸([0、M、0、35])。
xlabel( '\型PI単位で周波数')。ylabelの( 'サンプル'); タイトル(「群遅延」); 
セット(GCA、 'XTickMode'、 'マニュアル'、 'のXTick'、[0、0.4、0.6、1.0、M])。
%セット(GCA、 'YTickMode'、 'マニュアル'、 'YTick' [0:5:35])。

フィギュア( 'NumberTitle'、 'オフ'、 '名前'、 '問題8.30ポール・ゼロプロット')
セット(GCF、 '色'、」白い'); 
z平面(B、A)。
タイトル(はsprintf( 'ポール・ゼロプロット'));
%のpzplotz(B、A)。


%---------------------------------------------- 
の%の計算インパルス応答
%---------------------------------------------- 
数字(」 NumberTitle」、 'オフ'、 '名前'、 '問題8.30インプ&応答のFreq')
セット(GCF、 'カラー'、 '白')。
T = [0:0.5:60]。サブプロット(2,1,1)。インパルス(CS、DS、T)。グリッド上; アナログフィルタの%インパルス応答
軸([0,60、-0.3,0.5])に保持

N = [0:1:60 / T]。HN =フィルタ(B、impseq(0,0,60 / T))。デジタルフィルタの%インパルス応答
幹(N * T、HN)。xlabel(「秒の時間」)。タイトル(のsprintf( 'インパルス応答、T =%のF'、T))。
ホールドオフ

周波数応答の%を計算する:
[DBS、雑誌、PHA類、WWS] = freqs_m(CS、DS、2 * PI / T)。%アナログ周波数Sドメイン   

[DBZ、magz、phaz、grdz、WWZ] = freqz_m(B、A)。

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

サブプロット(2,1,2)。プロット(WWS /(2 * PI)、雑誌* Fsは、 'B +'、WWZ /(2 * PI)* Fsは、magz、 'R'); グリッド上; 

xlabel( 'Hzの周波数')。タイトル(「振幅応答」); ylabelの( 'マグニチュード'); 

テキスト(-0.3,0.15、 'アナログフィルタ'、 '色'、 'B')。テキスト(0.4,0.55、 'デジタルフィルタ'、 '色'、 'R');

  結果:

       ダイレクトフォーム係数の非正規化されたアナログプロトタイプバターワースローパスフィルタ、

        フォームのアナログローパス係数シリーズ:

        次のようにバイリニアにより、デジタルバターワース低域に、直接型変換係数

        デジタル低域通過係数タンデム

        アナログバターワースローパスプロトタイプフィルタのスペクトル、位相スペクトルとインパルス応答の振幅

        バイリニアは、振幅スペクトルと位相スペクトルから、デジタルバターワースローパスフィルタを得るために、群遅延応答を変換します

        図1のシステムのデジタルローパス極 - 零機能。

        下半分の図の上部は、アナログ低域と低域インパルス応答デジタル比較は、一貫性のない形態を見ることができます。

        バターは、デジタルローパス、その振幅スペクトルと位相スペクトル、群遅延を決定するためのMATLAB関数が付属しています。

        上記で得られた機能afd_buttの結果、位相及び群遅延スペクトルと比較してわずかに異なっています。

        極 - 零点プロットは、近いゼロによって部分的に、またわずかに異なっています。

         インパルス応答は、違いを見ることができません。

 

おすすめ

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