2016-04-13 19 views
0

私はMATLABを使用してECGデータを解析しています。データは2つの列から構成され、1つはミリ秒単位で、もう1つはボルト(mV)を含み、CSVファイルからMATLABにインポートされます。matlabでfftデータをプロットする

私はMATLABに内蔵のfft関数を使用しています(つまり、fft(mV))。データが変換されたので、どのようにプロットするのか分かりません。

私は周波数データが​​必要であることを知っていますが、どこから来ているのか、他の軸が何であるのかを理解できていません。

+1

ドキュメントのCheckout [例](http://www.mathworks.com/help/matlab/ref/fft.html?refresh=true#buuutyt-9)を参照してください。それは、FFT結果をプロットする方法のかなり完全なデモを持っています。 – Suever

+1

ここにさらに例があります:http://stackoverflow.com/a/6698729/97160、http://stackoverflow.com/a/2113968/97160 – Amro

答えて

0

「ミリ秒単位の時間」と言うときは、FFTを実行するときに偶数の間隔でサンプリングしたことを願っています。あなたがしていない場合は、2つの選択肢があります。

ポイント間のデータを補間して、グラフが時間領域の時間にどこにあるかを「推測」できるようにすることができます。定期的な間隔で

OR

あなたがすることができ、再サンプル。ミリ秒単位で時間を返すことは、間隔が等しくなければならないため実際には必要ではありませんが、データが正しいことを証明するためのバリデータとして機能する可能性があります。

通常のサンプリング期間のデータを取得したら、これを使用してFFTを取得できます。

function [ X, f ] = ctft(x, T) 
% x = sample array 
% T = sampling period 

% X = fft amplitude 
% f = frequency 

N = length(x); 
X = fftshift(fft(x, N))*((2*pi)/N); 
f = linspace(-1, 1-1/N, N)/(2*T); 
+0

私は尋ねられて以来私のコンピュータにいませんでしたが、はい、サンプリング定期的に行った。私はサンプリング期間が4msだと思いますが、私は確認する必要があります。 – tfiggs

+0

次に、T = 0.004sとxを入力と同じにして、私の答えについてのコードを使用してください。プロット(f、X)と離れて行く! – DeeCee