【问题标题】:Simulation Velocity of a harmonic oscillator system谐振子系统的仿真速度
【发布时间】:2014-11-17 11:09:40
【问题描述】:

我正在编写一个模拟以获得谐波振荡器系统的真实速度

其中 P=[p1 p2;p2 p3] 可以使用 Rung-Kutta 积分方法找到 P(0)=[1 0; 0 1]

现在,我想编写 matlab 代码来获取系统的真实位置z 并估计其中 x=[x1 x2]' 的 x。这是我查找 x 和 z 的代码。然而,结果并不正确。你能帮我修改一下吗。这是我的matlab代码

function  z=getPos(x)
  %% Function to get velocity
  v=0+1*randn; %r=1;
  z=[0 1]*x+v; 
return
    

这是我的结果

让我看看帮助我是解决方案的正确实施。谢谢

【问题讨论】:

    标签: matlab estimation


    【解决方案1】:

    您的代码可以返回一个负值,因为 randn 是一个标准差为 1 的正态分布随机数。理论上这可以返回任何数字,并且它有大约 15% 的机会小于 -1。

    你也是正确的,你应该在每一步更新 x。我会将 x 作为 getPos 的输入,将 xdot 作为输出。然后添加另一个步骤来更新位置。

    【讨论】:

    • 如上式。如何更新 x 和 z。请注意,x=[x1 x2] 表示为位置和速度
    • Matlab 非常容易处理向量和矩阵,默认情况下它会进行矩阵乘法。字面意思是 xdot=A * x+[0; 1] * w; z=[1, 0] * x + v;对于 x 只需执行 x=x+xdot*dt;一旦你知道 xdot。选择合适的 dt。有关 matlab 矩阵的信息,请参阅here 及相关信息。
    • @谢谢先生。我更新了当前的解决方案。让我看看帮助我的实施结果。这是正确的吗?我使用卡尔曼滤波器寻找解决方案
    猜你喜欢
    • 1970-01-01
    • 2011-09-03
    • 1970-01-01
    • 2016-08-26
    • 2022-08-04
    • 1970-01-01
    • 2019-01-30
    • 2012-04-23
    • 2018-02-21
    相关资源
    最近更新 更多