デジタルフィルタのボード線図
15 次查看(过去 30 天)
显示 更早的评论
デジタルフィルタモデルのボード線図をM-ファイルで記述したコマンドで求めたい。 周波数はHzとしたい。 合わせてExcelでも描画するために、freq.dat、gain.dat、phase.datデータを発生したい。
0 个评论
回答(1 个)
Akira Agata
2017-8-24
编辑:Akira Agata
2017-8-24
以下の例は、サンプリング周波数を 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 个评论
Akira Agata
2017-8-24
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');
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 デジタル フィルター解析 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!