Как можно добавить полосы ошибок к точечным диаграммам, подогнанным под кривую, сгенерированным cftool MatLab?

#matlab #matlab-figure

#matlab #matlab-рисунок

Вопрос:

Я пытаюсь взять фигуру, созданную с использованием cftool MatLab, и добавить вертикальные полосы ошибок к данным y. Я пытался изменить автоматически сгенерированный код, который создает фигуру.

Я пытался использовать функцию errorbar, но когда я делаю это, она перезаписывает заданный график. А именно, он создает линейный график (точки не должны быть соединены), и подгонка под кривую также отсутствует. Я проверил документацию для функции plot, но, похоже, нет возможности добавлять полосы ошибок к данным.

 function [fitresult, gof] = TungstenFit(Bin,Count,CountError)
[xData, yData] = prepareCurveData( Bin, Count );

% Set up fittype and options.
ft = fittype( 'b m*x A1*exp(-(x-u1)^2/(2*s1^2)) A2*exp(-(x-u2)^2/(2*s2^2)) A3*exp(-(x-u3)^2/(2*s3^2))', 'independent', 'x', 'dependent', 'y' );
opts = fitoptions( 'Method', 'NonlinearLeastSquares' );
opts.Display = 'Off';
opts.Lower = [0 0 0 0 -Inf -Inf -Inf -Inf 100 150 150];
opts.StartPoint = [850 500 50 0 -10 10 10 10 140 160 185];
opts.Upper = [Inf Inf Inf 10 Inf Inf Inf Inf Inf Inf Inf];

% Fit model to data.
[fitresult, gof] = fit( xData, yData, ft, opts );

% Plot fit with data.
figure( 'Name', 'W3LsFit' );
h = plot( fitresult, xData, yData );
legend( h, 'Tungsten Bin Counts', 'W3LsFit', 'Location', 'NorthWest' );

% Label axes
xlabel Bin
ylabel Tungsten Bin Count
grid on
  

Этот код создает точечный график, который содержит данные и отображает функцию подгонки кривой. Однако в настоящее время это ничего не делает с данными CountError.

Я очень новичок в MatLab (мне пришлось учить его самому для этого задания), поэтому буду очень признателен за любую помощь или советы. Спасибо.

Комментарии:

1. Просто идея из вашего заявления: «[…] но когда я делаю это, это перезаписывает заданный график». Знакомы ли вы с операторами hold on / hold off ?

2. Это не так. Я смог использовать его для добавления второго графика, а затем отдельно я выяснил, как удалить соединительную линию из функции errorbar. Спасибо за вашу помощь.

Ответ №1:

У меня есть рабочее решение. Для потомков, вот код, который я добавил между созданием графика и функцией легенды:

 hold on
e = errorbar(xData,yData,CountError,'LineStyle','none');
  

Первая строка приводит к тому, что график не перезаписывается, а параметры ‘LineStyle’, ‘none’ заставляют функцию errorbar добавлять полосы ошибок без проведения линии между точками данных.