フィルターのクリア

signal tool boxのlowpassについて

9 ビュー (過去 30 日間)
mushi77
mushi77 2022 年 4 月 8 日
編集済み: Hernia Baby 2022 年 4 月 13 日
ツールボックスに含まれるlowpassフィルタ機能を使って空間的な粗さ情報から細かな粗さを除去してうねり曲線を抽出しようとしています。
とりあえずサンプリング周期を0.1umとして100um幅で周期5umの正弦波を生成し、ローパスフィルタ関数で除去できるか試してみたのですが、どうにもフィルタリングがうまく行きません。
lowpass関数がどういったフィルタリング特性かわからっておらず、どうしたら狙いのフィルタ設定ができるようになるか教えてください。
%unit : um
samp=0.1; %サンプリング周期 0.1[um]
sampk=1/samp;
x=0:samp:100;
T=5; %正弦波周期5[um]
y=sin(2*pi*x/T); %正弦波生成
LPF=50; %LPFカットオフ周期?? 50[um]
yf=lowpass(y,1/LPF,sampk);
hold on
plot(x,y);
plot(x,yf);
hold off

採用された回答

Hernia Baby
Hernia Baby 2022 年 4 月 11 日
編集済み: Hernia Baby 2022 年 4 月 13 日
サンプリング周波数が原因と思いましたがどうも違うようです。
周期だとわかりにくかったので周波数で考えてみます。
samp=0.1;
sampk=1/samp;
fprintf('サンプリング周波数:%i MHz\nナイキスト周波数 :%i MHz',sampk,sampk/2);
サンプリング周波数:10 MHz ナイキスト周波数 :5 MHz
x=0:samp:100;
T=10;
fprintf('対象周波数   :%.1f MHz\nナイキスト周波数:%i MHz',1/T,sampk/2);
対象周波数   :0.1 MHz ナイキスト周波数:5 MHz
y=sin(2*pi*x/T);
ここまで問題ないことがわかりました。
LPFの設計に何かしら問題があるのかなと考えられます。
LPF=50;
fprintf('通過周波数:%.2f MHz\n対象周波数:%.1f MHz',1/LPF,1/T);
通過周波数:0.02 MHz 対象周波数:0.1 MHz
ここでも対象周波数よりも低い周波数でLPFを取っています。
ヘルプの図を見ると遷移領域があやしいと思われます。
ここで遷移領域を狭くするためSteepnessをいじってみましょう。
lowpass(y,1/LPF,sampk,'ImpulseResponse','iir','Steepness',0.9)
LPFがある程度うまくいっていることがわかりました。
本来であればもっと高周波で行うので、単位を略さずに計算すればあまり関係ないかもしれません。
うまくいかない場合は上記の図を参考にしながらLPF設計を行ってみてください。

その他の回答 (0 件)

カテゴリ

Help Center および File Exchangeスペクトル測定 についてさらに検索

製品


リリース

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!