これと同様の質問がたくさんあることは知っていますが、まだ答えを見つけることができません。MATLAB に時報があるとします。
t=0:1/44100:1
および周波数 500Hz のコサイン信号:
x=cos(2*pi*500*t);
今、fft
信号 x のコマンドを使用して得られた振幅スペクトルをプロットしようとしています
FFT=abs(fft(x))
plot(FFT)
理論によれば、プロットには 2 つのピークがあり、1 つは -500 Hz で、もう 1 つは 500 Hz です。私が理解できないのは、2 つのピークが得られるということですが、これらのピークがどの周波数にあるのかわかりません。FFT インデックス、入力信号の長さ、およびサンプリング周波数を使用して周波数を計算する方法があることは知っていますが、それでも周波数を計算できません。
関数を使用してピークが表す周波数のインデックス番号にピークが位置するようにFFTプロットを整列させる方法があることは知っていますがfftshift
、私が望むのは、単にこの関数を呼び出した結果のプロットを使用して周波数を把握することです:
FFT=fft(x)
この場合、信号に 500Hz の余弦が含まれていることは既にわかっていますが、FFT を取得したい信号が事前にわからない場合はどうなるでしょうか。fft
関数からの出力を使用して、そのサンプルのピークの周波数値を取得するにはどうすればよいでしょうか?