Logarithmic scale using PSD function

6 vues (au cours des 30 derniers jours)
Graeme
Graeme le 3 Mar 2011
I have a problem using the PSD function - basically the output of my code gives the frequency in a linear scale, when i need it in a logarithmic scale. Does anyone know how to alter the PSD/output to give the resulting plot in a logarithmic scale? cl is an array of values. I assume it is something very basic i need to change.
My code is as follows:
Fs = 1/0.005;
h = spectrum.welch;
Hpsd = psd(h,cl,'Fs',Fs);
plot(Hpsd)

Réponse acceptée

Patrick Kalita
Patrick Kalita le 3 Mar 2011
After creating the plot, set the axes XScale (if you want to replicate a semilogx plot) property to 'log'. For example:
Fs = 1000; t = 0:1/Fs:.296;
x = cos(2*pi*t*200)+randn(size(t));
h = spectrum.welch; % Create a Welch spectral estimator.
Hpsd = psd(h,x,'Fs',Fs); % Calculate the PSD
plot(Hpsd)
set(gca, 'XScale', 'log')
  1 commentaire
Graeme
Graeme le 3 Mar 2011
That's it. Thanks very much!

Connectez-vous pour commenter.

Plus de réponses (2)

the cyclist
the cyclist le 3 Mar 2011
Guessing you need the semilogx, semilogy, or loglog command.

Graeme
Graeme le 3 Mar 2011
I had thought of that, but again that does not work. When i try:
semilogx(Hpsd)
i get the following error:
??? Error using ==> semilogx
Conversion to double from dspdata.psd is not possible.

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by