早教吧 育儿知识 作业答案 考试题库 百科 知识分享

关于粒子群算法中调用m文件出错我最近参考别人的程序写了一个自己的程序但是代入不了fitness函数,)我要做的是y(k)=a1*y(k-1)+b1*u(k-1)+a2*y(k-2)+a3*y(k-3)函数a1,a2,a3,b1.已知y和u,我把适应度取为399组

题目详情
关于粒子群算法中调用m文件出错
我最近参考别人的程序写了一个自己的程序但是代入不了fitness函数,) 我要做的是y(k)=a1*y(k-1)+b1*u(k-1)+a2*y(k-2)+a3*y(k-3)函数a1,a2,a3,b1.已知y和u,我把适应度取为399组数据的[y(k)-a1*y(k-1)-b1*u(k-1)-a2*y(k-2)-a3*y(k-3)]^2最小,
function [out]=fitness(x)
ai=x(i,:) %第几组数据就是取第几个;
a1=ai(1)
a2=ai(2)
a3=ai(3)
a4=ai(4)
u=load('F:\测试记录控制.txt');u1=u(2:399,2);
y=load('F:\测试记录反馈.txt');y1=y(2:400,2);
c=0;
for k=3:399
f=[y(k)-a1*y1(k-1)-a2*y1(k-2)-a3*y1(k-3)-b1*u1(k-1)]^2 %求出各级数据的平方和并逐渐相加得到一组对对应变量的适应度
c=c+f
Msum(k)=c;
end%
out=Msum(:,k); %输出适应度
那么在粒子群算法中应如何调用这个函数呢?当位置和速度更新后,怎么计算这时的适应度呢?
fitness(i)=fitness(pop(i,:)这样调用为什么会出错呢?而且是在计算第一组数据的时候正确,用行第二组数据就出现
pop =
-0.0069 0.7995 0.6433 0.2898 0.6359
0.4542 -0.3814 0.6770 0.1361 -0.2592
v =
0.6602 0.3420 0.2897 0.3412 0.5341
0.7027 0.5466 0.4449 0.6946 0.6213
Subscript indices must either be real positive integers or logicals.
Error in ==> myPSO at 14
fitness(i)=fitness(pop(i,:))
就是这位热心人,如果你上来,请来这再做个回复,我把分给你,谢谢你的回复,真不好意思.
▼优质解答
答案和解析
做任务 请谅解