I need to calculate power spectral density of a signal in MATLAB.
Ältere Kommentare anzeigen
what I have to do is to calculate the noise in a signal and see how it depends on the frequency spectrum. I am trying to calculate PSD of a signal but everytime, I get an error saying "vectors must be the same lengths". I am not able to find a solution.
Here is command which I'm using. please let me know if there is some problem with the command.
I imported the excel file as vectors.
x=time; %time vector in excel file
y=current; %current vector in excel file
plot(x,y); % plot current-time graph
xlabel('time(s)');
ylabel('current(A)');
Fs=50; %sampling frequency
T=1/Fs; %sampling time
L=length(y); %length of the signal
L1= x/T;
t=(0:L-1)*T; time vector
%%%calculate the mean current
Iavg=mean(L);
%calculate the FFT
NFFT=2^nextpow2(L); %next power of 2 from length y
% calculate and plot PSD of conditioning mode
Nc=abs(fft((L-Iavg),NFFT)).^2./NFFT;% Nc is power spectral density
fc=Fs/2*linspace(0,1,NFFT/2+1);%frequency
plot(fc,Nc);
Akzeptierte Antwort
Weitere Antworten (2)
gaurav Nanda
am 19 Apr. 2012
0 Stimmen
Wayne King
am 19 Apr. 2012
because you computed the DFT of a vector to length 1024, only 513 points are "positive" frequencies.
Why not just use spectrum.periodogram if you have the Signal Processing Toolbox?
Fs = 1e3;
t = 0:0.001:1-0.001;
x = cos(2*pi*100*t)+randn(size(t));
plot(psd(spectrum.periodogram,x,'Fs',1000,'NFFT',length(x)));
Kategorien
Mehr zu Parametric Spectral Estimation finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!