最小二乘法拟合指数函数(Matlab编程),着急,请指点!
拟合函数形式为:y=a×exp(-bt);数据比较少:y=[5040302010];t=[556373100121],用matlab编程程序该怎么写啊,谢谢!需要求出未知...
拟合函数形式为:y=a×exp(-bt);数据比较少:y=[50 40 30 20 10 ]; t=[55 63 73 100 121],用matlab编程程序该怎么写啊,谢谢!
需要求出未知系数a和b的值 展开
需要求出未知系数a和b的值 展开
2个回答
展开全部
clc;
clear all;
y=[50 40 30 20 10 ]; x=[55 63 73 100 121];
a=[145.2345667367 -0.02061401470466 ];%设置初值,很关键。
f=@(a,x)a(1)*exp(-a(2)*x);
nlinfit(x,y,f,a)
%可以利用toolbox里面的拟合汪猜森函数来确定初值:
(先在窗口输入x,y值)
command window输入cftool,然后再data里面选x,y数值。create data set。
Fitting里面选择new fit, type of fit 里面选择exponential,单击apply。
在result里面就可以看到a,b的值。(还困亩有不同的组兆孙合)
然后你点击File,Generate M-file.
打开你生成的M-File,里面有st_就是matlab设置的初值。
希望可以帮到你。
clear all;
y=[50 40 30 20 10 ]; x=[55 63 73 100 121];
a=[145.2345667367 -0.02061401470466 ];%设置初值,很关键。
f=@(a,x)a(1)*exp(-a(2)*x);
nlinfit(x,y,f,a)
%可以利用toolbox里面的拟合汪猜森函数来确定初值:
(先在窗口输入x,y值)
command window输入cftool,然后再data里面选x,y数值。create data set。
Fitting里面选择new fit, type of fit 里面选择exponential,单击apply。
在result里面就可以看到a,b的值。(还困亩有不同的组兆孙合)
然后你点击File,Generate M-file.
打开你生成的M-File,里面有st_就是matlab设置的初值。
希望可以帮到你。
Sievers分析仪
2024-10-13 广告
2024-10-13 广告
是的。传统上,对于符合要求的内毒素检测,最终用户必须从标准内毒素库存瓶中构建至少一式两份三点标准曲线;必须有重复的阴性控制;每个样品和PPC必须一式两份。有了Sievers Eclipse内毒素检测仪,这些步骤可以通过使用预嵌入的内毒素标准...
点击进入详情页
本回答由Sievers分析仪提供
展开全部
%方法一
y=[50 40 30 20 10 ]; t=[55 63 73 100 121];
yp=log(y);
p = polyfit(t,yp,1);
b=-p(1)
a=exp(p(2))
yf=a*exp(-b*t);
yf-y
plot(t,y,'r+',t,yf,'b-')
legend('原始点','绝雹拟合线')
%方法二
%% Fit: 'exp1'.
[xData, yData] = prepareCurveData( t, y );
% Set up fittype and options.
ft = fittype( 'exp1' );
opts = fitoptions( ft );
opts.StartPoint = [145.2 -0.3];
% Fit model to data.
[fitresult, gof] = fit( xData, yData, ft, opts );
% Plot fit with data.
figure( 'Name', 'untitled fit 1' );
h = plot( fitresult, xData, yData );
legend( h, 'y vs. t', 'exp1', '握宏芦Location', 'NorthEast' );
% Label axes
xlabel( 't' );
ylabel( 'y' );
fitresult
gof
%方法三
y=[50 40 30 20 10 ]';
yp=log(y);
t=[55 63 73 100 121]';
tl=ones(size(t));
t1=[tl t];
p=t1\yp;
b=-p(2)
a=exp(p(1))
yf=a*exp(-b*t);
yf-y
plot(t,y,'r+',t,yf,'b-')
legend('原始点','拟段带合线')
%方法四
regress
y=[50 40 30 20 10 ]; t=[55 63 73 100 121];
yp=log(y);
p = polyfit(t,yp,1);
b=-p(1)
a=exp(p(2))
yf=a*exp(-b*t);
yf-y
plot(t,y,'r+',t,yf,'b-')
legend('原始点','绝雹拟合线')
%方法二
%% Fit: 'exp1'.
[xData, yData] = prepareCurveData( t, y );
% Set up fittype and options.
ft = fittype( 'exp1' );
opts = fitoptions( ft );
opts.StartPoint = [145.2 -0.3];
% Fit model to data.
[fitresult, gof] = fit( xData, yData, ft, opts );
% Plot fit with data.
figure( 'Name', 'untitled fit 1' );
h = plot( fitresult, xData, yData );
legend( h, 'y vs. t', 'exp1', '握宏芦Location', 'NorthEast' );
% Label axes
xlabel( 't' );
ylabel( 'y' );
fitresult
gof
%方法三
y=[50 40 30 20 10 ]';
yp=log(y);
t=[55 63 73 100 121]';
tl=ones(size(t));
t1=[tl t];
p=t1\yp;
b=-p(2)
a=exp(p(1))
yf=a*exp(-b*t);
yf-y
plot(t,y,'r+',t,yf,'b-')
legend('原始点','拟段带合线')
%方法四
regress
追问
你好,能把那个曲线的未知系数求出来吗?程序,再次感谢
追答
你拟合的目的就是求出a和b,每个程序都能求出来的。
b =
0.0229
a =
172.2620
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |