论文部分内容阅读
摘要 基于Matlab Gui开发软件,编写生成具有订正乡镇温度预报和数据统计处理功能的软件;利用matlab编译器,使该软件可以独立运行,自动识别乡镇自动站数据,满足县级台站对乡镇每日天气预报、未来24 h温度订正预报、每月温度准确率计算和日温度数据整理的需求,为制作乡镇天气预报和温度数据处理提供一个方便可视化的平台,减轻观测人员的手录工作量和人为误差,使乡镇温度预报数据订正处理科学化、自动化和精准化。
关键词 Matlab Gui;温度;预报;准确率;统计整理
中图分类号 S161 文献标识码
A 文章编号 0517-6611(2014)31-11004-04
The Design and Implementation of the Software for Township Temperature Forecast Revisions and Data Processing
LI Ruonan, WU Jiali, LIU Chang et al (Meteorological Bureau of Xinbin Manchu Autonomous County, Xinbin, Liaoning 132000)
Abstract Based on Matlab Gui development software, a software which can generate with the revised temperature forecasts and statistical processing was written; Using matlab compiler, the software can be run independently, and can automatically identify township automatic station data, to meet the need for correcting township temperature forecast, calculating the accuracy rate of temperature automatically and processing the daily temperature data, providing a convenient platform for the production of visual weather forecast and temperature data processing towns, reducing the observers’ hand book work and error, to make the township temperature forecast data revisions and processing scientific, automation and precision.
Key words Matlab Gui; Temperature; Forecast; Accuracy rate; Statistics finishing
24 h最高温度、最低温度预报是电视天气预报节目对公众发布的基本气象服务,也是最重要的气象服务之一,目前县级台站制作的乡镇天气预报和未来24 h温度预报均是以本站的天气预报为基础进行乡镇订正预报。新宾县下辖 15个乡镇,根据多年自动站温度要素分析以及预报经验,发现每个乡镇的温度及天气状况均有所差异,在预报时需要根据不同的订正值和天气状况对每个乡镇的天气要素进行订正预报,而在制作乡镇订正预报产品时,还是依靠传统的手算和人工制作的方法,误差大,且费时费力,增加了业务人员的工作量,更不便于日后的统计和管理。因此,研发一个具有可视化多功能的乡镇温度预报订正和数据处理软件,对于基层台站业务减负、实现自动化工作意义重大。笔者基于Matlab Gui开发软件,编写生成具有订正乡镇温度预报和数据统计处理功能的软件。
1 Matlab图形用户界面的环境介绍
1.1 图形用户界面开发环境
图形用户界面GUI(Graphical User Interfaces)是由各种图形对象,如图形窗口、图轴、按钮、菜单、文本框等对象(Objects)构成的用户界面,其开发环境提供了一组用于用户界面开发的工具,是人际交流信息的工具和方法,在该界面内,用户可以根据界面提示完成整个工程而不必去了解工程內部是如何工作的,利用Gui设计图形用户界面时,可通过GUI应用属性设置编辑器来设置对句柄操作的响应[1-3]。
1.2 函数句柄
函数句柄(FunctionHandle)是包含了函数路径、函数名、类型以及可能存在的重载方法。句柄图形(Handle Graphics)就是将一个图形的每一个组建均视为一个对象(Object),每一个对象均有一个独一无二的“句柄”(handle),根据这个句柄就可以找到这个对象(即图形组件)的各项属性,并进而更改这些属性,以产生不同的图形呈现效果[3-5]。
2 系统设计思路和框架
2.1 设计思路及主要功能需求
2.1.1 界面制作。界面制作包括界面设计和程序实现。具体制作步骤是: ①分析界面所要求实现的主要功能,明确设计任务;
②绘出界面草图,并站在使用者的角度来审查草图;③按构思的草图,上机制作静态界面,并检查;④编写界面动态功能的程序,对功能进行逐项检查[5-7]。
本着简单性(Simplicity)、一致性(Consistency)及习常性(Familiarity)原则[7-10],该软件按照不同的功能需求分成3个功能模块并分别进行编写,每个模块根据需要利用Gui提供的菜单编辑器设计每个模块下的菜单栏,并根据使用要求设计每个操作界面的控件布局,在不同的控件下填写相应的响应函数。 2.1.2 功能需求。
利用乡镇每日预报应用软件平台提供给预报员制作各乡镇每日天气预报的平台;利用每月温度准确率统计平台,统计各乡镇每月最低温度和最高温度准确率;利用乡镇温度数据处理平台将分散的每日数据整理到相应年份和月份的数据表格中,方便做数据研究以及数据再整理。
2.2 系统框架
总体上可分为3个部分,即乡镇每日预报应用软件平台、每月温度准确率统计平台和自动站温度整理平台。
2.3 系统操作流程图设计
2.3.1 乡镇每日预报应用软件平台操作流程。
当用户打开系统界面后,首先导入当日自动站温度实况信息,然后在相应的位置依次输入天气状况、本站实况温度、本站预报温度、预报风向、预报风速、预报员等基本实况和预报信息,软件会根据输入的本站实况温度、本站预报温度以及自动站各乡镇当日实况温度进行计算并显示各乡镇天气预报结果,其中对于温度的预报如需人工订正,可对各乡镇进行单独的温度订正,最后根据需要进行保存,在不同的位置生成多种类型的预报产品(图1)。
3 技术规划及模块设计
3.1 开发环境 操作系统为WindowsXP。体现句柄图形例程的函数,包括应用uimenu和uicontrol对象的函数,通常运行在所有平台。处理的数据对象为自动站每日温度统计的EXCEL表,以当日日期命名,如20140601,表格内的格式第一列至第五列依次为站号、站名、平均气温、最高气温、最低气温。
3.2 运行要求
利用Gui设计编写xzyb(乡镇预报)界面及Matlab编译器,将设计编写好的界面转为exe格式,即可独立运行的应用程序,虽然可以在没有Matlab的计算机上直接运行使用。但如果在一个没有安装Matlab的计算机上运行,或在安装版本不一致的计算机上运行时,仍需要安装Matlab所必须的且与之相对应的动态链接库,因为不同版本的动态链接库不同,也不兼容。因此在运行该软件之前,要安装能使可执行程序脱离Matlab运行所需的函数库,即MCRInstall.exe。
3.3 模块设计及原理
3.3.1 控件及对话框。在此用到的控件有触控按钮键、静态文本框、可编辑文本框、弹起式菜单框,用到的预定义对话框有信息对话框、警告对话框、文件打开对话框。
3.3.1.1 菜单栏设计。打开Guide设计界面,利用Tools下的Menu Editor菜单编辑器创建各级菜单栏(图4)。
在相应位置填写内容,并设置快捷方式。分别进入Callback下,填写相应的代码,对菜单进行操作。如在“打开”的Callback下填写的相应部分代码如下:
function m_file_open_Callback(hObject, eventdata, handles)
global path;global g;global d;global panduan;
[filename, pathname] = uigetfile( {’*.xls’,’Excel Files (*.xls)’; ’*.*’,’All… Files (*.*)’},’Pick a file’);
if isequal(filename,0) || isequal(pathname,0)
return; else path=fullfile(pathname,filename);
end
[num,txt,raw]=xlsread(path);global tshuju; global nraw;
tshuju=[num(:,4) num(:,5)];nraw=raw(2:end,2);%从第二行开始是乡镇名
g=zeros(15,1);d=zeros(15,1);
id=find(ismember(nraw,’新宾’));%查找站号为54353的站所在行的位置
if id
g(1,1)=tshuju(id,1);d(1,1)=tshuju(id,2);
else msgbox(’站点54353(新宾)数据缺失,请手动补充’)
g(1,1)=-999;d(1,1)=-999;
end
......
id=find(ismember(nraw,’榆樹乡’));
if id
g(15,1)=tshuju(id,1);d(15,1)=tshuju(id,2);
else msgbox(’站点L3552(榆树乡)数据缺失,请手动补充’)
g(15,1)=-999;d(15,1)=-999;
end
g=g/10;d=d/10;panduan=0;
以上代码的功能是通过打开操作读入选定的自动站日数据,不仅可以导入该数据,还可根据缺测情况弹出信息对话框给出相应的缺站提示,并以-999暂代计算。
3.3.1.2 页面布局及属性设置。根据功能需要分别选择不同的控件设计相应的页面布局,如“每日预报“模块的控件布局(图5)。控制属性设计思路是:①双击每个控件,调出属性设置框,分别设置各控件的名称、属性名、颜色等,如“今日天气实况”后第一个弹起式菜单框的部分属性设置及String属性值设置(图6)。②在布置好的每个控件的Callback下分别编写相应的操作代码,如图6中的控件弹起式菜单框的Callback下的部分操作代码为:
function popupmenu1_Callback(hObject, eventdata, handles) global tianqishikuang;
list=get(hObject,’String’);val=get(hObject,’Value’);tianqishikuang=list{val};
a1=’新宾’;……a15=’榆树;name={a1;a2;a3;a4;a5;a6;a7;a8;a9;a10;a11;a12;a13;a14;a15};
set(handles.text23,’string’,name);
guidata(hObject,handles);
③用同样的方法设置和编写触控按钮键、静态文本框的属性及相应Callback下的操作代码。导入当日数据触控按钮和保存触控按钮下设置了警告对话框和消息对话框,对导入数据和保存数据设置指定的路径,如e:\xzyb\。④用同样的方法对每月温度准确率统计平台、抚顺市乡镇温度数据处理平台分别设计并编写,设计成功后,在主界面的相应菜单的Callback下分别编写各自平台调用操作代码,如在主菜单“每月温度准确率统计”的Callback下的平台调用代码为:
function month_analysis_Callback(hObject, eventdata, handles)
h=gcf;townanalysis;
close(h);
3.3.2 温度预报及准确率统计原理。
3.3.2.1 温度的预报原理。假设各站每天的温度变化幅度与本站温度的变化幅度完全一致,则
TXS-TXS(0)=TSS-TSS(0),即TSS=TXS-TXS(0)+TSS(0),式中,TXS表示新賓站预报温度;TXS(0)表示当天的实况温度;TSS表示所求乡镇的预报温度;TSS(0)表示所求乡镇当日的实况温度。
3.3.2.2 统计温度准确率的原理。
业务需求编写的乡镇温度预报订正和数据处理软件主要实现了以下3个功能:①通过乡镇每日预报应用软件平台,预报员可以每日制作各乡镇天气预报,操作简便,可生成各种样式的预报产品,为不同的部门和用途提供预报产品,如为广播局提供每日乡镇天气预报,为各乡镇制作电子显示屏信息、预警大喇叭信息、手机短信,为预报员提供每日实况温度与预报温度情况等;
②通过每月温度准确率统计平台,统计各乡镇每月最低温度和最高温度准确率,包括各乡镇的准确率以及整体乡镇温度准确率,了解每月温度预报情况,方便研究与材料编写;
③通过乡镇温度数据处理平台,可以将某月的每日温度数据集经过数据批处理整理整理到相应年份和月份的数据表格中,方便做数据研究以及数据再整理。
参考文献
[1]
王默玉,宗伟,刘春磊,等.基于MATLAB的图形用户界面的构造方式与应用[J].现代电力,2002,19(1):76-82.
[2] 罗华飞.MATLAB GUI设计学习手记[M].2版.北京:北京航空航天大学出版社,2011.
[3] 徐增伟,曾黄麟,江泌,等.基于MATLAB GUI的研究生学业评估系统设计[J].四川理工学院学报:自然科学版,2011,24(4):402-404.
[4] 施晓红,周佳.精通GUI图形界面编程[M].北京:北京大学出版社,2003.
[5] 施今迈,陈显慧,李霞.基于MATLAB的心电信号界面设计[J].医疗设备信息,2007,22(7):34-35.
[6] 杨华为.基于MATLAB GUI的数据处理分析界面的设计与应用[J].工业控制计算机,2011,24(12):16-17.
[7] 邱金蕙,王矞辉,李振全.基于Matlab/GUI的新型界面开发方式[J].河北工业科技,2008,25(4):233-254.
[8] 陈立明,董晖,李加海.基于MATLAB6.5的图形用户界面应用技术研究[J].电脑开发与应用,2005,18(4):47-49.
[9] 代红权,陈海燕.基于Matlab的大学物理实验数据处理系统[J].重庆工学院学报,2007,21(5):32-34.
[10] 王俊国,王永骥,万淑芸.MATLAB图形用户界面环境下的实时控制系统[J].仪表技术与传感器,2004(9):27-29.
关键词 Matlab Gui;温度;预报;准确率;统计整理
中图分类号 S161 文献标识码
A 文章编号 0517-6611(2014)31-11004-04
The Design and Implementation of the Software for Township Temperature Forecast Revisions and Data Processing
LI Ruonan, WU Jiali, LIU Chang et al (Meteorological Bureau of Xinbin Manchu Autonomous County, Xinbin, Liaoning 132000)
Abstract Based on Matlab Gui development software, a software which can generate with the revised temperature forecasts and statistical processing was written; Using matlab compiler, the software can be run independently, and can automatically identify township automatic station data, to meet the need for correcting township temperature forecast, calculating the accuracy rate of temperature automatically and processing the daily temperature data, providing a convenient platform for the production of visual weather forecast and temperature data processing towns, reducing the observers’ hand book work and error, to make the township temperature forecast data revisions and processing scientific, automation and precision.
Key words Matlab Gui; Temperature; Forecast; Accuracy rate; Statistics finishing
24 h最高温度、最低温度预报是电视天气预报节目对公众发布的基本气象服务,也是最重要的气象服务之一,目前县级台站制作的乡镇天气预报和未来24 h温度预报均是以本站的天气预报为基础进行乡镇订正预报。新宾县下辖 15个乡镇,根据多年自动站温度要素分析以及预报经验,发现每个乡镇的温度及天气状况均有所差异,在预报时需要根据不同的订正值和天气状况对每个乡镇的天气要素进行订正预报,而在制作乡镇订正预报产品时,还是依靠传统的手算和人工制作的方法,误差大,且费时费力,增加了业务人员的工作量,更不便于日后的统计和管理。因此,研发一个具有可视化多功能的乡镇温度预报订正和数据处理软件,对于基层台站业务减负、实现自动化工作意义重大。笔者基于Matlab Gui开发软件,编写生成具有订正乡镇温度预报和数据统计处理功能的软件。
1 Matlab图形用户界面的环境介绍
1.1 图形用户界面开发环境
图形用户界面GUI(Graphical User Interfaces)是由各种图形对象,如图形窗口、图轴、按钮、菜单、文本框等对象(Objects)构成的用户界面,其开发环境提供了一组用于用户界面开发的工具,是人际交流信息的工具和方法,在该界面内,用户可以根据界面提示完成整个工程而不必去了解工程內部是如何工作的,利用Gui设计图形用户界面时,可通过GUI应用属性设置编辑器来设置对句柄操作的响应[1-3]。
1.2 函数句柄
函数句柄(FunctionHandle)是包含了函数路径、函数名、类型以及可能存在的重载方法。句柄图形(Handle Graphics)就是将一个图形的每一个组建均视为一个对象(Object),每一个对象均有一个独一无二的“句柄”(handle),根据这个句柄就可以找到这个对象(即图形组件)的各项属性,并进而更改这些属性,以产生不同的图形呈现效果[3-5]。
2 系统设计思路和框架
2.1 设计思路及主要功能需求
2.1.1 界面制作。界面制作包括界面设计和程序实现。具体制作步骤是: ①分析界面所要求实现的主要功能,明确设计任务;
②绘出界面草图,并站在使用者的角度来审查草图;③按构思的草图,上机制作静态界面,并检查;④编写界面动态功能的程序,对功能进行逐项检查[5-7]。
本着简单性(Simplicity)、一致性(Consistency)及习常性(Familiarity)原则[7-10],该软件按照不同的功能需求分成3个功能模块并分别进行编写,每个模块根据需要利用Gui提供的菜单编辑器设计每个模块下的菜单栏,并根据使用要求设计每个操作界面的控件布局,在不同的控件下填写相应的响应函数。 2.1.2 功能需求。
利用乡镇每日预报应用软件平台提供给预报员制作各乡镇每日天气预报的平台;利用每月温度准确率统计平台,统计各乡镇每月最低温度和最高温度准确率;利用乡镇温度数据处理平台将分散的每日数据整理到相应年份和月份的数据表格中,方便做数据研究以及数据再整理。
2.2 系统框架
总体上可分为3个部分,即乡镇每日预报应用软件平台、每月温度准确率统计平台和自动站温度整理平台。
2.3 系统操作流程图设计
2.3.1 乡镇每日预报应用软件平台操作流程。
当用户打开系统界面后,首先导入当日自动站温度实况信息,然后在相应的位置依次输入天气状况、本站实况温度、本站预报温度、预报风向、预报风速、预报员等基本实况和预报信息,软件会根据输入的本站实况温度、本站预报温度以及自动站各乡镇当日实况温度进行计算并显示各乡镇天气预报结果,其中对于温度的预报如需人工订正,可对各乡镇进行单独的温度订正,最后根据需要进行保存,在不同的位置生成多种类型的预报产品(图1)。
3 技术规划及模块设计
3.1 开发环境 操作系统为WindowsXP。体现句柄图形例程的函数,包括应用uimenu和uicontrol对象的函数,通常运行在所有平台。处理的数据对象为自动站每日温度统计的EXCEL表,以当日日期命名,如20140601,表格内的格式第一列至第五列依次为站号、站名、平均气温、最高气温、最低气温。
3.2 运行要求
利用Gui设计编写xzyb(乡镇预报)界面及Matlab编译器,将设计编写好的界面转为exe格式,即可独立运行的应用程序,虽然可以在没有Matlab的计算机上直接运行使用。但如果在一个没有安装Matlab的计算机上运行,或在安装版本不一致的计算机上运行时,仍需要安装Matlab所必须的且与之相对应的动态链接库,因为不同版本的动态链接库不同,也不兼容。因此在运行该软件之前,要安装能使可执行程序脱离Matlab运行所需的函数库,即MCRInstall.exe。
3.3 模块设计及原理
3.3.1 控件及对话框。在此用到的控件有触控按钮键、静态文本框、可编辑文本框、弹起式菜单框,用到的预定义对话框有信息对话框、警告对话框、文件打开对话框。
3.3.1.1 菜单栏设计。打开Guide设计界面,利用Tools下的Menu Editor菜单编辑器创建各级菜单栏(图4)。
在相应位置填写内容,并设置快捷方式。分别进入Callback下,填写相应的代码,对菜单进行操作。如在“打开”的Callback下填写的相应部分代码如下:
function m_file_open_Callback(hObject, eventdata, handles)
global path;global g;global d;global panduan;
[filename, pathname] = uigetfile( {’*.xls’,’Excel Files (*.xls)’; ’*.*’,’All… Files (*.*)’},’Pick a file’);
if isequal(filename,0) || isequal(pathname,0)
return; else path=fullfile(pathname,filename);
end
[num,txt,raw]=xlsread(path);global tshuju; global nraw;
tshuju=[num(:,4) num(:,5)];nraw=raw(2:end,2);%从第二行开始是乡镇名
g=zeros(15,1);d=zeros(15,1);
id=find(ismember(nraw,’新宾’));%查找站号为54353的站所在行的位置
if id
g(1,1)=tshuju(id,1);d(1,1)=tshuju(id,2);
else msgbox(’站点54353(新宾)数据缺失,请手动补充’)
g(1,1)=-999;d(1,1)=-999;
end
......
id=find(ismember(nraw,’榆樹乡’));
if id
g(15,1)=tshuju(id,1);d(15,1)=tshuju(id,2);
else msgbox(’站点L3552(榆树乡)数据缺失,请手动补充’)
g(15,1)=-999;d(15,1)=-999;
end
g=g/10;d=d/10;panduan=0;
以上代码的功能是通过打开操作读入选定的自动站日数据,不仅可以导入该数据,还可根据缺测情况弹出信息对话框给出相应的缺站提示,并以-999暂代计算。
3.3.1.2 页面布局及属性设置。根据功能需要分别选择不同的控件设计相应的页面布局,如“每日预报“模块的控件布局(图5)。控制属性设计思路是:①双击每个控件,调出属性设置框,分别设置各控件的名称、属性名、颜色等,如“今日天气实况”后第一个弹起式菜单框的部分属性设置及String属性值设置(图6)。②在布置好的每个控件的Callback下分别编写相应的操作代码,如图6中的控件弹起式菜单框的Callback下的部分操作代码为:
function popupmenu1_Callback(hObject, eventdata, handles) global tianqishikuang;
list=get(hObject,’String’);val=get(hObject,’Value’);tianqishikuang=list{val};
a1=’新宾’;……a15=’榆树;name={a1;a2;a3;a4;a5;a6;a7;a8;a9;a10;a11;a12;a13;a14;a15};
set(handles.text23,’string’,name);
guidata(hObject,handles);
③用同样的方法设置和编写触控按钮键、静态文本框的属性及相应Callback下的操作代码。导入当日数据触控按钮和保存触控按钮下设置了警告对话框和消息对话框,对导入数据和保存数据设置指定的路径,如e:\xzyb\。④用同样的方法对每月温度准确率统计平台、抚顺市乡镇温度数据处理平台分别设计并编写,设计成功后,在主界面的相应菜单的Callback下分别编写各自平台调用操作代码,如在主菜单“每月温度准确率统计”的Callback下的平台调用代码为:
function month_analysis_Callback(hObject, eventdata, handles)
h=gcf;townanalysis;
close(h);
3.3.2 温度预报及准确率统计原理。
3.3.2.1 温度的预报原理。假设各站每天的温度变化幅度与本站温度的变化幅度完全一致,则
TXS-TXS(0)=TSS-TSS(0),即TSS=TXS-TXS(0)+TSS(0),式中,TXS表示新賓站预报温度;TXS(0)表示当天的实况温度;TSS表示所求乡镇的预报温度;TSS(0)表示所求乡镇当日的实况温度。
3.3.2.2 统计温度准确率的原理。
业务需求编写的乡镇温度预报订正和数据处理软件主要实现了以下3个功能:①通过乡镇每日预报应用软件平台,预报员可以每日制作各乡镇天气预报,操作简便,可生成各种样式的预报产品,为不同的部门和用途提供预报产品,如为广播局提供每日乡镇天气预报,为各乡镇制作电子显示屏信息、预警大喇叭信息、手机短信,为预报员提供每日实况温度与预报温度情况等;
②通过每月温度准确率统计平台,统计各乡镇每月最低温度和最高温度准确率,包括各乡镇的准确率以及整体乡镇温度准确率,了解每月温度预报情况,方便研究与材料编写;
③通过乡镇温度数据处理平台,可以将某月的每日温度数据集经过数据批处理整理整理到相应年份和月份的数据表格中,方便做数据研究以及数据再整理。
参考文献
[1]
王默玉,宗伟,刘春磊,等.基于MATLAB的图形用户界面的构造方式与应用[J].现代电力,2002,19(1):76-82.
[2] 罗华飞.MATLAB GUI设计学习手记[M].2版.北京:北京航空航天大学出版社,2011.
[3] 徐增伟,曾黄麟,江泌,等.基于MATLAB GUI的研究生学业评估系统设计[J].四川理工学院学报:自然科学版,2011,24(4):402-404.
[4] 施晓红,周佳.精通GUI图形界面编程[M].北京:北京大学出版社,2003.
[5] 施今迈,陈显慧,李霞.基于MATLAB的心电信号界面设计[J].医疗设备信息,2007,22(7):34-35.
[6] 杨华为.基于MATLAB GUI的数据处理分析界面的设计与应用[J].工业控制计算机,2011,24(12):16-17.
[7] 邱金蕙,王矞辉,李振全.基于Matlab/GUI的新型界面开发方式[J].河北工业科技,2008,25(4):233-254.
[8] 陈立明,董晖,李加海.基于MATLAB6.5的图形用户界面应用技术研究[J].电脑开发与应用,2005,18(4):47-49.
[9] 代红权,陈海燕.基于Matlab的大学物理实验数据处理系统[J].重庆工学院学报,2007,21(5):32-34.
[10] 王俊国,王永骥,万淑芸.MATLAB图形用户界面环境下的实时控制系统[J].仪表技术与传感器,2004(9):27-29.