2017-01-10 3 views
-3

加速度計で2時間記録しました(サンプリングレートは100Hzです)。データを分析するために、私はfftを実行したい。私はデータ全体が非常に長いと思うので、10秒または5秒で分けたいと思う。出来ますか?matlabでfftを実行するために短い加速度計データを除算した

今、100Hzのサンプルレートでデータ(1479168x1; x、y、zの1つ)を持っています。私はそれを5秒の時間窓で割って分析したい。 (512x2889)。次に、512サンプル(1フレームサンプル、合計2889フレーム)のfftを実行するのは正しいですか?以下は私のコードです

no_point = 512; %% for 5seconds data of 10ms data point 
Fs=100; %% sample rate 
acc = data; 
no_frame = length(data)/no_point;  
frame_data = reshape(acc, no_point, no_frame)'; 
f = hann(no_point); 
hann_window = repmat(f',no_frame,1); 
fspace = Fs/2*linspace(0,1,no_point/2+1); 

fp = zeros(no_frame, no_point); 
for iframe = 1:no_frame 
    mean_data = mean(frame_data(iframe,:)); 
    std_data = std(frame_data(iframe,:)); 
    fp(iframe,:) = (frame_data(iframe,:)-mean_data)*100/mean_data; 
end 

fp_hann = hann_window.*fp; 

abs_fp = zeros(no_frame, no_point/2+1); 
for iframe = 1:no_frame 
    Y = fft(fp_hann(iframe,:),no_point); 
    abs_fp(iframe,:) = 2*abs(Y(1:no_point/2+1)); 
end 
+0

FFTにはO(n * log(n))の時間複雑さがあるため、時間がかかりすぎても時間がかかるとは思えません。 – flawr

+0

サンプルレートを変更してください https://www.mathworks.com/help/signal/ref/resample.html –

+0

回答ありがとうございます、私はそれを取得しません。もっと詳しく教えてもらえますか? –

答えて

0

加速度計で2時間(サンプリングレートは100Hzです)記録しました。データを分析するために、私はfftを実行したい。私はデータ全体が非常に長いと思うので、10秒または5秒で分けたいと思う。出来ますか?

この部分に答えるためには、FFTの解像度は観察の時間によって決まるので、完全な読みを時間の枠に分けています。この効果は解像度を低下させます。 また、実行したウィンドウに周波数がない場合は、いくつかの周波数を見逃してしまいます。突然のクリッピングのためにサイドローブも非常に高くなります。

あなたのケースでは解像度が重要ではない場合、その答えは可能ですが、部分でFFTを実行できますが、最悪の解像度と上記のすべての問題があります。

関連する問題