2个回答
展开全部
你最好使用曲线拟合工具箱,这个很简单的。
如果你的函数比较特别,在曲线拟合工具箱里没有,那么你就需要自己编程进行拟合了,可以使用lsqnonlin函数来做这个拟合,它是一个非线性拟合函数
下面给你一个例子
首先定义自己要拟合的函数的形式,其中a是函数中的系数,x和y是已知的数据
function E=fun(a,x,y)
x=x(:);
y=y(:);
Y=a(1)*x.^0.5 + a(2)*x;
E=y-Y;
下面的程序是调用上面的函数进行拟合
x = [2;4;6;7]'
y = [2;6;4;8]'
a0=[1 1];
options=optimset('lsqnonlin');
a=lsqnonlin(@fun,a0,[],[],options,x,y)
祝你学习愉快!
如果你的函数比较特别,在曲线拟合工具箱里没有,那么你就需要自己编程进行拟合了,可以使用lsqnonlin函数来做这个拟合,它是一个非线性拟合函数
下面给你一个例子
首先定义自己要拟合的函数的形式,其中a是函数中的系数,x和y是已知的数据
function E=fun(a,x,y)
x=x(:);
y=y(:);
Y=a(1)*x.^0.5 + a(2)*x;
E=y-Y;
下面的程序是调用上面的函数进行拟合
x = [2;4;6;7]'
y = [2;6;4;8]'
a0=[1 1];
options=optimset('lsqnonlin');
a=lsqnonlin(@fun,a0,[],[],options,x,y)
祝你学习愉快!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-01-11
展开全部
下面是相应的Matlab程序
function matexpfit(x,y)
%指数曲线拟合及其图示
%x,y为已知数据点且均为行向量
%拟合曲线
A=[ones(size(x))',x'];B=log(y)';X=A\B;
%A\B为矩阵除法求AX=B的解
fprintf('a=%f,b=%f\n',exp(X(1)),X(2))
fprintf('拟合曲线y=%fexp(%f x)\n',exp(X(1)),X(2))
clf;
x0=x(1):0.01:x(length(x));
%形如X=a:h:b是从a到b,增量为h的等间隔数
y0=X(2)*exp(X(1)*x0);
plot(x,y,'o',x0,y0,'-') %绘制以(x,y)为节点的图形
title('Exp Curve Fitting'); %给图形加标题
legend('Data','Curve Fitting') %给图形加图例
下面用MATLAB软件运行程序可得结果如下图:
产生的图形如下
function matexpfit(x,y)
%指数曲线拟合及其图示
%x,y为已知数据点且均为行向量
%拟合曲线
A=[ones(size(x))',x'];B=log(y)';X=A\B;
%A\B为矩阵除法求AX=B的解
fprintf('a=%f,b=%f\n',exp(X(1)),X(2))
fprintf('拟合曲线y=%fexp(%f x)\n',exp(X(1)),X(2))
clf;
x0=x(1):0.01:x(length(x));
%形如X=a:h:b是从a到b,增量为h的等间隔数
y0=X(2)*exp(X(1)*x0);
plot(x,y,'o',x0,y0,'-') %绘制以(x,y)为节点的图形
title('Exp Curve Fitting'); %给图形加标题
legend('Data','Curve Fitting') %给图形加图例
下面用MATLAB软件运行程序可得结果如下图:
产生的图形如下
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询