0

次のように、データのサブセットの時間と速度を含む2列のベクトルがあります。

5 40
10 37
15 34
20 39

等々。周波数を取得するために、速度のフーリエ変換を取得したいと思います。高速フーリエ変換(fft)でこれを行うにはどうすればよいですか?

ベクトル名がsampleDataの場合、試しました

fft(sampleData);

しかし、それは私に実数と虚数のベクトルを与えます。プロットするための賢明なデータを取得できるようにするには、これをどのように実行しますか?

4

2 に答える 2

3

フーリエ変換は複雑なベクトルを生成します。周波数のベクトルを取得すると、それぞれにスペクトル位相があります。これらのフェーズは非常に重要です。(それらには時間領域信号のほとんどの情報が含まれており、それらがなければ干渉の影響は見られません...)。パワー スペクトルをプロットする場合は、次のことができます。

plot(abs(fft(sampleData)));

ストーリーを完成させるには、おそらく fftshift が必要であり、周波数ベクトルも生成する必要があります。より精巧なコードは次のとおりです。

% Assuming 'time' is the 1st col, and 'sampleData' is the 2nd col: 
N=length(sampleData);  
f=window(@hamming,N)';
dt=mean(diff(time)); 
df=1/(N*dt); % the frequency resolution (df=1/max_T)
if mod(N,2)==0
    f_vec= df*((1:N)-1-N/2); % frequency vector for EVEN length vector
    else
    f_vec= df*((1:N)-0.5-N/2); 
end

fft_data= fftshift(fft(fftshift(sampleData.*f))) ;

plot(f_vec,abs(fft_data))
于 2012-10-24T17:43:09.987 に答える
0

バックアップして、何を達成しようとしているのか、FFTが状況に適したツールであるかどうかを検討することをお勧めします。「周波数を取得したい」とおっしゃっていますが、それはどういう意味ですか?このデータには正確に1つの周波数成分があることを知っていて、周波数が何であるかを知りたいですか?コンポーネントの周波数と位相の両方を知りたいですか?離散周波数成分がいくつ存在するかを大まかに把握したいだけですか?測定のノイズのスペクトルに興味がありますか?データセットの「周波数」について尋ねることができる多くの質問があり、FFTおよび/またはパワースペクトルが答えを得るための最良のアプローチであるかどうかは質問によって異なります。

上記のコメントで、「パワースペクトルを時間値に相関させる方法はありますか?」と質問しました。これは混乱した質問だと思いますが、あなたが本当に答えようとしている質問は、「周波数が時間とともに変化する信号があり、周波数と時間の推定値を取得したい」という質問かもしれません。ここ数ヶ月の間にSOでこれらの線に沿って質問を見たと確信しているので、それを検索します。

于 2012-10-24T23:16:43.443 に答える