2017-01-10 4 views
-3

Я записал акселерометр в течение 2 часов (частота дискретизации 100 Гц). Чтобы проанализировать данные, я хочу выполнить fft. Я думаю, что все данные настолько длинны, поэтому я хочу разделить его на 10 секунд или 5 секунд. Является ли это возможным?данные о длинном акселерометре, разделенные на короткий, чтобы выполнить fft в matlab

сейчас, у меня есть данные (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 
+0

FFT имеет временную сложность O (n * log (n)), поэтому я сомневаюсь, что это займет гораздо больше времени, даже если это даже займет больше времени. – flawr

+0

Измените частоту дискретизации https://www.mathworks.com/help/signal/ref/resample.html –

+0

Благодарим за ответы, ребята, но я этого не понимаю. Не могли бы вы рассказать подробнее? –

ответ

0

Не совсем понятно, что вы хотите проанализировать. Я думаю, вы должны прочитать о Short-time Fourier transform

Существует много информации о STFT. См., Например, бесплатную книгу - SPECTRAL AUDIO SIGNAL PROCESSING

Matlab имеет специальную функцию Spectrogram using short-time Fourier transform в панели инструментов обработки сигналов.

0

Я записал акселерометр в течение 2 часов (частота дискретизации 100 Гц). Чтобы проанализировать данные, я хочу выполнить fft. Я думаю, что все данные настолько длинны, поэтому я хочу разделить его на 10 секунд или 5 секунд. Является ли это возможным?

Для того, чтобы ответить на эту часть, вы должны понимать, что разрешение БПФ зависит от времени наблюдения, поэтому в вашем случае вы делите полное чтение на окно времени. Этот эффект ухудшит разрешение. Также вы пропустите некоторые частоты, если они не присутствуют в выполненном вами окне. Также боковые ботинки будут очень высокими из-за внезапного обрезания.

Если разрешение не имеет значения для вашего случая, ответ да, вы можете сделать это и выполнить БПФ на части, но с худшим разрешением и всей вышеупомянутой проблемой.