signal tool boxのlowpassについて
12 ビュー (過去 30 日間)
古いコメントを表示
ツールボックスに含まれる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
0 件のコメント
採用された回答
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);
x=0:samp:100;
T=10;
fprintf('対象周波数 :%.1f MHz\nナイキスト周波数:%i MHz',1/T,sampk/2);
y=sin(2*pi*x/T);
ここまで問題ないことがわかりました。
LPFの設計に何かしら問題があるのかなと考えられます。
LPF=50;
fprintf('通過周波数:%.2f MHz\n対象周波数:%.1f MHz',1/LPF,1/T);
ここでも対象周波数よりも低い周波数でLPFを取っています。
ヘルプの図を見ると遷移領域があやしいと思われます。
ここで遷移領域を狭くするためSteepnessをいじってみましょう。
lowpass(y,1/LPF,sampk,'ImpulseResponse','iir','Steepness',0.9)
LPFがある程度うまくいっていることがわかりました。
本来であればもっと高周波で行うので、単位を略さずに計算すればあまり関係ないかもしれません。
うまくいかない場合は上記の図を参考にしながらLPF設計を行ってみてください。
0 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で 平滑化とノイズ除去 についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!