很多模式或关系不清晰的情况下,比较适合用神经网络。关于神经网络本身,最近发展的很快,应用也越来越广,自行谷歌。
本文使用的为最为流行的前馈神经网络(feed-forward neural network),网络各层使用默认的Sigmoid函数,以气体传感器为例简单介绍下MATLAB神经网络工具箱的使用。
我们有下面的数据原始电压CO_diff和温湿度(Temp和Humi)为神经网络训练输入,对应的标准气体浓度CO_ref为训练目标(target),然后我们用训练后生成的方程去预测未来不同温度湿度条件下,不同CO原始响应电压对应的浓度。

1. 复制CO_diff、Temp和Humi三个输入元素到CO_input变量,CO_ref到CO_ref变量,然后转置下,因为MATLAB走的是列。
CO_input = CO_input'
CO_ref =CO_ref'

2.打开神经网络 拟合工具箱


3. 选上input和Target

4. 选择训练的样本量,用作validation的样本量和作为最后的自检的样本量,样本少的时候建议training的样本要多一些

5.选择隐藏层的数量,这个可以先默认10,回头误差大相关性不好的时候再过来改,一般来说不要太多,具体看相关文章。

6.Train,每次train都会有些许变化的,重点看MSE和R如何,如果保持较好就可以。否则要回到上一步。也可以通过编程来评估,譬如每个隐藏层选择train 100次,然后看好的MSE和R出现的概率。

7. 生成函数,用以预测。这里我用的MATLAB Matrix-only Function,点一下即可。上面那个MATLAB Function也是一样的,不过可以做成单独的应用更方便些,里面代码大部分都一样的。



改函数名:

8. 测试下,按照顺序把下面的CO_diff和Temp,Humi放到CO_test_input这个变量里。然后直接 CO_test_output = ANN_CO(CO_test_input);
即可

输出如下:

5分钟移动平均的趋势图:

网友评论