РЕДАКТИРОВАТЬ:
Я наткнулся на это объяснение, чтобы получить энергетический спектр из бумаги IEEE (диагностика с разомкнутым контуром в трехфазных неконтролируемых выпрямителях, Rahiminejad, Diduch, Stevenson, Chang). “Запись записанного образца сигнала, содержащего несколько выборок, эквивалентных 4T, фиксируется и его БПФ определяется с использованием размера FFT, равного длине записи (где T является фундаментальным периодом). Предполагая, что размер FFT соответствует 4 периодам периодический сигнал, каждый 4-й бит FFT будет совпадать с гармонической частотой, в частности, центр БПФ-бит 4k + 1 будет совпадать с частотой k-й гармоники.
Энергия k-й гармоники рассчитывается как сумма квадратов величин 5 последовательных значений БПФ, центрированных в бункере 4k + 1. Дополнительные значения FFT включаются в вычисление гармонических энергий, чтобы уменьшить чувствительность вычисленной энергии до ошибки в частотной оценке, которая приводит к тому, что пик k-й гармоники смещается от бункера 4k + 1 “.
Я не совсем понимаю этот прорыв. В моем ограниченном понимании жирная линия относится к сумме квадратов величин выхода функции fft(), т.е. К комплексным коэффициентам ряда Фурье.
Может кто-то, пожалуйста, показать свет в получении энергетического спектра? @fpe: Я не уверен, что ESD выполняет то же самое, что и энергетический спектр. Кстати, спасибо за ваш ответ 🙂
Я пытаюсь построить энергетический спектр сигнала, чтобы посмотреть, например, нормализованная энергия содержит первые три гармоники, отношение энергии фундаментальной к второй гармонике и т. Д….
Здесь мне удалось получить окно 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
Как правило, вы можете рассчитать спектр таким образом:
h = spectrum.welch('hamming',2048,50);
PSD = psd(h,x(t),'nfft',2048,'fs',Fs);