直接用广义RBF网络我感觉比较方便,而且可以直接用newgrnn(P,T,spread)函数。
RLS算法的MATLAB程序在附件,你可以参考下。
最小二乘大约是1795年高斯在他那星体运动轨道预报工作中提出的[1]。后来,最小二乘法就成了估计理论的奠基石。由于最小二乘法结构简单,编制程序也不困难,所以它颇受人们重视指或,应用相当广泛。
如用标准符号,最小二乘估计可被表示为:
AX=B (2-43)
上式中的解是最小化 ,通过下式中的伪逆可求得:
A'笑逗源AX=A'B (2-44)
(A'A)^(-1)A'AX=(A'A)^(-1)A'B (2-45)
由于
(A'A)^-1A'A=I (2-46)
所以有
X=(A'A)^(-1)A'B (2-47)
此即最小二乘的一次完成算法,现代的递推算法碰态,更适用于计算机的在线辨识。
最小二乘是一种最基本的辨识方法,但它具有两方面的缺陷[1]:一是当模型噪声是有色噪声时,最小二乘估计不是无偏、一致估计;二是随着数据的增长,将出现所谓的“数据饱和”现象。针对这两个问题,出现了相应的辨识算法,如遗忘因子法、限定记忆法、偏差补偿法、增广最小二乘、广义最小二乘、辅助变量法、二步法及多级最小二乘法等。
1、如果仿真一个传递函数的阶锋氏跃、脉衫散冲等响应,可以直接使用matlab函数。2、如果是一个复银塌散杂的系统,需要使用matlab中的Simulink工具箱。
3、仿真方法,仿真(s+1)/(2s^2+2s+1)的阶跃响应
num=[1 1]
den=[2 2 1]
f=tf(num,den)
Transfer function:
s + 1
2 s^2 + 2 s + 1
>>step(f)
这样就可以得到它的响应曲线。
format longtp=input('tp=')
toc=input('toc=')
a0=input('a0=')
a1=input('a1=')
a2=input('a2=')
toe=input('toe=')
M0=input('M0=')
a=input('长半径a=')
deltan=input('卫星平均角速度之差deltan=')
e=input('e=')
w=input('w=')
Cuc=input('Cuc=')
Cus=input('Cus=')
Cic=input('Cic=')
Cis=input('Cis=')
Crc=input('Crc=')
Crs=input('Crs=')
i0=input('i0=')
I=input('轨道倾角变化率I=')
OM0=input('OM0=')
OM=input('升交点赤径变化率OM=')
tt=a0+a1*(tp-toc)+a2*(tp-toc)
t=tp-tt
tk=t-toe
u=3986005*10^8
n0=sqrt(u/a^3)
n=n0+deltan
Mk=M0+n*tk
Dk=1
Ek=0
n1=0
while abs(Ek-Dk)>0.0000000001
n1=n1+1
Ek=Dk
Dk=Mk+e*sin(Ek)
end
Ek=Dk
Vk=atan(sqrt(1-e*e)*sin(Ek)/(cos(Ek)-e))
if sin(Ek)>0 &cos(Ek)-e<0
Vk=pi-Vk
elseif sin(Ek)<0 &cos(Ek)-e<0
Vk=pi+Vk
elseif sin(Ek)<0 &cos(Ek)-e>0
Vk=2*pi-Vk
end
Faik=Vk+w
SigmaU=Cuc*cos(2*Faik)+Cus*sin(2*Faik)
SigmaR=Crc*cos(2*Faik)+Crs*sin(2*Faik)
SigmaI=Cic*cos(2*Faik)+Cis*sin(2*Faik)
Uk=Faik+SigmaU
Rk=a*(1-e*cos(Ek))+SigmaR
Ik=i0+SigmaI+I*tk
X0=Rk*cos(Uk)
Y0=Rk*sin(Uk)
we=7.29211567*10^(-5)
OMK=OM0+(OM-we)*tk-we*toe
Xk=X0*cos(OMK)-Y0*cos(Ik)*sin(OMK)
Yk=X0*sin(OMK)+Y0*cos(Ik)*cos(OMK)
Zk=Y0*sin(Ik)
disp(['卫星钟差改正dt=',num2str(tt)])
disp(['归化时刻tk=',num2str(tk)])
disp(['平均运行角速度n=',num2str(n)])
disp(['卫宏纳星平近点角Mk=',num2str(Mk)])
disp(['偏近点角Ek=',num2str(Ek)])
disp(['真近点角Vk=',num2str(Vk)])
disp(['升交距角Faik=',num2str(Faik)])
disp(['摄动改正迟绝谈项SigmaU=',num2str(SigmaU)])
disp(['摄动改正项SigmaR=',num2str(SigmaR)])
disp(['摄动改正项SigmaI=',num2str(SigmaI)])
disp('经过摄动改正项:')
disp(['升交距角Uk=',num2str(Uk)])
disp(['卫星矢径Rk=',num2str(Rk)])
disp(['轨道倾角Ik=',num2str(Ik)])
disp('卫星在轨道平面码碰坐标系的坐标')
disp(['X0=',num2str(X0)])
disp(['Y0=',num2str(Y0)])
disp(['观测时刻升交点经度OMK=',num2str(OMK)])
disp('卫星在地心固定坐标系中的直角坐标')
disp(['Xk=',num2str(Xk)])
disp(['Yk=',num2str(Yk)])
disp(['Zk=',num2str(Zk)])
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)