I have noticed many posts regarding frequency spectrum and many answers to the same questions. How to normalize the values of FFT and PSD from a periodic signal?
- The time window or the number of points.
- The peak amplitude of the signal. I mean for example if the signal amplitude is reduced by the half, still getting the corresponding peak value, or even better the corresponding percentage.
%% R is the signal data points extracted from the timetable Datos03 %% tiempo is the signal time points. %% L is the number of data points (Length of the signal) %Time domain plot(Datos3.Time,Datos3.VarName1) R=Datos3.VarName1; tiempo=seconds(Datos3.Time); % FFT Fs=10240; % Sampling frequency T=1/Fs; % Sampling period a=size(tiempo) % Number of points L = a(1,1) % Length of signal Y = fft(R); P2 = abs(Y/L); P1 = P2(1:L/2+1); P1(2:end-1) = 2*P1(2:end-1); f = Fs*(0:(L/2))/L; plot(f,P1) xlim([0 400]) title('FFT') %PSD [SignalSpectrum,SignalFrequencies] = periodogram(R, ... [],[],Fs); plot(SignalFrequencies,SignalSpectrum) xlim([0 400]) title('PSD')
ANSWER
Matlabsolutions.com provide latest MatLab Homework Help,MatLab Assignment Help for students, engineers and researchers in Multiple Branches like ECE, EEE, CSE, Mechanical, Civil with 100% output.Matlab Code for B.E, B.Tech,M.E,M.Tech, Ph.D. Scholars with 100% privacy guaranteed. Get MATLAB projects with source code for your learning and research.
This concerns fft only; psd is a different animal. For a continuous oscillation, most people do not seem to be concerned about fft output that spills into adjacent frequencies, but it's worth looking at as you are doing. With the fft you can get sharp one-point frequency peaks with a varying number of points and a varying amplitude, but not for time windows of arbitrary width. With fft It's required that there be an exact integral number of oscillations in the time window. And, using a single oscillation of a sine wave as an example, the last point in the array can't repeat the first point. The last point has to be "one point short" of a full oscillationSo y = sin(2*pi*(0:9)/10) % correct but y = sin(2*pi*(0:10)/10) % incorrect
The code below gives two peaks, one at +160 kHz and one at -160 kHz for any number of fft points (above a minimum number), any number of complete oscillations in the time window and any amplitude. The abs(amplitude) of each peak is A/2, consistent with cos(w*t) = (1/2)(exp(i*w*t)+exp(-i*w*t)). If you want, as is common for plotting purposes, you could ignore the negative freqencies and double the height of the positive frequency peak.
SEE COMPLETE ANSWER CLICK THE LINK
Matlabsolutions.com provide latest MatLab Homework Help,MatLab Assignment Help for students, engineers and researchers in Multiple Branches like ECE, EEE, CSE, Mechanical, Civil with 100% output.Matlab Code for B.E, B.Tech,M.E,M.Tech, Ph.D. Scholars with 100% privacy guaranteed. Get MATLAB projects with source code for your learning and research.
y = sin(2*pi*(0:9)/10) % correct but y = sin(2*pi*(0:10)/10) % incorrect
The code below gives two peaks, one at +160 kHz and one at -160 kHz for any number of fft points (above a minimum number), any number of complete oscillations in the time window and any amplitude. The abs(amplitude) of each peak is A/2, consistent with cos(w*t) = (1/2)(exp(i*w*t)+exp(-i*w*t)). If you want, as is common for plotting purposes, you could ignore the negative freqencies and double the height of the positive frequency peak.
Comments
Post a Comment