前回はフィルタリング周波数が既知の場合のFFTフィルタリング演算を行った。今回はフィルタリング周波数が不明の場合の正弦波のフィルタリングを行う。

 

信号g(x)のパワースペクトル

=  *複素共役を表す.

この逆フーリエ変換は

フーリエ変換の式とφ(f)の式から

dx    この信号を自己相関関数と言う

以上のことから、信号g(x),フーリエスペクトルG(f),パワースペクトル

自己相関関数の間には図のような関係がある

こうして自己相関関数をフーリエスペクトルを利用して求められる。fig1

 

fig1   関数g(x) フーリエスペクトルG(f)、パワースペクトル

G(f)^2   自己相関の関数φ(τ)

 

----------------MATLAB PG---------

clear;close all;clc
f1=20;%周波数
fs=f1*10;%サンプリング周波数
tmax=1;%信号長
N=tmax*fs;%サンプル数
t=linspace(0,tmax,N);
y=sin(2*pi*f1*t)+randn(1,N);%信号+ランダム数
subplot(2,1,1)
plot(t,y)
Y=fft(y);%フーリエ変換
power=Y.*conj(Y);%パワースペクトル
autoy=real(ifft(power));
autoy=autoy/max(autoy);%正規化
subplot(2,1,2)
plot(t,autoy)
ylim([-0.5 0.5])

subplot(2,1,1)
grid on
title('y+noise')
xlabel('time sec')
subplot(2,1,2)
grid on
title('フィルタリング結果')
xlabel('time sec')