高速フーリエ変換入門



導入
オーディオファイルやビデオファイル、あるいはイメージファイルがあるとしましょう.しかし、唯一の問題は、多くのノイズがあります.必要なオーディオ、フレーム、または3つのファイルのオブジェクトを区別できません.それで、どのように、あなたは雑音と実際の信号を区別することになっていますか?
このファイルにはノイズと呼ばれる用語が含まれている可能性があります.用語は通信ドメインのものであるが,aiドメインにも関係している.

ノイズ
ノイズは、すべての周波数で等しい強度やパワーから構成されるランダムな信号です.計算では確率変数の系列として統計的に定義した.基本的に、非常に単純な用語では、それはあなたの信号の一部かもしれないランダムなものです.

フーリエ変換
本論文の主なハイライトであるフーリエ変換は信号,特に雑音の多い信号を解析するための非常に有用なツールである.それは変換または複雑な数学方程式を単純な三角関数にsinやcosの面で変換します.sinやcosが使用されているので、信号は、その形式で分析するのが簡単です.他の観点において、フーリエ変換は、時間信号を周波数信号および電力信号に変換するために使用される.あなたは毎日フーリエ変換のアプリケーションを使用しています.

FFTの実施
注:コードが書かれ、著者によってテストされます.出力はJupyterノートブックセルのスクリーンショットです.
この実装のために、我々はフーリエ変換計算機としてscipyライブラリを使用する予定です.

1 . Python FFT用のライブラリをインポートしましょう
import numpy as np
import matplotlib.pyplot as plt
from scipy.fftpack import fft, fftfreq
注:あなたがscipyの最新のパッケージを持っている場合は、scipyを使用してください.scipyの代わりにfft.FFtpack

2 .ランダム信号の定義
n = 500 # Number of data points
dx = 5.0 # Sampling period (in meters)
x = dx*np.arange(0,n) # x coordinates
w1 = 100.0 # wavelength (meters)
w2 = 50.0 # wavelength (meters)

fx = np.sin(2*np.pi*x/w1)
plt.title("Signal as a function of time")
plt.plot(x, fx)

FFTを用いた離散フーリエ変換( DFT )の取得
Fk = fft(fx)/n # Fourier coefficients (divided by n)

# To plot in the frequency domain
Fk =  fftshift(Fk) # Shift zero frequency to center
nu = fftfreq(n,dx) # Natural frequencies
nu = fftshift(nu) # Shift zero frequency to center

plt.title('DFT of the signal')
plt.plot(nu, np.abs(Fk))  # Get the absolute values of DFT
上記のイメージで見ることができるように、我々の信号のDFTは、私たちが以前に述べたように、1つの周波数を持っている単純なグラフです.信号は単純な連続信号であり、1つの周波数成分だけを含んでいるので、1対の周波数を得ることが期待された.

ランダムノイズの追加
new_fx = np.sin(2*np.pi*x/w1) + 2*np.cos(2*np.pi*x/w2) 
# new = old + random signal/noise
plt.title('Modified Signal')
plt.plot(x, new_fx)

5 .変更されたシグナルのDFTを取得する
new_Fk = fft(new_fx)/n  # Fourier coefficients (divided by n)
new_Fk = fftshift(new_Fk)  # Shift zero frequency to center
plt.title('DFT of Modified Signal')
plt.plot(nu, np.abs(new_Fk))  # Get the absolute values of DFT
あなたがプロットされた画像で詳細を見つけることができますthis article

その他の資源
  • Visualization with Seaborn
  • Understanding of Probability Distribution and Normal Distribution
  • Understanding of Regularization in Neural Networks