signal tool boxのlowpassについて
10 views (last 30 days)
Show older comments
ツールボックスに含まれる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 Comments
Accepted Answer
Hernia Baby
on 11 Apr 2022
Edited: Hernia Baby
on 13 Apr 2022
サンプリング周波数が原因と思いましたがどうも違うようです。
周期だとわかりにくかったので周波数で考えてみます。
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 Comments
More Answers (0)
See Also
Categories
Find more on 平滑化とノイズ除去 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!