power spectral density PSD?
5 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Mary Jon
le 28 Nov 2013
Commenté : Youssef Khmou
le 3 Déc 2013
If I am have signal with length(33),or 13 signals each with length(33), How finding PSD to each signal individually?and plot its individually?
0 commentaires
Réponse acceptée
Youssef Khmou
le 29 Nov 2013
You can try this way :
t=linspace(0,1,33);% 1 seconde
Fs=inv(t(3)-t(2));
f=Fs/10;
P=13; % number of signals
X=zeros(33,P);
for n=1:P
X(:,n)=sin(2*pi*t*(f+n));
end
N=512; % number of points for computing DFT
frequency=(0:N-1)*Fs/N; % frequency axis
frequency=frequency(1:floor(end/2)); % One sided spectrum
PSD=zeros(N,P);
for n=1:P
PSD(:,n)=fft(X(:,n),N);
PSD(:,n)=PSD(:,n).*conj(PSD(:,n));
end
PSD(floor(end/2)+1:N,:)=[]; % one sided spectrum
% Plotting them all in one figure
figure,plot(frequency,PSD)
4 commentaires
Youssef Khmou
le 3 Déc 2013
mary, they are the same, it is just a problem of scale, Fxx is the frequency axis and it is 33x1, then we should get the same number of points using fft:
plot(Fxx,Pxx);
hold on;
F1=fft(X(:,1),33*2); % 33*2 points
F1=abs(F1(1:33));
plot(Fxx,F1,'r');
I used sinus just as example, Good luck mary
Plus de réponses (1)
Wayne King
le 28 Nov 2013
Hi Mary, If you have the Signal Processing Toolbox, the easiest thing is to use periodogram()
I'll create some simulated signals. I'll assume your sampling frequency is 1.
X = randn(33,13);
for nn = 1:13
[Pxx(:,nn),Fxx] = periodogram(X(:,nn),[],64,1);
end
You can plot each one individually by selecting the column.
plot(Fxx,10*log10(Pxx(:,1)))
7 commentaires
Youssef Khmou
le 1 Déc 2013
512 is the number of points for calculating DFT, you can put any number, higher number gives good resolution, any number that is multiple of 2 (128,512,1024...) is faster DFT becomes FFT
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!