我用加速度計記錄2小時(它的採樣率爲100Hz)。爲了分析數據,我想執行fft。我認爲整個數據都很長,所以我想把它分成10秒或5秒。可能嗎?長加速度計數據除以短的一個在matlab中執行fft
現在,我有100Hz採樣率的數據(1479168x1; x,y,z之一)。我想分析它除以5秒的時間窗口。 (512x2889)。那麼,是否正確地執行512個樣本(作爲一個幀樣本,總共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 –
謝謝您的回答,但是,我不明白。你能告訴我更多細節嗎? –