yoyo0201 发表于 2011-5-14 20:48

请问下Matlab如何加与参数(时间)相关的白噪声 于微分方程中

本帖最后由 yoyo0201 于 2011-5-14 22:15 编辑

我要用ode45求一个方程
=ode45(@f,0:0.1:50,[-10 10 0 0 0 0 0 0 0 0 0 0]);
plot(t,s(:,1),'b',t,s(:,7),'r');
function xdot=f(t,s)
%定义变量
x=s(1);y=s(2);fai=s(3);u=s(4);v=s(5);r=s(6);xg=s(7);yg=s(8);faig=s(9);ug=s(10);vg=s(11);rg=s(12);
xw=x-xg;yw=y-yg;faiw=fai-faig;uw=u-ug;vw=v-vg;rw=r-rg;
n=;ng=;nw=n-ng;vw=;
%n=n1+awgn(n1,10,'measured');
J=;V=;Vg=;
M=;
D=;
K=;
P1=;
Q1=;
Q2=;
C1=0.1*eye(3);C2=0.1*eye(3);
d1=10;d2=10;d3=1;d4=1;d5=1;d6=1;
% if t<=20
%    faid=10;
% else if 20<t<=30
%      faid=5;
%   else faid=0;
%   end
% end
nd=;nd1=;nd2=;
%求A1,A2,B
A1=-inv(M)*K;
A2=-inv(M)*D;
B=inv(M);
%求P2
P2=lyap(A2,2*Q2');
%求K1,K2
K1=inv(P1)*Q1;
K2=inv(P2)*J'*P1-A1;
%tao中矩阵求解
K11=K1';
k1=K11(:,1);k2=K1(:,2);k3=K1(:,3);
D1=;
z1=ng-nd;
z2=J*Vg+C1*z1+D1*z1-nd1;
Sluog=;
Tvg=;
ff=-(C1+D1)^2*z1+(C1+D1)*z2-nd2+J*A1*ng+J*(A2+Sluog)*Vg;
om1=(C1+D1)*K1+J*K2;om2=J*Tvg;
om11=om1';om22=om2';
w1=om11(:,1);w2=om11(:,2);w3=om11(:,3);w4=om22(:,1);w5=om22(:,2);
D2=;
%求控制路tao
tao=-inv(B)*J'*(ff+C2*z2+D2*z2+z1);
n=;
nd=J*V;
vd=A1*n+A2*V+B*tao;
ngd=J*Vg+K1*nw;
vgd=A1*ng+A2*Vg+B*tao+K2*nw;
xdot=;
其中:n=是测量值,存在测量误差,因此x,y,fai均存在高斯白噪声,我想请教下在matlab中如何将噪声加进我的x,y,fai中啊?我直接这样加n1=n+randn(3,1);然后运算速度极其慢,貌似还算不出来,请问有什么别的办法可以解决吗?

yoyo0201 发表于 2011-5-14 22:36

{:{19}:},么人回应
页: [1]
查看完整版本: 请问下Matlab如何加与参数(时间)相关的白噪声 于微分方程中