# plot SEM error bars

231 views (last 30 days)
best16 programmer on 10 Jun 2017
Commented: Star Strider on 10 Jun 2017
hi everyone, i have 2 column such as
X=[ -120 -110 -100 -90 -80 -70 -60 -50 -40 -30 -20 -10]
Y=[0.9996 1.0000 0.9772 0.8978 0.6916 0.3253 0.0680 0.0091 0.0089 0.0088 0.0098 0.0119]
i want to plot SEM error bars using errorbar function,but when i calculate the SEM it only gives me one value and errobar function show this error:
'X, Y and error bars must all be the same length'
SEM=std(data)./sqrt(length(data))
thank you

Star Strider on 10 Jun 2017
If your ‘data’ matrix variables are in columns and ‘Y’ is the mean, you need to calculate the ‘SEM’ across the columns of ‘data’:
SEM = std(data,2)./sqrt(size(data,2));
You calculate the mean the same way:
Y = mean(data,2);
Note: This is a guess, since I do not have your data.

Show 1 older comment
Star Strider on 10 Jun 2017
My pleasure.
Your ‘data’ vector has only 8 elements. Your other vectors have 12. Your ‘data’ vector will produce only 1 value if you calculate the standard deviation over the column, and the standard deviation is 0 for single values (calculating the standard deviation row-wise, across the columns).
There is no solution to your problem with the information you have provided.
best16 programmer on 10 Jun 2017
thank you again,can you please show me some example for this type of operation
Star Strider on 10 Jun 2017
My pleasure.
This is one example (using your ‘X’ and ‘Y’ vectors):
X = [ -120 -110 -100 -90 -80 -70 -60 -50 -40 -30 -20 -10]';
Y = [0.9996 1.0000 0.9772 0.8978 0.6916 0.3253 0.0680 0.0091 0.0089 0.0088 0.0098 0.0119]';
data = Y + 0.1*randn(12, 8); % Create (12x8) Data Array
data_mean = mean(data,2); % Mean Across Columns
data_SEM = std(data,[],2)/sqrt(size(data,2)); % SEM Across Columns
figure(1)
errorbar(X, data_mean, data_SEM)
grid
axis([-130 0 ylim])

### Community Treasure Hunt

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

Start Hunting!

Translated by