LPFに通した信号の逆フーリエ変換について

Trace_1をフーリエ変換した後にLPFにかけるプログラムを作成しました。LPFに通した信号を逆フーリエ変換する方法 (横軸:時間、縦軸:電圧のグラフを書く方法) を教えて頂けませんか? ご回答をお待ちしております。
t = Trace_1(:,1);
x = Trace_1(:,2);
L1 = t(end)-t(1);
fs = 1/(t(2)-t(1));%サンプリングレート
L2 = fs*L1;%信号の総サンプル数
fc = 1*10^6;%LPFの値
y = fft(x);
P2 = abs(y/L2);
P1 = P2(1:L2/2+1);
P1(2:end-1) = 2*P1(2:end-1);
j = 1;
for f=0:(fs/L2):(fs/2)
e1(j)=f;
if f <= fc
P1(j) = P1(j);
end
if f > fc
P1(j) = 0*P1(j);
end
j=j+1;
end
P1(2:end-1) = 0.5*P1(2:end-1);
P2 = P1(1:L2/2+1);

4 个评论

Yoshio
Yoshio 2019-11-1
编辑:Yoshio 2019-11-1
P2 = abs(y/L2)
以降のコードは信号xのパワースペクトル密度をfftを使って求めるコードとなっています。これはこちらと同じ内容です。
絶対値をとることによって、fft結果から位相情報が無くなってしまいますので、時間領域の信号には戻りません。この点をご理解願います。
なお、コードはCODEの所で最初、全体だと左から9番目のアイコンをクリックするかAlt+Enterをタイプするとでてくるグレーのコード入力部分に記載して頂くと見やすいです。
N/A
N/A 2019-11-1
ご回答頂きありがとうございます。
butterなどの関数を使わずに、 「フーリエ変換→LPF→逆フーリエ変換」してTrace-1にLPFをかける方法はありますか?
Yoshio
Yoshio 2019-11-1
当初のトピックと異なる質問となりますので、別途ご質問ください。
その際は、「butterなどの関数を使わずに」の意味がよくわからないので具体的に何をやりたいか記載願います。
N/A
N/A 2019-11-1
別途質問を作成しました。何度も質問して申し訳ありません。ご回答頂けると幸いです。

请先登录,再进行评论。

 采纳的回答

Yoshio
Yoshio 2019-11-1
编辑:Yoshio 2019-11-1

0 个投票

逆フーリエ変換関数はこちらに説明があります。
フィルタを通した信号が複素周波数信号として得られているなら、単純にifftを行えば良いと思います。
フィルタを通さない場合
t = Trace_1(:,1);
x = Trace_1(:,2);
y = fft(x);
z = ifft(y);
max(abs(x-z))
plot(t,x-z)
となり計算誤差内で元の信号に戻ります。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 フーリエ解析とフィルター処理 的更多信息

产品

版本

R2017a

标签

Community Treasure Hunt

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

Start Hunting!