Не удается сократить опрокидывание панели ошибок - PullRequest
1 голос
/ 04 мая 2019

У меня есть этот код в Matlab R2015a:

figure
set(gcf,'color','w')
hax = axes;
errorbar(f_cc/(1e6), abs(Z_cc),err_Z,'o-');
hax.XScale = 'log';
grid on
xlim([3.6846 3.6900])
xlabel('f(MHz)')
ylabel('|Z(f)|')

, где f_cc, Z_cc и err_Z - вектор с 31 компонентом и двойной точностью (Z дополнительно сложен). Тем не менее, я получаю этот результат:

plot showing error bars with caps that span the whole plot

Я думал, что проблема может заключаться в «опрокидывании» панелей ошибок, но когда я пытаюсь добавить атрибут «опрокидывание»:

errorbar(f_cc/(1e6), abs(Z_cc),err_Z,'o-','Capsize',1);`

тогда Матлаб выдаёт мне ошибку:

В классе ErrorBar отсутствует свойство Capsize

поэтому я не знаю, как это изменить (если это проблема).

1 Ответ

0 голосов
/ 05 мая 2019

Самая старая версия 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, поэтому ожидается, что вы получите это сообщение об ошибке.

...