Длинные данные акселерометра, разделенные на короткие для выполнения 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, использующую кратковременное преобразование Фурье в панели инструментов обработки сигналов.

Другие вопросы по тегам