MATLAB Answers


how to normalize signal in order to get the correct amplitude in FFT using hanning window

bishop Rab さんによって質問されました 2019 年 1 月 20 日
最新アクティビティ dpb
さんによって 編集されました 2019 年 1 月 21 日
I'm using FFT function for a temporal signal (4063 data point) ,i get the spectrum ,in order to get more resolution for my signal (small deltaf) i must have more data points so i doubled the signal length by increasing the time (temporal signal),and apply again FFT function ,the problem is that the amplitude of the doubled signal is not the correct amplitude,i searched in MATLAB help doc i found hann function,so if there's any one who can help me with this function and how to apply it with FFT in order to get the correct amplitude.i will be grateful.thank you.
ps:i'm using MATLAB R2015b

  2 件のコメント

2019 年 1 月 20 日
"Show your work!"
Not a thing anybody here can say without either the data or the code to see what you actually did.
I've done several protracted Answers within the last few months on how to normalize a one-sided PSD with/without windowing and handling zero-padding and illustrated therein what happens with sampling frequency padding and resolution regarding peak amplitudes. One thing you must remember is that unless the frequency of the given energy component is identically at that of a frequency bin in the output FFT, there WILL be energy-smearing across adjacent bins and so the maximum peak in any one bin will NOT reflect the total energy at that frequency; you must integrate the peak to determine the total energy.
Basically, though, one follows the outline as is shown in the documentation for fft; if you start with a noise-free signal to ensure you've got the basics correct, then it's simply applying that to the actual data with the above caveats always in mind.
load asp_ach_de1.txt
Fs2 = 1/0.000061; % Sampling frequency
T2 = 1/Fs2; % Sampling period
L2 = 8192; % Length of signal
t2 = (0:L2-1)*T2; % Time vector
Y2 = fft(sig_2(:,2))
Q2 = abs(Y2/L2);
Q1 = Q2(1:L2/2+1);
Q1(2:end-1) = 2*Q1(2:end-1);
f2 = Fs2*(0:(L2/2))/L2; %FREQUENCY
title('Spectrum 8K data pt')
ylabel('amplitude mm/s2')
xlabel('frequency Hz')
Now because i'm doing lot of experiences you may not see the same plot (i lost some codes) i don't know where's the code which generate the 2nd plot in my questions sorry,but the data are the same,this data presents a temporal signal,so you can see that my spectrum is not correct, sorry for my unclear question,and thank you dpb.

サインイン to comment.

0 件の回答

Translated by