2013-08-22 2 views
0

РЕДАКТИРОВАТЬ:Как получить энергетический спектр сигнала после FFT в Matlab?


Я наткнулся на это объяснение, чтобы получить спектр энергии от IEEE бумаги (обрыв цепи Диагностика неисправностей в 3 фазы неуправляемыми вентилями, Rahiminejad, Diduch, Stevenson, Chang). «Записанный образец сигнала, содержащий количество выборок, эквивалентных 4T, фиксируется и его БПФ определяется с использованием размера FFT, равного длине записи (где T является основным периодом). Предполагая, что размер FFT соответствует 4 периоды периодического сигнала, каждый 4-й БПФ бин будет совпадать с гармонической частотой, в частности, в центре FFT бункера 4k + 1 будет совпадать с -го гармонической частоты.

в энергии KTH гармоника рассчитывается как сумма сумма квадратов величин 5 последовательных значений FFT с центром в корзине 4k + 1. Дополнительные значения FFT включаются в вычисление гармонических энергий, чтобы уменьшить чувствительность вычисленной энергии до ошибки в частотной оценке, которая приводит к возникновению k-й гармоники. пик, смещающийся от бункера 4k + 1. "

Я не совсем понимаю, проход выше. в моем ограниченном понимании Жирная линия относится к сумме квадратов величин выхода функции (FFT), т.е. комплексных коэффициентов Фурье серии.

Может кто-нибудь, пожалуйста, показать некоторый свет в получении энергетического спектра? @fpe: Я не уверен, что ESD выполняет то же самое, что и энергетический спектр. Кстати, спасибо большое за ответ :)


Я пытаюсь построить энергетический спектр сигнала, чтобы смотреть на, например, нормализованной энергии содержали первые три гармоники, отношение энергии фундаментальных для 2-й гармоники и т.д .. ..

Здесь мне удалось получить окно Hanning FFT амплитуда-Гц и мощность-Гц. Но я не знаю, как получить энергию-Гц для каждой частотной составляющей.

Любая помощь очень ценится!

function [f,Xall_Wnd]=fftplotExxx(time,X_input) 
Fs = 20000; % Sampling frequency 
x = X_input; 

% Fast Fourier Transform 
    L = length (X_input); % Length of FFT 
    nfft = 2^nextpow2(L); % Next power of 2 from length of signal 

%wave = wave.*hamming(length(wave)); 
x_HammingWnd = x.*hamming(L); 

% Take fft, padding with zeros so that length(X) 
%is equal to nfft 

Xall_Wnd = fft(x_HammingWnd, nfft)/L; %hamming window fft 

% FFT is symmetric, throw away second half 

% Take the magnitude of fft of x 
mx_Wnd = 2*abs(Xall_Wnd(1:nfft/2+1)); 

% To get Power of x(t) by sqr of magnitude 
m2x_Wnd = mx_Wnd.^2; 

% I am Not sure how to get energy spectrum 
for i=1:L:nfft-L 
E(i) = sum(Xall_Wnd(1:nfft/2+1).^2); 
end 

% Frequency vector 
    f = Fs/2*linspace(0,1,nfft/2+1); 

% Generate the plot, title and labels. 
subplot(2,2,1) 
plot(time,X_input); 
title('Time Domain') 
xlabel('Time(s)') 

subplot(2,2,2) 
plot(f,m2x_Wnd); 
title('Power Spectrum of x(t)'); 
xlabel('Frequency (Hz)'); 
ylabel('Normalised Power of fft'); 

subplot(2,2,3) 
plot(f,mx_Wnd); 
title('Hamming Window_ Spectrum of x(t)'); 
xlabel('Frequency (Hz)'); 
ylabel('Normalised Magunitude of fft'); 

subplot(2,2,4) 
plot(f,E); 
title('Energy Spectrum of x(t)'); 
xlabel('Frequency (Hz)'); 
ylabel('Energy'); 
end 

ответ

1

Как правило, вы можете рассчитать спектр таким образом:

h = spectrum.welch('hamming',2048,50); 
PSD = psd(h,x(t),'nfft',2048,'fs',Fs); 
+0

Спасибо за ваш комментарий. Не будет ли эта строка «m2x_Wnd = mx_Wnd.^2;» даст мне спектр мощности, когда m2x_Wnd - величина fft x (t)? Будут ли эти 2 дать мне тот же результат? Кроме того, я хотел бы получить энергетический спектр сигнала, который по теории: сумма квадратного коэффициента Фурье. Я прав ? Благодарю fpe! – kitkit

+1

Насколько я знаю, 'ESD' и' PSD' в значительной степени представляют одну и ту же информацию; «PSD» только нормализуется по числу частотных выборок. – fpe

Смежные вопросы