一个实时预测算法程序

在控制中,相位是一个很重要的技术指标,相位过于滞后说明系统的跟踪能力不够。在高频带,从时域上看指令的循环周期变短,此时每一毫秒所占的百分比都很大,如果能够提前几毫秒,相位将会明显提高。

控制领域有很多种方法,PID中的D就是起超前作用的,但Kd过大会引起系统振荡。更直观且容易理解的方法,就是将指令提前发送,这也就是预测控制的一个简单实现。

说起来容易,做起来却不一定容易,这是因为在随动式系统中指令都是实时发送(飞控仿真中一般1ms一次),用户只可能知道当前的和历史的指令,而不可能知道未来的指令。如何从历史的指令中得出未来的指令,这也是我们做预测的目的。

我做的这个算法原理比较简单,就是直接从历史的数据中拟合出其可能的曲线函数,再根据函数推导下一个点。

这里面涉及到曲线拟合、多项式求解、多元函数求偏导、矩阵求逆等数学知识,学过高等数学、线性代数的应该都可以解得出来。

由于有矩阵求逆的存在,刚开始实时解算时一次可能得几百us(P4 2.8G的CPU)。后来我对算法进行了优化,每次解算只需不到1us,完全不费时间,可以嵌到实时控制的程序中。

程序最终预测的效果还不错,相对比较平滑,提前也比较显示,有兴趣的可以下载试试。

下载地址:http://download.csdn.net/source/1526390

下载后解压,先运行install.bat,注册一下TeeChart控件,然后就可以运行.exe程序了。

为方便测试,做了一个界面,可以输入1~3条正弦曲线的叠加函数,并可修改曲线的幅值、频率,可以修改提前算法的运算阶数、取点个数和间隔,还可设置想提前的时间。绘图控件是下载的一个TeeChart控件,绘图时可能会有一点问题,若你的CPU过快,绘图速度就会很快,这时控件的缓冲区会很快充满,并发生错误,出错后只能退出程序重新进入。由于是用别人的控件,错误没办法消除,实在抱歉~所以,针对电脑太快、配置太强的同学,特增加了一个可调节速度的功能。要是你的电脑配置太强,记得要慢点画哦!

如果你的电脑实在太牛,设置最慢的速度也出错,那可以关闭绘图,运行完成后将数据导出后再看。

 

发几张程序截图:

 程序截图

 

程序截图2

 

程序截图3

 

有兴趣者可以发邮件交流。yjukh # 163.com  (将#换成@)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值