导航:首页 > 源码编译 > matlab拟合算法

matlab拟合算法

发布时间:2022-09-18 16:57:14

① matlab中用遗传算法拟合方程

例如:
已知数据队列 buf=【5410.】
x取值 1:n n是队列长度
函数 f(x)=a+b*sin(c*x+d) .
avg 是队列平均值
a b c d 为参数 a范围 (2/3,1)*avg
b范围 (0,1/3)*avg
c的范围 (0,24*pi)
d (0,2*pi)
1、首先定义目标函数
function y=ga_curfit(x)
global ydata n
t=1:n;
y=0;
for i=1:n
y=y+(ydata(i)-(x(:,1)+x(:,2).*sin(x(:,3).*t(i)+x(:,4)))).^2/n;
end
y=sqrt(y);
end
2、把数据b.txt放在工作空间目录中
然后再命令窗口中输入
clear
global ydata n
format long g
load b.txt
ydata=b';
n=length(ydata);
avg=sum(ydata)/n;
LB=[2/3*avg 0 0 0];
UB=[1*avg 1/3*avg 24*pi 2*pi];
nvars=4;
options=gaoptimset;
options=gaoptimset(options,'PopulationSize',300);
options=gaoptimset(options,'CrossoverFraction',0.8);
options=gaoptimset(options,'MigrationFraction',0.1);
options=gaoptimset(options,'Generations',500);
options = gaoptimset(options,'TolFun',1e-50);
%options = gaoptimset(options,'InitialPopulation',final_pop);
options = gaoptimset(options,'Display','final');
options = gaoptimset(options,'PopInitRange',[LB;UB]);
options = gaoptimset(options,'PlotFcns',@gaplotbestf);
options=gaoptimset(options,'Vectorize','on');%目标函数向量化
[x,fval,exitflag,output,final_pop,scores]=ga(@ga_curfit,nvars,[],[],[],[],LB,UB,[],options);
t=1:n;
plot(t,ydata,'r*');
hold on
plot(t,x(1)+x(2)*sin(x(3)*t+x(4)))
legend('数据','拟合')

② matlab中怎么求拟合

polyfit最小二乘法拟合,一般这个就很好用
高级一点的,start——toolboxs——curve fitting——curve fitting tool
用拟合工具箱,这里包括了常用的所有拟合函数。你也可以自己定义函数拟合求出你要的系数。一般matlab书上都会介绍工具箱的用法。
进入曲线拟合工具箱界面“Curve Fitting tool”
(1)点击“Data”按钮,弹出“Data”窗口;
(2)利用X data和Y data的下拉菜单读入数据x,y,可修改数据集名“Data set name”,然后点击“Create data set”按钮,退出“Data”窗口,返回工具箱界面,这时会自动画出数据集的曲线图;
(3)点击“Fitting”按钮,弹出“Fitting”窗口;
(4)点击“New fit”按钮,可修改拟合项目名称“Fit name”,通过“Data set”下拉菜单选择数据集,然后通过下拉菜单“Type of fit”选择拟合曲线的类型,工具箱提供的拟合类型有:

Custom Equations:用户自定义的函数类型
Exponential:指数逼近,有2种类型, a*exp(b*x) 、 a*exp(b*x) + c*exp(d*x)
Fourier:傅立叶逼近,有7种类型,基础型是 a0 + a1*cos(x*w) + b1*sin(x*w)
Gaussian:高斯逼近,有8种类型,基础型是 a1*exp(-((x-b1)/c1)^2)
Interpolant:插值逼近,有4种类型,linear、nearest neighbor、cubic spline、shape-preserving
Polynomial:多形式逼近,有9种类型,linear ~、quadratic ~、cubic ~、4-9th degree ~
Power:幂逼近,有2种类型,a*x^b 、a*x^b + c
Rational:有理数逼近,分子、分母共有的类型是linear ~、quadratic ~、cubic ~、4-5th degree ~;此外,分子还包括constant型
Smoothing Spline:平滑逼近(翻译的不大恰当,不好意思)
Sum of Sin Functions:正弦曲线逼近,有8种类型,基础型是 a1*sin(b1*x + c1)
Weibull:只有一种,a*b*x^(b-1)*exp(-a*x^b)
选择好所需的拟合曲线类型及其子类型,并进行相关设置:
——如果是非自定义的类型,根据实际需要点击“Fit options”按钮,设置拟合算法、修改待估计参数的上下限等参数;
——如果选Custom Equations,点击“New”按钮,弹出自定义函数等式窗口,有“Linear Equations线性等式”和“General Equations构造等式”两种标签。
在本例中选Custom Equations,点击“New”按钮,选择“General Equations”标签,输入函数类型y=a*x*x + b*x,设置参数a、b的上下限,然后点击OK。

(5)类型设置完成后,点击“Apply”按钮,就可以在Results框中得到拟合结果,如下例:

general model:
f(x) = a*x*x+b*x
Coefficients (with 95% confidence bounds):
a = 0.009194 (0.009019, 0.00937)
b = 1.78e-011 (fixed at bound)
Goodness of fit:
SSE: 6.146
R-square: 0.997
Adjusted R-square: 0.997
RMSE: 0.8263

同时,也会在工具箱窗口中显示拟合曲线。

这样,就完成一次曲线拟合啦,十分方便快捷。当然,如果你觉得拟合效果不好,还可以在“Fitting”窗口点击“New fit”按钮,按照步骤(4)~(5)进行一次新的拟合。
不过,需要注意的是,cftool 工具箱只能进行单个变量的曲线拟合,即待拟合的公式中,变量只能有一个。对于混合型的曲线,例如 y = a*x + b/x ,工具箱的拟合效果并不好。
这是一点介绍,具体还得自己摸索啊,少年

③ Matlab正弦曲线拟合

方法/步骤

④ 怎么用matlab进行非线性的多元函数拟合

方法一:

1、最常用的是多项式拟合,采用polyfit函数,在命令窗口输入自变量x和因变量y。

⑤ Matlab曲线拟合

>>x=[0.25,.5.75,1,1.5,2,2.5,3,3.5,4,4.5,5,6,7,8,9,10,11,12,13,14,15,16];

>>y=...

[30,68,75,82,82,77,68,68,58,51,50,41,38,35,28,25,18,15,12,10,7,7,4];

>>plot(x,y,'-')

得到一个图像

可以看出他大概类似于一条抛物线

可以用二次拟合

输入:

>>a=polyfit(x,y,2)

>>a=

0.0904-6.138775.1158

所以拟合后的曲线为:

y=0.0904t^2-6.1387t+75.1158

(y是酒精含量,t是时间)

检验后符合条件

⑥ matlab数据太多怎么拟合曲线

一、 单一变量的曲线逼近
Matlab有一个功能强大的曲线拟合工具箱
cftool ,使用方便,能实现多种类型的线性、非线
性曲线拟合。下面结合我使用的 Matlab R2007b 来简单介绍如何使用这个工具箱。
假设我们要拟合的函数形式是 y=A*x*x + B*x, 且A>0,B>0 。
1、在命令行输入数据:

》x=[110.3323 148.7328 178.064 202.8258033 224.7105 244.5711 262.908
280.0447
296.204 311.5475]

》y=[5 10 15 20 25 30 35 40 45 50]

2、启动曲线拟合工具箱
》cftool

3、进入曲线拟合工具箱界面逗Curve Fitting
tool地
(1)点击逗Data地按钮,弹出逗Data地窗口;
(2)利用X data和Y data的下拉菜单读入数据x,y,可修改数据集名逗Data set
name地,然
后点击逗Create data set地按钮,退出逗Data地窗口,返回工具箱界面,这时会自动画出数
据集的曲线图;
(3)点击逗Fitting地按钮,弹出逗Fitting地窗口;
(4)点击逗New fit地按钮,可修改拟合项目名称逗Fit name地,通过逗Data
set地下拉菜单
选择数据集,然后通过下拉菜单逗Type of fit地选择拟合曲线的类型,工具箱提供的拟合类
型有:
Custom
Equations:用户自定义的函数类型
Exponential:指数逼近,有2种类型, a*exp(b*x) 、 a*exp(b*x) +
c*exp(d*x)
Fourier:傅立叶逼近,有7种类型,基础型是 a0 + a1*cos(x*w) +
b1*sin(x*w)
Gaussian:高斯逼近,有8种类型,基础型是 a1*exp(-((x-b1)/c1)^2)
Interpolant:插值逼近,有4种类型,linear、nearest neighbor、cubic
spline、shape-
preserving
Polynomial:多形式逼近,有9种类型,linear ~、quadratic ~、cubic ~、4-9th degree
~
Power:幂逼近,有2种类型,a*x^b 、a*x^b + c
Rational:有理数逼近,分子、分母共有的类型是linear ~、quadratic ~、cubic
~、4-5th
degree ~;此外,分子还包括constant型
Smoothing Spline:平滑逼近(翻译的不大恰当,不好意思)
Sum of Sin Functions:正弦曲线逼近,有8种类型,基础型是 a1*sin(b1*x +
c1)
Weibull:只有一种,a*b*x^(b-1)*exp(-a*x^b)
选择好所需的拟合曲线类型及其子类型,并进行相关设置:
——如果是非自定义的类型,根据实际需要点击逗Fit options地按钮,设置拟合算法、修改
待估计参数的上下限等参数;
——如果选Custom
Equations,点击逗New地按钮,弹出自定义函数等式窗口,有逗Linear
Equations线性等式地和逗General Equations构造等式地两种标签。
在本例中选Custom Equations,点击逗New地按钮,选择逗General
Equations地标签,输入函
数类型y=a*x*x + b*x,设置参数a、b的上下限,然后点击OK。
(5)类型设置完成后,点击逗Apply地按钮,就可以在Results框中得到拟合结果,如下例:
general model:
f(x) = a*x*x+b*x
Coefficients (with 95% confidence bounds):
a = 0.009194 (0.009019, 0.00937)
b = 1.78e-011 (fixed at bound)
Goodness of fit:
SSE: 6.146
R-square: 0.997
Adjusted R-square: 0.997
RMSE: 0.8263
同时,也会在工具箱窗口中显示拟合曲线。
这样,就完成一次曲线拟合啦,十分方便快捷。当然,如果你觉得拟合效果不好,还可以在逗
Fitting地窗口点击逗New fit地按钮,按照步骤(4)~(5)进行一次新的拟合。
不过,需要注意的是,cftool 工具箱只能进行单个变量的曲线拟合,即待拟合的公式中,变
量只能有一个。对于混合型的曲线,例如 y = a*x + b/x ,工具箱的拟合效果并不好。

⑦ matlab如何进行曲线拟合

您好,这样的:一、 单一变量的曲线逼近
Matlab有一个功能强大的曲线拟合工具箱 cftool ,使用方便,能实现多种类型的线性、非线
性曲线拟合。下面结合我使用的 Matlab R2007b 来简单介绍如何使用这个工具箱。
假设我们要拟合的函数形式是 y=A*x*x + B*x, 且A>0,B>0 。
1、在命令行输入数据:

》x=[110.3323 148.7328 178.064 202.8258033 224.7105 244.5711 262.908 280.0447
296.204 311.5475]

》y=[5 10 15 20 25 30 35 40 45 50]

2、启动曲线拟合工具箱
》cftool

3、进入曲线拟合工具箱界面“Curve Fitting tool”
(1)点击“Data”按钮,弹出“Data”窗口;
(2)利用X data和Y data的下拉菜单读入数据x,y,可修改数据集名“Data set name”,然
后点击“Create data set”按钮,退出“Data”窗口,返回工具箱界面,这时会自动画出数
据集的曲线图;
(3)点击“Fitting”按钮,弹出“Fitting”窗口;
(4)点击“New fit”按钮,可修改拟合项目名称“Fit name”,通过“Data set”下拉菜单
选择数据集,然后通过下拉菜单“Type of fit”选择拟合曲线的类型,工具箱提供的拟合类
型有:
Custom Equations:用户自定义的函数类型
Exponential:指数逼近,有2种类型, a*exp(b*x) 、 a*exp(b*x) + c*exp(d*x)
Fourier:傅立叶逼近,有7种类型,基础型是 a0 + a1*cos(x*w) + b1*sin(x*w)
Gaussian:高斯逼近,有8种类型,基础型是 a1*exp(-((x-b1)/c1)^2)
Interpolant:插值逼近,有4种类型,linear、nearest neighbor、cubic spline、shape-
preserving
Polynomial:多形式逼近,有9种类型,linear ~、quadratic ~、cubic ~、4-9th degree ~
Power:幂逼近,有2种类型,a*x^b 、a*x^b + c
Rational:有理数逼近,分子、分母共有的类型是linear ~、quadratic ~、cubic ~、4-5th
degree ~;此外,分子还包括constant型
Smoothing Spline:平滑逼近(翻译的不大恰当,不好意思)
Sum of Sin Functions:正弦曲线逼近,有8种类型,基础型是 a1*sin(b1*x + c1)
Weibull:只有一种,a*b*x^(b-1)*exp(-a*x^b)
选择好所需的拟合曲线类型及其子类型,并进行相关设置:
——如果是非自定义的类型,根据实际需要点击“Fit options”按钮,设置拟合算法、修改
待估计参数的上下限等参数;
——如果选Custom Equations,点击“New”按钮,弹出自定义函数等式窗口,有“Linear
Equations线性等式”和“General Equations构造等式”两种标签。
在本例中选Custom Equations,点击“New”按钮,选择“General Equations”标签,输入函
数类型y=a*x*x + b*x,设置参数a、b的上下限,然后点击OK。

⑧ MATLAB遗传算法拟合

代码:

function y=myfung(x)

% TOT =[2.057 3.6094 4.9881 6.0189 6.8371 7.4881 8.0047 8.4151 8.7411 9.0000];

% t=[1:10];

% [r,s]=size(TOT);

% y=0;

% for i=1:s

% y=y+(TOT(i)-x(:,1)*(1 -exp(-x(:,2)*t(i))))^2 %最小估计原则

% end

%

x1=[-0.05 0.25 0.60 0 0.25 0.20 0.15 0.05 -0.15 0.15 0.20 0.10 0.40 0.45 0.35 0.30 0.50 0.50 0.40 -0.05 -0.05 -0.10 0.20 0.10 0.50 0.60 -0.05 0 0.05 0.55];

x2=[5.50 6.75 7.25 5.50 7.00 6.50 6.75 5.25 5.25 6.00 6.50 6.25 7.00 6.90 6.80 6.80 7.10 7.00 6.80 6.50 6.25 6.00 6.50 7.00 6.80 6.80 6.50 5.75 5.80 6.80];

y0=[7.38 8.51 9.52 7.50 9.33 8.28 8.75 7.87 7.10 8.00 7.89 8.15 9.10 8.86 8.90 8.87 9.26 9.00 8.75 7.95 7.65 7.27 8.00 8.50 8.75 9.21 8.27 7.67 7.93 9.26];

x3=x1.*x2;

TOT=y0;

[r,s]=size(TOT);

y=0;

for i=1:s

y2=x(:,1)+x(:,2).*x1(i)+x(:,3).*x2(i)+x(:,4).*x2(i)^2+x(:,5).*x3(i);

y=y+(TOT(i)-y2)^2 %最小估计原则

end

end

参数依次为

-1.151 5.652 -0.212 0.267 -1.165

每一次运算结果会有差异,因此起始值是随机的,所以优化过程也是不同的。

⑨ matlab如何做线性拟合

方法一

1、最常用的是多项式拟合,采用polyfit函数,在命令窗口输入自变量x和因变量y。

⑩ matlab画出的曲线怎么拟合函数

拟合步骤:
1、求(获)得一系列x,y对应值
x=[...]
y=[...]
2、根据画出的曲线,,设定拟合函数
fun=inline('a(1)+a(2)*exp(a(3)*x','a','x')
3、初定x0的初值
x0=[0 0 0]
4、用拟合函数求出拟合系数
a=lsqcurvefit(fun,x0,x,y) 或 a= nlinfit(x,y,fun,x0)
用cftool的结果与实际是有较大的误差。你不仿用二种获得的拟合函数,将已知值x代人,得到的yi,那个更接近已知值y。
一般用cftool工具箱,来判断拟合函数可能的形式。

阅读全文

与matlab拟合算法相关的资料

热点内容
程序员中年生活 浏览:353
读取加密信息失败怎么回事 浏览:508
编译过程之后是预处理吗 浏览:349
安卓是基于什么做出来 浏览:598
视频字幕提取APP怎么使用 浏览:57
js通过ip地址连接服务器吗 浏览:846
java数字金额大写金额 浏览:856
人人影视路由器固件编译 浏览:965
照片通讯录短信怎么从安卓到苹果 浏览:456
逻辑开发编译环境 浏览:670
ce自己编译 浏览:896
javaexe进程 浏览:478
电脑wechat是什么文件夹 浏览:956
单片机moc3041 浏览:786
at命令串口助手 浏览:749
吸血app怎么关闭 浏览:35
云服务器地图不见了怎么办 浏览:240
mc服务器应该叫什么名字 浏览:607
推拉门增加密封性 浏览:731
服务器搬家需要什么 浏览:541