本站小编为你精心准备了神经网络滤波的研究与实现参考范文,愿这些范文能点燃您思维的火花,激发您的写作灵感。欢迎深入阅读并收藏。
《信息技术杂志》2015年第二期
1程序设计
三角基神经网络流程图如图2所示。Qt中有自己C++标准库,其C++语言库文件与标准版C++有所不同[7],但语法相同,设计程序相关参数如下:(1)这里滤波的理想目的是检出直流分量,其函数为:(2)初始化参数:神经元个数n为9个,训练次数上限为500次,学习率初始值为0.1。在程序中增加计时函数,运行7ms内便有输出,随着误差变小,数据输出时间变短。滤波输出为大约23ms后便可以得到稳定输出,误差精度高于10-5。在Qt工程文件.pro中添加Qwt/lib文件路径,qmake编译。在X86的Linux系统上运行结果如图3所示,把数据制成表格如图4所示,运行时间160ms。
2低通滤波器谐波检测
与上述程序中相同的谐波函数,由低通滤波器滤波来分析处理,并采用2阶和6阶截止频率为分别为100Hz和20Hz的ButterWorth滤波器进行滤波分析,Matlab仿真结果如图5-8所示。从图5和8可以看出截止频率在100Hz的低通滤波器响应时间在最快0.03s左右,但是误差百分比在11%;图6-7可以看出截止频率相同阶数不同的响应时间0.2s左右,误差百分比在2.54%,这也说明随着ButterWorth低通滤波器阶数越大,其稳态误差越小,而动态响应时间越长[8]。为解决ButterWorth低通滤波器稳态误差和动态响应时间之间的矛盾,很多学者进行了研究,其主要的解决方法是低通滤波器的参数在两个性能之间进行折中选择[9],同时这样的结果也给对后续工作带来更多的误差。由比较可知,本文算法比低通滤波器精确度高,而且响应速度也较快,可以代替在电力系统的谐波检测中低通滤波器做滤波处理。
3基于ARM芯片算法实现
Linux系统具有多任务多进程的系统特征,有些还具有实时特征。它非常适合于在企业的应用,对于单一的任务,一个简单嵌入式Linux即可以完成这种任务,而且配置要求简单,成本较低。这里使用的是TE6410(ARM1176)开发板,最高主频553Hz,2GnandFlash,支持SD烧写系统。首先基于开源代码uboot1.1.6编译系统适合开发板配置的uboot文件;然后根据Linux内核开源代码Linux3.0.1制作文件zImage,由于是单一的最小化系统,在内核配置时加上LCD驱动模块[10],最后编译,大小也只有3MB左右,所需的存储空间也很小;文件系统是算法的运行实现平台,用busybox1.20先制作yaffs2文件系统编译器和最小的文件系统,添加系统相关配置文件;最后从安装Qt4.8.4中复制Qt/Qwt和Qt/lib库文件到制作的文件系统/lib文件夹中,以便程序链接调用,最后配置启动后Qt环境变量。程序在经过交叉编译,编译成ARM可以运行的程序,放到文件系统根目录的/mnt下,并设置开机自动运行。根据上述步骤制作一个最小文件系统,虽然Qt相关库文件静态链接库较大,但最后制作出来大小仅有130M左右,占用很少的内存资源,其测试效果显示如图9所示。图9中x轴是以秒为单位,y轴是谐波中的直流分量。可以看出响应时间在35ms以内便可以得出精确度相当高的响应输出。
4结束语
本文介绍了一种基于Linux平台实现神经网络算法滤波方法,给出了其软件实现的流程,并与一般低通滤波器滤波效果进行分析比较,同时用开源代码构建专用的最小化Linux系统,最小化占用的内存空间;并同时在X86和ARM两种芯片运行测试,真正实现了神经网络滤波处理。
作者:肖儿良王新胜颜文超韦荣明单位:上海理工大学光电信息与计算机工程学院