Самая старая версия MATLAB, которую я имею, это R2016a, и я мог бы воспроизвести с ней вашу ошибку в панели ошибок.В R2017a это было исправлено.
Проблема возникает с комбинацией errorbar
и логарифмической оси x с (относительно) небольшим разбросом.Столбики ошибок работают отлично, если вы держите ось X линейной или если значения x имеют более широкий разброс.Например:
x = linspace(3.6846, 3.6900, 20);
y = rand(size(x));
e = linspace(0.01, 0.5, numel(x));
errorbar(x, y, e, 'o-')
set(gca, 'XScale','log')
xlim(x([1,end]))
Показывает нелепые полосы ошибок, но если мы установим x = linspace(3.6846, 3.6900*10, 20);
(т. Е. С осью X, охватывающей десятилетие), график выглядит отлично.
Обходной путь #1
Поскольку данные имеют такой небольшой разброс, нет смысла использовать логарифмическую ось.С set(gca, 'XScale','lin')
ваш график будет выглядеть почти так же, но с обычными барами ошибок.
Обходной путь # 2
Используйте линейную ось X, но имитируйте логарифмическое построение:
errorbar(log(x), y, e, 'o-')
ticks = 3.684:0.002:3.690;
set(gca, 'XTick',log(ticks), 'XTickLabel',ticks);
xlim(log(x([1,end])))
Но, честно говоря, это даже не похоже на логарифмическую ось, потому что диапазон настолько мал, что я не могу заметить разницу ...:)
Относительно ошибки установки'capsize'
свойство: как Сардар Усама упомянул в комментарии , это свойство было введено в R2016b, поэтому ожидается, что вы получите это сообщение об ошибке.