一定の時間間隔で取得されたデータのサンプルが正弦波に近似しているかどうかを判断するために使用できるアルゴリズムはありますか?
4 に答える
データを度数分布表に変換するフーリエ変換を実行します(実装については、fft、高速フーリエ変換を検索します。たとえば、FFTW)。それが副鼻腔または副鼻腔である場合、度数分布表には、検索している周波数に対応する1つの非常に高い値と、他の周波数でのノイズが含まれます。
または、いくつかの周波数でいくつかの副鼻腔を一致させ、相互相関を使用してそれらを一致させてみてください。信号と適合させようとしている副鼻腔の差の二乗和です。もちろん、さまざまな周波数のsinussenに対してこれを行う必要があります。そして、位相を見つけるためにx軸に沿って副鼻腔を平行移動しながらこれを行う必要があります。
フーリエ変換を計算して、単一のスパイクを探すことができます。これは、データセットがその周波数で正弦曲線を近似していることを示しています。
最小二乗法を確認してください。
@CookieOfFortune:同意しますが、フーリエ級数近似は最小二乗の意味で最適です(Wikipediaの記事で述べられているように)。
最初に独自の入力データを試してみたい場合は、Wolfram Alphaの離散フーリエ変換(DFT)を確認してください。前に述べたように、高速実装が必要な場合は、いくつかのFFTライブラリの1つをチェックする必要があります。
青に飛び込む:の積分がであるという事実を利用することができa*sin(t)
ますa*cos(t)
。データの最小/最大を追跡することで、を知ることができますa
。