理想的な低域通過フィルタにかけた信号のグラフ(横軸:時間、縦軸:電圧)について
21 ビュー (過去 30 日間)
古いコメントを表示
Trace_1は「Trace_1(:,1):時間、Trace_1(:,2):電圧」になっています。
Trace_1を理想的なLPF( 周波数が10MHz以上なら利得が0 )にかけた時の「Trace_1のグラフ(横軸:時間、縦軸:電圧)」を出力したいです。
butter(https://jp.mathworks.com/help/signal/ref/butter.html)やlowpass(https://jp.mathworks.com/help/signal/ref/lowpass.html)を使うと理想的なLPFが出来ないので次のような方法で理想的なLPFを作成し、LPFに通した後の信号を逆フーリエ変換することを検討しています。
手順1 Trace1をフーリエ変換する。
手順2 周波数が10MHz以上なら利得0にする。(理想的なLPFの作成)
手順3 LPFにかけた信号を逆フーリエ変換する。(横軸:時間、縦軸:電圧)
どのようにプログラムをかけば、理想的なLPFにかけたあとの信号を逆フーリエ変換することが出来ますか?ご回答お待ちしております。
0 件のコメント
採用された回答
Yoshio
2019 年 11 月 2 日
編集済み: Yoshio
2019 年 11 月 2 日
理想的なLPFは、物理的に実現できないので、どのような意味があるかはわかりませんが、実現できたと想定した場合の特性は計算はできると思います。
x = Trace_1(:,2)として
手順1 xのフーリエ変換X = fft(x)を求めます
手順2 周波数信号Xの内、10Mz ~ サンプリング周波数/2 に相当する要素に0をいれ、Xfilterとします。
手順3 この信号の逆フーリエ変換をy = ifft(Xfilter)として求めます。
フーリエ変換を参考にされてください。
注意する点は手順2で、フーリエ変換Xには正の周波数と負の周波数の部分があるので、負の(10Mz ~ サンプリング周波数/2)の部分にも忘れずに0を入れないと、結果の信号yが実数になりません。
5 件のコメント
Yoshio
2019 年 11 月 3 日
編集済み: Yoshio
2019 年 11 月 3 日
まず
フーリエ変換を見て、例題をコピーして実行し理解してみてください。
y = fft(x);
f = (0:length(y)-1)*50/length(y);
の部分がヒントです。 この例でたとえば40Hz以上のyの振幅を0にするには、yの該当する要素のどこに0をいれるか、と同じ問題です。この例を理解できたら、
x = Trace_1(:,2)
X = fft(x);
% f 軸を設定する
plot(f,abs(X))
とすることで、10Mzの信号が正しく(2本)プロットされるはずですし、Xのどの要素を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!