陈 希,李丽娜
(华侨大学机电及自动化学院,福建 厦门361021)
随着社会经济的高速发展、工业化进程的不断加快,全球水资源问题日益严重。中国水资源占有总量排在世界前列,但由于人口众多,中国人均水资源占有量仅有世界人均占有量的1/4。保护水资源、防止水污染至关重要[1]。
水质参数(包括物理性指标、化学性指标和生物性指标)检测是保障人类安全用水的前提,通过水质检测可确定水污染分布状况、预测污染物的变化趋势,为水污染防治工作提供技术支持[2]。
水质参数检测方法包括常规化学分析检测方法、紫外/可见光谱法、荧光光谱法、原子吸收光谱法、气相色谱法和可见/近红外(visible near infrared,VIS-NIR)光谱法等[3-4]。可见/近红外光谱分析法具有检测速度快、无污染、绿色环保、操作简单等优点,是近年来水质参数检测的研究热点之一。
基于可见/近红外光谱技术的水质参数检测方法,在最终实现应用前,通常需通过标定实验来确定测量模型[5-7]。测量模型的训练通常在MATLAB软件上进行,通过反复多次计算和分析,从而选择适当的预处理方法、确定最佳的多元回归模型参数,模型训练的计算和分析过程较为复杂耗时。
为方便研究人员开展水质光谱分析实验数据的分析,提高测量模型的建模效率,本设计研究开发了一套基于MATLAB的水质参数光谱分析的GUI界面,通过导入数据、预处理、多元校正、数据输出4个模块,提供常见的预处理方法和经典的多元回归方法。并通过蒸馏水pH值光谱分析基础实验数据,对该可视化软件效果进行了验证。
图形用户界面,是用户与计算机程序之间建立联系,并进行数据交流的一种方式。它包含窗口、图标、菜单、文本、工具栏等图形对象。用户借助操作或更改的方式,选择或激活图形对象,建立属于各自研究问题领域的可视化交互界面。通过图形用户界面,用户只要知道如何使用界面的每个组件,就可以与计算机建立联系,进行数据交流,操作简单、直观[8]。
本设计主要面向水质参数光谱分析领域,基于MATLAB/GUI编辑调整的可视化分析界面如图1所示。
图1 水质参数光谱分析的可视化界面
主要包括导入数据模块、预处理模块、多元校正模块、数据输出模块。导入数据模块的功能是,导入校正集、验证集数据,并可显示原始数据的光谱图;预处理模块的功能是,提供常见的光谱预处理方法,包括最大最小归一化、零均值化、一阶导数、二阶导数、多元散射校正(multiple scatter correction,MSC)和标准正态变量变换(standard normal variate transformation,SNV),并可显示预处理后的光谱图;多元校正模块的功能是,提供经典的偏最小二乘(partial least squares,PLS)回归模型,通过输入主成分个数,计算该参数条件下的预测均方根误差(root mean square error of prediction,RMSEP),并可显示预测值与参考值的比较图,为工程应用人员进行模型训练提供参考。
MATLAB是美国MathWorks公司开发的一套高性能数字计算软件,MATLAB既能进行科学计算,又能根据用户需求,开发出便于计算和分析的用户图形界面(GUI)。用户通过选择、激活这些图形对象,可实现计算、绘图,提高工程应用人员研究效率[9-10]。本研究设计的水质参数光谱分析可视化界面,主要开发步骤和方法如下。
首先,在MATLAB主界面的Command Window中输入guide,得到用户图形界面模板选择窗口,选择默认空白(BLANK GUI)选项,如图2所示,然后可进入编辑界面,如图3所示。
图2 GUI模板选择窗口
图3 GUI编辑界面
接着,在GUI编辑界面上建立需要的控件,编辑控件的基本属性,将界面各个控件摆放整齐、美观、方便。
然后,根据各控件需要完成的功能,编辑回调函数。
最后,进行可视化界面的结构优化设计和程序调试。
对于导入数据模块,由八个静态文本框、六个按钮组成。设置静态文本框的属性作为提醒使用者的提示,导入数据按钮按下后运行对应的回调函数,打开文件夹并且从文件夹中选择需要的文件加载到程序中。
MATLAB函数global可用于定义全局变量。
MATLAB函数[filename,filepath]=uigetfile('*.*','请选择文件')可实现从文件夹中选择数据。
MATLAB函数set(handles.text6,'String',[filename])可实现将文件名显示在界面上。
MATLAB函数importdata(strcat([filepath,filename]))可实现文件的导入。
MATLAB函数axes(handles.axes1)、plot,可实现在axes1坐标上绘图,点击“生成光谱图”按钮,就会在界面绘图区显示光谱图。
类似的,对于预处理模块、多元校正模块、数据输出模块,基于MATLAB编辑好对应的预处理函数、多元回归函数及其回调函数,可实现预处理方法的选择、PLS模型参数“主成分个数”设置、PLS模型的运行、RMSEP的计算以及预测值与参考值比较的图形绘制。
MATLAB函数k=str2num(get(handles.edit1,'String'))可实现从可输入编辑框中获得参数k。
MATLAB函数guidata(hObject,handles)可实现从可输入编辑框中获得输入的主成分个数。
采用可见/近红外分光光度计V-1800PC(上海美谱达仪器公司)测量样品光谱,光谱波长间隔2 nm。1 cm的石英池用于装载水样。pH值的参考值采用精度为±0.1个单位的酸度计(上海力辰仪器公司)测量。为了获得不同酸碱度的水样,在蒸馏水中随机加入0.1 mmol/L的HCL或0.1 mmol/L的NaOH,用酸度计测量获得pH参考值。采用透射式测量获取每个样品的光谱数据。采集的光谱波长范围是400~1 100 nm,共351个波长。
实验中共获得34个样本,其中24个样本作为校正集、11个样本作为验证集,用于PLS模型训练,来测试本设计开发GUI界面的性能。图4为应用本设计开发的可视化界面绘制的图像,图4(a)为原始光谱图,图4(b)为经标准正态变量变换预处理后的光谱图。通过设置不同的主成分个数,然后运行PLS,可以得到不同的模型精度参数值RMSEP,根据RMSEP来确定最优的主成分个数,应用本研究设计开发的可视化界面,可以方便的调整参数,确定最佳的PLS模型,提高建模效率。例如,经标准正态变量变换预处理后,设置主成分个数为10,PLS模型的预测参数RMSEP显示为0.335 221。PLS模型的预测值与参考值的对比图如图5所示。
图4 GUI输出光谱图界面
图5 GUI输出PLS模型的预测值与参考值的对比图页面
水质检测用于确保用水安全,对居民生活、工业生产和环境保护都非常重要。可见/近红外光谱分析技术具有简便、快速、经济、无污染等优点,是目前极具发展前景的水质参数检测方法之一。为方便研究人员进行光谱分析,本研究设计开发了一套基于MATLAB/GUI的水质参数光谱分析的可视化界面。应用该水质参数光谱分析界面,可快速切换预处理方法和主成分个数,根据PLS模型精度参数、以及预测值和参考值的图像分析,达到快速确定最佳预处理方法和多元校正模型,提高建模效率的目的。基于MATLAB/GUI的可视化图形界面,设计界面简洁清晰,可极大方便研究人员开展水质参数光谱分析工作,提高研究效率。