Logarithmic scale using PSD function

6 views (last 30 days)
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)

Accepted Answer

Patrick Kalita
Patrick Kalita on 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')

More Answers (2)

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

Graeme
Graeme on 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!