加速度計で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
FFTにはO(n * log(n))の時間複雑さがあるため、時間がかかりすぎても時間がかかるとは思えません。 – flawr
サンプルレートを変更してください https://www.mathworks.com/help/signal/ref/resample.html –
回答ありがとうございます、私はそれを取得しません。もっと詳しく教えてもらえますか? –