Search code examples
matlabplotspectral

plotting pwelch with log axis


I'm using pwelch to plot a power spectral density. I want to use the format

pwelch=(x,window,noverlap,nfft,fs,'onesided')

but with a log scale on the x axis.

I've also tried

[P,F]=(x,window,noverlap,nfft,fs);
plot(F,P)

but it doesn't give the same resulting plot as above. Therefore,

semilogx(F,P) 

isn't a good solution.


Solution

  • OK, so to start, I've never heard of this function or this method. However, I was able to generate the same plot that the function produced using output arguments instead. I ran the example from the help text.

    EXAMPLE:
       Fs = 1000;   t = 0:1/Fs:.296;
       x = cos(2*pi*t*200)+randn(size(t));  % A cosine of 200Hz plus noise
       pwelch(x,[],[],[],Fs,'twosided'); % Uses default window, overlap & NFFT. 
    

    That produces this plot: Desired Pic

    I then did: plot(bar,10*log10(foo)); grid on; to produce the linear version (same exact plot, minus labels):

    pic1

    or

    semilogx(bar,10*log10(foo)); grid on; for the log scale on the x-axis. pic2

    I don't like that the x-scale is sampled linearly but displayed logarithmically (that's a word right?), but it seems to look ok.

    Good enough?