デジタルフィルタのボード線図
15 views (last 30 days)
Show older comments
デジタルフィルタモデルのボード線図をM-ファイルで記述したコマンドで求めたい。 周波数はHzとしたい。 合わせてExcelでも描画するために、freq.dat、gain.dat、phase.datデータを発生したい。
0 Comments
Answers (1)
Akira Agata
on 24 Aug 2017
Edited: Akira Agata
on 24 Aug 2017
以下の例は、サンプリング周波数を 1kHz として、Kaiserウィンドウを用いた80次のFIRローパスフィルタの周波数応答をテーブル型変数 Output に保存のうえExcelファイルとして出力します。
fs = 1000;
b = fir1(80,0.5,kaiser(81,8));
[h, f] = freqz(b,1,[],fs)
Output = table(f,abs(h),rad2deg(unwrap(angle(h))),...
'VariableNames',{'freq','response','phase'});
writetable(Output,'bodePlot.xls');
3 Comments
Akira Agata
on 24 Aug 2017
fdatoolで設計したフィルタから周波数応答を求める場合は、設計後にツールバーから[ファイル] ⇒ [MATLABコードを生成] ⇒ [フィルタ設計関数] を選択して関数を生成して下さい(この関数を呼び出すことで、設計したフィルタのdfiltオブジェクトが生成されます)。
例えばfdatoolでフィルタを設計後、フィルタ設計関数を生成して 'myFiltDesign.m' というファイル名で保存したとします。このフィルタの周波数応答を求めるには、以下のようにすれば求めることができます。
% fdatoolで設定したサンプリング周波数
fs = 1000;
% 設計したフィルタのdfiltオブジェクトを生成
b = myFiltDesign();
% 生成する評価点の数
n = 1024;
[h, f] = freqz(b,n,fs);
Output = table(f,abs(h),rad2deg(unwrap(angle(h))),...
'VariableNames',{'freq','response','phase'});
writetable(Output,'bodePlot.xls');
See Also
Categories
Find more on デジタル フィルター解析 in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!