Matlab - 近似问题

时间:2015-05-23 23:59:36

标签: matlab approximation

我试图用曲线逼近几个点。 我的脚本看起来像这样:

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');

情节看起来像下面的情节,但我需要曲线不要通过负数。

plot

知道如何实现曲线的限制吗?

2 个答案:

答案 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);

输出:

enter image description here