How to mark 95% confidence interval with single bar line - example image

Hello
I'm using the pwelch method of power spectral density estimate, and would like to indicate the confidence interval like as one single bar - just like in the example image attached. At the moment I just plot the pxxc confidence interval array obtained when calling it in the pwelch function, and its looks very confusing (a lot of noise!). Would much prefer to have something like in the image shown...
Thanks!

1 Comment

Hi, I've seen the answer about single bar to represent confidence interval using pwelch. If I well understood the ratio U/L is constant, therefore the logarithm of the confidence interval has constant difference and depends only on M (the range of frequencies). So in theory, whatever power spectra I obtain, the error will be always the same if I use the same M. For instance I could have several spectra in a single plot with a single errorbar. However, if I try the suggested method I obtain different U and L values depending on the data I provide. Am I doing something wrong? Could you help me? Thanks in advance

Sign in to comment.

 Accepted Answer

Do you have the Statistics Toolbox? If so, you can use errorbar()
For example
Fs = 1000;
t = 0:1/Fs:.296;
x = cos(2*pi*t*200)+randn(size(t));
[Pxx,F,Pxxc] = pwelch(x,[],[],[],Fs,'ConfidenceLevel',0.95);
L = mean(10*log10(Pxx)-10*log10(Pxxc(:,1)));
U = mean(10*log10(Pxxc(:,2))-10*log10(Pxx));
plot(F,10*log10(Pxx)); hold on;
errorbar(350,-22,L,U,'ko');
xlabel('Hz'); ylabel('dB');
Note it is important that you plot the PSD estimate in dB because the logarithm is variance-stabilizing for PSD estimate (otherwise the width of the confidence interval is not independent of frequency).

4 Comments

Hello Wayne,
Thank you for prompt reply.
Is it imperative that I plot in dB? I would like to avoid doing so - is there anyway around this?
Thanks again
Hi Harry, It turns out when you consider nonparametric PSD estimation (like pwelch() ), the variance of the PSD estimates are frequency dependent. Accordingly, you can't capture the confidence interval with a single error bar like you want to do. You would need a different error bar for each frequency. The logarithm stabilizes the variance so that the chi-square confidence interval is basically the same at each frequency.
Wayne, I had to bring this up again... So I've been thinking about what you've said, and have an issue. If I can only get the error bar by plotting in dB, then I can't use a semilog y-axis no? This I need because plotting dB is pretty useless for me. Any idea how the graph in the image above must have been plotted? Thanks for your help.
Doesn't matter, I just realised it was a silly question..Thanks again for your help!!

Sign in to comment.

More Answers (0)

Asked:

on 19 Jul 2014

Commented:

on 21 Aug 2014

Community Treasure Hunt

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

Start Hunting!