I need to calculate power spectral density of a signal in MATLAB.
8 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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);
0 commentaires
Réponse acceptée
Wayne King
le 19 Avr 2012
You are calculating your frequency vector for a one-sided PSD estimate, but then you try to plot the PSD estimate for the entire period (two-sided) against that.
Also, you do not want to find the PSD of L, that is just a scalar which is the length of the signal, y. So fft((L-Iavg))is definitely not what you want, because that is just 0!!!
Nc=abs(fft((y-mean(y)),NFFT)).^2./NFFT;
Nc = Nc(1:513);
Nc(2:end-1) = 2*Nc(2:end-1);
fc=Fs/2*linspace(0,1,NFFT/2+1);%frequency
plot(fc,Nc)
Also, you probably want to plot it in dB
plot(fc,10*log10(Nc))
Plus de réponses (2)
Wayne King
le 19 Avr 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)));
0 commentaires
Voir également
Catégories
En savoir plus sur Parametric Spectral Estimation dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!