早教吧作业答案频道 -->其他-->
用matlab遗传算法拟合曲线怎么拟合? 两组数据,必须用遗传算法,最好有程序或者详细的过程,急
题目详情
用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中文论坛回的贴
已知数据队列 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中文论坛回的贴
看了 用matlab遗传算法拟合曲...的网友还看了以下:
直线与圆锥曲线,若抛物线y=ax^2-1上总存在关于直线x+y=0对称的俩点,则实数a的取值范围为这 2020-03-30 …
传统的大小麦哲伦星云现在能称呼大小麦哲伦河外星系吗?1.我需要正确的说法.算请说理由,不算也请说理 2020-05-22 …
怎么复习遗传计算我是高三生,遗传计算这里好难啊.高考很多题涉及新的背景,各种乱七八糟的各个基因之间 2020-07-04 …
童工问题!急!我和同学想在暑假想去给我爸爸的单位发传单,我们都是未成年人,最大的17周岁,最小的不 2020-07-06 …
一个数的5%怎么算出来?用什么方法?比如100的5%是95!这个95用什么方法算出来?1500的5 2020-07-17 …
如果要改变算式868+285÷19×5的运算顺序,变成先算除法,在算加法,最后算乘法,那么算式应该 2020-07-19 …
基因遗传算概率时,什么情况用加法,什么时候用乘法?^_^? 2020-08-02 …
13.根据相关理论知识,请判断下列部门法中()属于经济法的部门法.A.反不正当竞争法B.消费者权益保 2020-11-07 …
染色问题中的公式An+An-1=2^(N-1)能具体的讲解下么??背景问题:“3人传球,从甲开始到乙 2020-11-24 …
零基础学英语,这两办法哪个比较好?原本想比较传统的,看新概念1-4这样学,但觉得好像比较慢,而且也经 2021-02-04 …