Длинные данные акселерометра, разделенные на короткие для выполнения FFT в Matlab
Я записал акселерометр в течение 2 часов (частота дискретизации составляет 100 Гц). Чтобы проанализировать данные, я хочу выполнить FFT. Я думаю, что все данные очень длинные, поэтому я хочу разделить их на 10 секунд или 5 секунд. Является ли это возможным?
Теперь у меня есть данные (1479168x1; один из x,y,z) с частотой дискретизации 100 Гц. Я хочу проанализировать это разделенное на 5 секунд временное окно. (512x2889). Тогда, правильно ли выполнять fft с 512 выборками (как один кадр, всего 2889 кадров)? Ниже мой код
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
2 ответа
Я записал акселерометр в течение 2 часов (частота дискретизации составляет 100 Гц). Чтобы проанализировать данные, я хочу выполнить FFT. Я думаю, что все данные очень длинные, поэтому я хочу разделить их на 10 секунд или 5 секунд. Является ли это возможным?
Чтобы ответить на эту часть, вы должны понимать, что разрешение БПФ зависит от времени наблюдения, поэтому в вашем случае вы делите полное чтение на окно времени. Этот эффект ухудшает разрешение. Также вы пропустите некоторые частоты, если их нет в окне, которое вы выполнили. Также боковые лепестки будут очень высокими из-за внезапного отсечения.
Если разрешение не имеет значения для вашего случая, ответ - да, вы можете сделать это и выполнить БПФ по частям, но с худшим разрешением и всеми вышеупомянутыми проблемами.
Не совсем понятно, что вы хотите проанализировать. Я думаю, что вы должны прочитать о кратковременном преобразовании Фурье
Существует много информации о STFT. Смотрите, например, бесплатную книгу - SPECTRAL AUDIO SIGNAL PROCESSING
Matlab имеет специальную функцию Spectrogram, использующую кратковременное преобразование Фурье в панели инструментов обработки сигналов.