怎样用matlab进行模型拟合
答案:2 悬赏:0
解决时间 2021-03-09 08:43
- 提问者网友:小姐请专情
- 2021-03-08 16:36
怎样用matlab进行模型拟合
最佳答案
- 二级知识专家网友:山鬼偶尔也合群
- 2021-03-08 17:46
下面是相应的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') %给图形加图例
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') %给图形加图例
全部回答
- 1楼网友:输掉的尊严
- 2021-03-08 18:47
可以先以行向量的形式输入所得的x,y,即x=[ ];y=[ ];再用polyfit(x,y,n)命令便可将所测x,y拟和为函数,n为函数的阶数。得出结果的是按从x的n次方降幂排列的系数,由此便可得出y与x的关系函数。
以函数y=(x+1)的平方为例 (未知)。假设测得5组数据,x=[-2,-1,0,1,2];y=[1,0,1,4,9];
polyfit(x,y,2);便可得到 ans=1.000 2.000 1.000
由此可知y=1*x平方 + 2*x + 1 ,
再根据这个函数关系,定义y=x平方+2*x+1;x=(-2:0.1:2);plot(x,y);便可得到所测数据拟和为函数后的图象。
该回答在2006-03-16 10:42:08由回答者修改过
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯