我试图用曲线逼近几个点。 我的脚本看起来像这样:
T = [ 0 5.67 13.28 20.18 26.84 37.74];
T = T';
eta = [0 54.33 70.91 73.56 73.29 76.];
eta = eta'
f4 = fit(eta, T, 'poly2');
f5 = fit(eta, T, 'poly3');
情节看起来像下面的情节,但我需要曲线不要通过负数。
知道如何实现曲线的限制吗?
答案 0 :(得分:2)
我找到了解决方案。我没有彻底阅读matlab中的文档。所以它应该是:
f5 = fit(eta, T, 'exp1');
答案 1 :(得分:0)
我认为这是一个相当广泛的问题,取决于曲线拟合算法。作为基于Matlab有关fit
listed here的信息的示例,我执行了以下代码段。它给出了一个非负曲线。但我希望有人会给你一个更好的答案。
T = [0 5.67 13.28 20.18 26.84 37.74]';
eta = [0 54.33 70.91 73.56 73.29 76.]';
f4 = fit(eta, T, 'poly2');
f5 = fit(eta, T, 'poly3');
fo = fitoptions('Method','NonlinearLeastSquares',...
'Lower',[0,0],...
'Upper',[Inf,max(eta)],...
'StartPoint',[0 0]);
ft = fittype('a*(x-b)^n','problem','n','options',fo);
[curve3,gof3] = fit(eta,T,ft,'problem',2);
plot(curve3,eta,T);
输出: