編集:
この説明につまずいて、IEEE の論文 (3 相非制御整流器の開回路故障診断、Rahiminejad、Diduch、Stevenson、Chang) からエネルギー スペクトルを取得しました。「4T に相当するサンプル数を含む信号の記録されたサンプルがキャプチャされ、その FFT は、レコード長 (T は基本周期) に等しい FFT サイズを使用して決定されます。FFT サイズが 4 周期に一致すると仮定すると、周期的な波形では、4 番目の FFT ビンごとに高調波周波数と一致し、特に FFT ビン4k+1の中心はk 番目の高調波周波数と一致します。
k 番目の高調波のエネルギーは、ビン4k+1を中心とする 5 つの連続する FFT 値の振幅の 2 乗の合計として計算されます。ビン4k+1からk 番目の高調波ピークがシフトする可能性がある周波数推定値のエラーに対する計算されたエネルギーの感度を下げるために、追加の FFT 値が高調波エネルギー計算に含まれます。」
上記の文章がよくわかりません。私の限られた理解では、太線 は関数 fft() の出力の大きさの二乗和、つまり複素フーリエ級数係数を指します。
誰かがエネルギースペクトルを取得するためにいくつかの光を示すことができますか? @fpe : ESD がエネルギー スペクトルと同じように機能するかどうかはわかりません。ところで、あなたの答えに感謝します:)
たとえば、正規化されたエネルギーに含まれる最初の 3 つの高調波、基本波と 2 次高調波のエネルギー比などを調べるために、信号のエネルギー スペクトルをプロットしようとしています。
ここで、ハニング ウィンドウ FFT の振幅 Hz と電力 Hz を取得できました。しかし、各周波数成分のエネルギー Hz を取得する方法がわかりません。
どんな助けでも大歓迎です!
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