standard deviation on power vs. frequency graph

4 views (last 30 days)
nines on 18 Jan 2020
Answered: Star Strider on 18 Jan 2020
Hello all!
I am trying to put a shaded standard deviation on a power vs. frequency graph.
I've tried:
%errorbar
plot(f, mean(allspectrums_cortex_young)); hold on;
errorbar(f, std(allspectrums_cortex_young)/sqrt(13)); hold on;
fill(f, std(allspectrums_cortex_young)/sqrt(13),[1 0 0],'LineStyle','none');
title('Young Power - Cortex')
ylim([0 2000])
xlim([0 .15])
xlabel('Frequency (in hertz)');
ylabel('Power (n=13)'
%fill
plot(f, mean(allspectrums_cortex_young)); hold on;
fill(f, std(allspectrums_cortex_young)/sqrt(13),[1 0 0],'LineStyle','none');
title('Young Power - Cortex')
ylim([0 2000])
xlim([0 .15])
xlabel('Frequency (in hertz)');
ylabel('Power (n=13)'
and I get this:
when I am looking for something more like:
does anyone have any ideas? thanks so so much!

Star Strider on 18 Jan 2020
It would help to have your data, however I created some to illustrate the approach:
f = linspace(0, 0.5, 25); % Frequency Vector
allspectrums_cortex_young = 1E+3*rand(5, 25) + 1600*exp(-10*f); % Synthetic Spectrum
mn_allspectrums_cortex_young = mean(allspectrums_cortex_young);
sd_allspectrums_cortex_young = std(allspectrums_cortex_young);
figure
plot(f, mn_allspectrums_cortex_young)
hold on
patch([f fliplr(f)], [(mn_allspectrums_cortex_young+sd_allspectrums_cortex_young) fliplr(mn_allspectrums_cortex_young-sd_allspectrums_cortex_young)], 'r', 'FaceAlpha',0.5, 'EdgeColor','none')
hold off
The approach (using the patch function) is to create a closed curve that patch then fills. That is done here by adding and then subtracting the std from the mean, after plotting the mean.
Example —