plotting multiple fitting graphs in a single graph
17 次查看(过去 30 天)
显示 更早的评论
Hi ,
I want to plot 2 fitting graphs on the same plot, i tried to use hold on , but it doesn't work
here is the code the one that ( with large scale of noise =5 on the same figure with large scale of noise =10)
% with large scale of noise = 10
xData = [10 9 8 7 6 5 4 3 2 1 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10]
yData = [99 99 99 99 99 99 98 92 85 70 48 31 7 3 1 0 0 0 0 0 0]
x= xData'
y=yData'
% Set up fittype and options.
ft = fittype( 'a/(1+exp(-b*x))', 'independent', 'x', 'dependent', 'y' );
opts = fitoptions( 'Method', 'NonlinearLeastSquares' );
opts.Display = 'Off';
opts.StartPoint = [0.957166948242946 0.485375648722841];
% Fit model to data.
[fitresult, gof] = fit( x, y, ft, opts );
% Plot fit with data.
figure( 'Name', 'untitled fit 1' );
h = plot( fitresult, xData, yData );
hold on
legend( h, 'y vs. x', 'untitled fit 1', 'Location', 'NorthEast', 'Interpreter', 'none' );
% Label axes
xlabel( 'x', 'Interpreter', 'none' );
ylabel( 'y', 'Interpreter', 'none' );
grid on
saveas(gcf,'myfigure.pdf')
hold on
% with large scale of noise = 5
tData = [10 9 8 7 6 5 4 3 2 1 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10]
bData = [99 99 99 99 99 99 99 99 98 84 47 8 1 0 0 0 0 0 0 0 0]
x= tData'
y=bData'
% Set up fittype and options.
ft = fittype( 'a/(1+exp(-b*x))', 'independent', 'x', 'dependent', 'y' );
opts = fitoptions( 'Method', 'NonlinearLeastSquares' );
opts.Display = 'Off';
opts.StartPoint = [0.957166948242946 0.485375648722841];
% Fit model to data.
[fitresult, gof] = fit( x, y, ft, opts );
% Plot fit with data.
figure( 'Name', 'untitled fit 1' );
h = plot( fitresult, tData, bData );
0 个评论
回答(2 个)
Cris LaPierre
2022-11-16
By including the figure command, you are telling MATLAB to create a new figure window. Removing that and making some minor cosmetic changes, here is how I would do it.
% with large scale of noise = 10
xData = [10 9 8 7 6 5 4 3 2 1 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10]';
yData = [99 99 99 99 99 99 98 92 85 70 48 31 7 3 1 0 0 0 0 0 0]';
% Set up fittype and options.
ft1 = fittype( 'a/(1+exp(-b*x))', 'independent', 'x', 'dependent', 'y' );
opts1 = fitoptions( 'Method', 'NonlinearLeastSquares' );
opts1.Display = 'Off';
opts1.StartPoint = [0.957166948242946 0.485375648722841];
% Fit model to data.
[fitresult1, gof1] = fit( xData, yData, ft1, opts1 );
% Plot fit with data.
figure( 'Name', 'untitled fit 1' );
plot( fitresult1, xData, yData );
legend('y vs. x', 'untitled fit 1', 'Location', 'NorthEast', 'Interpreter', 'none' );
% Label axes
xlabel( 'x', 'Interpreter', 'none' );
ylabel( 'y', 'Interpreter', 'none' );
grid on
% with large scale of noise = 5
tData = [10 9 8 7 6 5 4 3 2 1 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10]';
bData = [99 99 99 99 99 99 99 99 98 84 47 8 1 0 0 0 0 0 0 0 0]';
% Set up fittype and options.
ft2 = fittype( 'a/(1+exp(-b*x))', 'independent', 'x', 'dependent', 'y' );
opts2 = fitoptions( 'Method', 'NonlinearLeastSquares' );
opts2.Display = 'Off';
opts2.StartPoint = [0.957166948242946 0.485375648722841];
% Fit model to data.
[fitresult2, gof2] = fit( tData, bData, ft2, opts2 );
% Plot fit with data.
hold on
plot( fitresult2, tData, bData,'c.' );
hold off
Star Strider
2022-11-16
The code works as posted.
If you want to plot both results on the same axes, that is straightforward. See the third figure —
% with large scale of noise = 10
xData = [10 9 8 7 6 5 4 3 2 1 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10];
yData = [99 99 99 99 99 99 98 92 85 70 48 31 7 3 1 0 0 0 0 0 0];
x= xData(:);
y=yData(:);
% Set up fittype and options.
ft = fittype( 'a/(1+exp(-b*x))', 'independent', 'x', 'dependent', 'y' );
opts = fitoptions( 'Method', 'NonlinearLeastSquares' );
opts.Display = 'Off';
opts.StartPoint = [0.957166948242946 0.485375648722841];
% Fit model to data.
[fitresult, gof] = fit( x, y, ft, opts );
% Plot fit with data.
figure( 'Name', 'untitled fit 1' );
h1 = plot( fitresult, xData, yData )
hold on
legend( h1, 'y vs. x', 'untitled fit 1', 'Location', 'NorthEast', 'Interpreter', 'none' );
% Label axes
xlabel( 'x', 'Interpreter', 'none' );
ylabel( 'y', 'Interpreter', 'none' );
grid on
saveas(gcf,'myfigure.pdf')
hold on
% with large scale of noise = 5
tData = [10 9 8 7 6 5 4 3 2 1 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10];
bData = [99 99 99 99 99 99 99 99 98 84 47 8 1 0 0 0 0 0 0 0 0];
x= tData(:);
y=bData(:);
% Set up fittype and options.
ft = fittype( 'a/(1+exp(-b*x))', 'independent', 'x', 'dependent', 'y' );
opts = fitoptions( 'Method', 'NonlinearLeastSquares' );
opts.Display = 'Off';
opts.StartPoint = [0.957166948242946 0.485375648722841];
% Fit model to data.
[fitresult, gof] = fit( x, y, ft, opts );
% Plot fit with data.
figure( 'Name', 'untitled fit 1' );
h2 = plot( fitresult, tData, bData )
figure
plot(h1(1).XData, h1(1).YData, 'sb', 'DisplayName','Data 1')
hold on
plot(h1(2).XData, h1(2).YData, '-r', 'DisplayName','Curve 1')
plot(h2(1).XData, h2(1).YData, 'db', 'DisplayName','Data 2')
plot(h2(2).XData, h2(2).YData, '-g', 'DisplayName','Curve 2')
hold off
grid
legend('Location','best')
Make appropriate changes to get the desired result.
.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Linear and Nonlinear Regression 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!