Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2009-04-14, 23:26   #1
yuan_buct
初级会员
 
注册日期: 2009-04-14
帖子: 7
声望力: 0
yuan_buct 正向着好的方向发展
问题 求非线性方程在不进行线性化的情况下离散化

已知非线性随机微分方程dx/dt=f(x,u)+w(t),其中x为系统状态向量,u为控制输入向量,w(t)为零均值高斯白噪声向量,我的课题需要先将该方程离散化(但不进行线性化),然后针对离散化后得到的非线性离散随机系统,利用可观测量的采样值使用非线性滤波方法对其进行估计,这其中离散化环节该如何处理?怎么用matlab实现啊?急用,谢谢了!
yuan_buct 当前离线   回复时引用此帖
旧 2009-04-15, 03:13   #2
zt_zt
初级会员
 
注册日期: 2009-04-15
年龄: 39
帖子: 14
声望力: 17
zt_zt 正向着好的方向发展
默认 回复: 求非线性方程在不进行线性化的情况下离散化

先线性化再离散没有固定的公式
离散化需要人工做<--此处笔误。下文是正确的

此帖于 2009-04-17 01:33 被 zt_zt 编辑。
zt_zt 当前离线   回复时引用此帖
旧 2009-04-15, 17:36   #3
yuan_buct
初级会员
 
注册日期: 2009-04-14
帖子: 7
声望力: 0
yuan_buct 正向着好的方向发展
默认 回复: 求非线性方程在不进行线性化的情况下离散化

谢谢你的答案,但我想问用龙哥库塔法解出微分方程的数值解后,怎么再按给定的采样时间进行离散化啊?
yuan_buct 当前离线   回复时引用此帖
旧 2009-04-16, 01:27   #4
zt_zt
初级会员
 
注册日期: 2009-04-15
年龄: 39
帖子: 14
声望力: 17
zt_zt 正向着好的方向发展
默认 回复: 求非线性方程在不进行线性化的情况下离散化

离散化不是问题,c2d(sys,T)就可以了。关键问题是线性化,每走一步就要线性化一次计算量太大。如果你的系统特殊就先吧线性化表示成函数就变成时变系统了。或者采用次优滤波。
zt_zt 当前离线   回复时引用此帖
旧 2009-04-16, 17:37   #5
yuan_buct
初级会员
 
注册日期: 2009-04-14
帖子: 7
声望力: 0
yuan_buct 正向着好的方向发展
默认 回复: 求非线性方程在不进行线性化的情况下离散化

我是用UKF滤波算法,所以不能进行线性化?c2d()对于非线性系统也可以?sys怎么代入啊?但是用EKF算法需要线性化,我也愁着呢。
yuan_buct 当前离线   回复时引用此帖
旧 2009-04-16, 17:46   #6
yuan_buct
初级会员
 
注册日期: 2009-04-14
帖子: 7
声望力: 0
yuan_buct 正向着好的方向发展
默认 回复: 求非线性方程在不进行线性化的情况下离散化

系统很简单,是二阶微分方程组dx1/dt=-x2;dx2/dt=-0.2(1-x1^2)*x2
yuan_buct 当前离线   回复时引用此帖
旧 2009-04-16, 17:47   #7
yuan_buct
初级会员
 
注册日期: 2009-04-14
帖子: 7
声望力: 0
yuan_buct 正向着好的方向发展
默认 回复: 求非线性方程在不进行线性化的情况下离散化

写错了,是dx1/dt=-x2;dx2/dt=-0.2(1-x1^2)*x2+x1,y=[x1 x2]'
yuan_buct 当前离线   回复时引用此帖
旧 2009-04-17, 01:30   #8
zt_zt
初级会员
 
注册日期: 2009-04-15
年龄: 39
帖子: 14
声望力: 17
zt_zt 正向着好的方向发展
默认 回复: 求非线性方程在不进行线性化的情况下离散化

UKF的话好像不要线性化的。可能我记错了,大概是跟PF差不多思想的吧。c2d是线性化以后再做的。
比方说你那个方程在某点线性化后a=[1 2;3 4],b=[1 2],c=[3 4],d=0
就调用sys=c2d(ss(a,b,c,d),T).T为采样时间。
让后回的sys可以直接带matlab自带kalman函数。
或者G=eye+T*a B=B H=T*B d=0离散化,但此时X(t)—>X(kT)中T未提出,所以最终滤波结束请在X(k)上乘以T。(也可以在滤波前就处理下,感觉都差不多的)
zt_zt 当前离线   回复时引用此帖
旧 2009-04-19, 12:50   #9
yuan_buct
初级会员
 
注册日期: 2009-04-14
帖子: 7
声望力: 0
yuan_buct 正向着好的方向发展
默认 回复: 求非线性方程在不进行线性化的情况下离散化

呵呵,还是不太明白,我已经解出微分方程得到一些离散的数值解,但怎么利用这些解或者原来那个连续的微分方程得出一个离散的系统的方程呢?因为滤波要用离散后的方程啊。谢谢
yuan_buct 当前离线   回复时引用此帖
旧 2009-04-20, 02:31   #10
zt_zt
初级会员
 
注册日期: 2009-04-15
年龄: 39
帖子: 14
声望力: 17
zt_zt 正向着好的方向发展
默认 回复: 求非线性方程在不进行线性化的情况下离散化

在你算到的点上面tylor或者其他正交基展开啊
例:
x'=sin(x)得到离散解x=0 y=0(胡乱写的解)
在00处tylor展开得阶数根据精度选(采用其他正交基更适合计算机算,比如埃米尔特)
x'=sin(0)+cos(0)x-cos(0))/(3!)*x^3+o(x^3)

x'=[0 1 0 -1/6]*[1 x x^2 x^3]'
这个就是在点(0,0)附近的线性化了。
然后对系统a=[0 1 0 -1/6] b=???? c=?? d=0离散化
sys=ss(a,b,c,d)注意,这里用ss(a,b,c,d,T)得到离散系统时abcd是作为离散系统的矩阵对应脉冲传递或者差分和上面微分方程不一样,所以在做c2d
c2d(sys,T)
这样子说不清楚,你还是查查相关资料吧,比如kalman filtering theory:using matlab等
zt_zt 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 06:44


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.