2014-08-27 2 views
2

Я выбрал выходной ток 50 Гц инвертора с частотой дискретизации 50 кГц в течение 1 минуты. Я должен разделить время на 200 мс пакетов (0,2 с или 10 периодов основного сигнала) и делать БПФ на каждом пакете. Таким образом, это означает, что у меня есть 10000 выборок в каждом пакете (если не я ноль или усечка, это не имеет большого значения). Я также должен извлечь частотный спектр до 9 кГц. Результаты подходят для низких частот, но у меня неправильные результаты (значения составляют половину того, что для высокой частоты). Не могли бы вы помочь мне понять, что я делаю неправильно?FFT ошибочные результаты для высоких частот?

У меня есть идея, возможно, что-то вроде кода ниже происходит с моим FFT. Просто измените SF на 10000 и посмотрите, как результаты будут изменены!

in this code if you change the SF(sampling frequency) from 30000 to 10000, 
the results for high frequncies will be distorted and disordered . why ? 

SF = 30000; %sampling frequency 

% signal 
t = 0:1/SF:1-1/SF; % sample points 
wave=15*sin(2*pi*1*t)+1*sin(2*pi*123*t)+2*sin(2*pi*203*t)+3*sin(2*pi*223*t)+4*sin(2*pi*331*t)+5*sin(2*pi*2812*t)+6*sin(2*pi*5752*t)+7*sin(2*pi*7993*t); 


wavefft = fft(wave); 

L=floor(size(wave,2)/2)+1; % removing the mirror side of spectrum 
MagSpec = abs(wavefft(1:L))/(SF/2); %% removing the mirror side of the spectrum 
and ranging the domain 

plot(MagSpec); 
+0

Вы оконного пакеты? FFT предполагает периодичность, поэтому вы должны применить окно перед FFT или получить дополнительные высокочастотные компоненты. –

+0

Возможно, вы сделали что-то не так, потому что вы не используете окно с образцом размером n^2 и где-то по пути вы получаете неправильные результаты. Попробуйте образцы 16384 или 8912 за один раз ... –

+0

Пол, я думаю, что это не проблема с окном, и мне не разрешено открывать мои данные в соответствии с последствиями моей работы! – Ali

ответ

3

Что вы наблюдаете - aliasing.

Как можно видеть при сравнении результатов, используя частоту дискретизации 50 кГц 50kHz sampling rate

и использования частоты дискретизации 10 кГц 10kHz sampling rate

В sinusoidals сигналы, частота которых, где ниже половины частоты дискретизации 10 кГц (Nyquist frequency), то есть синусоидальные сигналы с частотой 1 Гц, 123 Гц, 203 Гц, 223 Гц, 331 Гц и 2812 Гц не влияют. Те, что на 5752 Гц и 7993 Гц, сглажены до 4248 Гц и 2007 Гц соответственно.

Вы все еще можете выполнять БПФ на образцах 200 мс или 10000, но частота дискретизации остается неизменной на частоте 50 кГц. То есть вы бы:

SF = 50000; %sampling frequency 

% signal 
t = 0:1/SF:1-1/SF; % sample points 
wave=15*sin(2*pi*1*t)+1*sin(2*pi*123*t)+2*sin(2*pi*203*t)+3*sin(2*pi*223*t)+4*sin(2*pi*331*t)+5*sin(2*pi*2812*t)+6*sin(2*pi*5752*t)+7*sin(2*pi*7993*t); 

для генерации сигнала, но вы бы разделить полученный сигнал волны в кусках для обработки:

for i=1:floor(length(wave)/10000) 
    wavefft = fft(wave(1+(i-1)*10000:i*10000)) 
    % do somthing with the wavefft result 
end 
Смежные вопросы