李娅丽,忻尚芝,郑春雷
(1.上海理工大学 光电信息与计算机工程学院,上海 200093;2.上海新物科技有限公司,上海 200042)
基于Matlab/GUI的数据分析界面设计
李娅丽1,忻尚芝1,郑春雷2
(1.上海理工大学 光电信息与计算机工程学院,上海200093;2.上海新物科技有限公司,上海200042)
摘要地震勘探是现代石油勘探的主要物探方法,该方法利用大量的检波器采集地壳反射波的信息,并记录在磁带上进行数据分析,而磁带记录的大量数据,使得数据整理分析面临挑战。针对这样的情况,提出利用Matlab/GUI软件设计满足简化数据分析的界面,该界面可实现检波器采集文件夹的导入和显示,并进行时域和频域分析。结果显示该虚拟仪器界面较好地完成了上述的功能,满足在实际石油勘探中使用的条件,大幅提高了数据分析的效率,节省了勘探成本。
关键词地震勘探;数据分析界面;Matlab/GUI
地震勘探法是现代石油勘探的主要方法。地震勘探是根据地质和物理原理,利用电子信息等技术建立的新的石油勘探方法。它能利用物理仪器观测地壳中的物理现象,从而去推导地质构造,寻找储油结构。在石油勘探方面,国内外主要依赖地震勘探。
地震法勘探时需要在探区布置成百上千的检波器和大量的数据传输线,且将采集的数据以磁带形式存储。由于信息采集的环境多变,磁带数量庞大,现场实时数据分析面临着巨大的困难[1]。
基于上述情况,提出利用Matlb/GUI软件开发文件数据分析界面。在数据采集阶段只需将数据以检波器为单位存储在文件夹里,便可利用该数据分析界面便实现文件夹的导入、读取、显示和分析。相对于传统的地震勘探分析仪器,该界面既简化了数据分析过程、节约了成本,又减少了仪器的使用限制。
1地震勘探原理
地震勘探通过人工激发地震波,研究地震波在地层中的传播情况,以探明地质构造。勘探时先在某一条测线上选取一些点打井放炮,制造地震波,再用检波器搜集波形传输情况。放炮后产生地震波向下传播,地震波遇到不同地层的分界都会发生反射,地面上的检波器把各个地层分界面的反射波所引起的地面振动记录下来。然后根据地震波反射回地面的总时间,在测定好地震波在岩层中传播的速度后,就可计算出地层分界面的埋藏深度。
该方法需在勘探区布置多条测线,组成一个测线网,这样便可以得到地壳起伏的完整概念,再进一步分析和研究[2],便能查明地下可能的储油构造,确定钻探井位。
2数据分析界面设计
2.1需求分析
地震勘探法的测线网内分布了成千上万个检波器,在数据采集时为了代替传统的磁带存储数据,于是将检波器采集的数据和头文件直接传送到电脑存放于文件夹中。而分析界面需要实现的便是数据导入,显示和时频域分析,并显示头文件信息[3-4]。
根据所需实现的功能设计了界面的工作流程图,如图1所示。
图1 数据分析界面工作流程图
图1为该数据分析界面的工作流程图,由图1可看出,首先该界面需要实现导入所有的文件夹,用户再通过交互界面选择需要分析的文件夹,从而读取文件夹里的数据信息和头文件,并进行相关的分析和显示。
2.2数据分析界面的实现
首先进行界面控件设计,在Matlab的Guide中,将数据分析模块的GUI界面划分为3部分[5-6]:(1)菜单区。通过菜单编辑器,建立文件处理功能的菜单,对文件进行导入,数据进行处理;(2)主功能区。包含头文件信息显示,采样频率选择,和功能按钮;(3)坐标轴区。通过直接调用快捷功能区中的Axes,建立两个坐标轴,用于显示数据的曲线。
根据界面划分和控件性能,该数据界面需要2个edit text,3个push button以及2个pop-up menu控件。划分区域后,根据用户习惯将相应的控件拖放到对应的位置,搭建基本的数据分析界面[7-9]。其中edit text控件,一个命名为数据信息模块,显示头文件;一个用以输入采样频率,若不输入任何数值,则默认采样频率为1 000 Hz;3个push button分别是文件夹选择按钮、时域按钮和频域按钮;2个pop-up menu下拉控件则是用来显示导入的头文件和数据文件列表,分别命名为head file和data file。
在搭建好数据分析界面后,需要通过函数的编写把控件联系起来。该界面中各控件模块调用的流程图如图2所示。
图2 各模块调用流程图
根据图2中各模块之间的调用关系编写控件的回调函数以实现各自的功能。
以数据信息模块的回调函数为例:
function listbox1_Callback(hObject,eventdata,handles)
global folder_name A
sel=get(gcf,‘selectiontype’);%获取鼠标动作
if strcmp(sel,‘normal’);%如果是单击
str1=get(hObject,‘String’);%获取点击内容
n=get(hObject,‘value’);%获取文件位置
以上函数定义了全局变量older_name和A,以及相应鼠标动作对应的操作,并对变量赋予具体的值和动作,接下来是变量的读取和显示。
sensor_ID=fread(fid,1,‘ubit48’,‘l’);
longitude=fread(fid,1,‘ubit32’,‘l’);
latitude=fread(fid,1,‘ubit32’,‘l’);
Data_CNT=fread(fid,1,‘ubit32’,‘l’);
ADC_speed=fread(fid,1,‘ubit8’,‘l’);
ADC_PGA=fread(fid,1,‘ubit8’,‘l’);
ADC_channel=fread(fid,1,‘ubit8’,‘l’);
ADC_senstivity=fread(fid,1,‘ubit32’,‘b’);
该段函数根据数据文件的存入规则进行了读取,在数据信息模块中,变量读取位是不同的,这些都需根据数据存入形式读取。读取后还需要将这些信息显示出来,显示信息的函数为:
sensor_ID=strcat(‘sensor_ID:’,sensor_ID);
longitude=strcat(‘longitude:’,num2str(longitude));
latitude=strcat(‘latitude:’,num2str(latitude));
begin_time=strcat(‘begin_time:’,num2str(begin_time));
end_time=strcat(‘end_time:’,num2str(end_time));
Data_CNT=strcat(‘Data_CNT:’,num2str(Data_CNT));
ADC_speed=strcat(‘ADC_speed:’,num2str(ADC_speed));
ADC_PGA=strcat(‘ADC_PGA:’,num2str(ADC_PGA));
ADC_channel=strcat(‘ADC_channel:’,num2str(ADC_channel));
ADC_senstivity=strcat(‘ADC_senstivity:’,num2str(ADC_senstivity));
显示读取的信息时,则是根据用户的需求,比如end_time以十进制数显示,而ADC_senstivity可以以浮点数形式显示。
其他控件的功能实现如上述一样,先编写各自的回调函数,再根据每个控件需要实现的功能编写调用函数。便能将控件间都联系起来,完成数据分析界面的编程。若用户需增加新功能,只需从GUI中添加相应的控件模块再对其进行回调函数和调用函数的编程即可。
通过Matlab/GUI完成数据分析界面的搭建和编程后,在Matlab的命令窗口输入Mbuild-setup,选择相应的编译器对生成的数据分析用户界面的M文件进行编译。编译语法为:mcc-m s.m 其中s.m.exe就是最后生成的可执行文件,该文件是可脱离Matlab环境的执行程序。
3数据分析界面的运行
数据分析界面完成后,为验证它的可行性,利用传感器采样了一组振动数据,将振动数据以二进制文件的形式存放在文件夹里,将传感器的编号、采集起始时间、采样频率、采样通道等信息存放于文件夹的头文件中。
点击文件选择按钮,选择相应文件夹,将文件夹里的数据文件导入到界面中。导入的文件显示在 Listbox中,如图3所示。
图3 导入头文件及数据文件的界面
图3中head file和data file显示的是导入的数据文件和头文件后的文件名。其中左边是头文件,以hdr形式的二进制文件存储,右边是数据文件,以dat的二进制文件存储。图3说明该文件夹包含2个头文件,即2个传感器所采集的相关信息。该界面清晰显示了数据所在的文件,减少了整理数据的过程,大幅节约了数据分析的导入时间。
头文件里的信息显示在数据信息模块的edit box里,如图4所示。
图4 头文件信息显示界面
由图4能得出该文件中的数据来自于哪个传感器,采集时的经纬度,开始和结束时间,采集数量,采集速度等信息。便于查找数据源。
分析界面的时域分析功能是将文件里的数据按照其采样时间为X轴,幅值为Y轴显示在坐标系中。可以看出有限时间段内的幅值分布关系。频域分析是将文件里的数据进行傅里叶变换,得到信号关于频率的相频特性和幅频特性以及功率谱特性。频域分析坐标轴中,X轴为频率,Y轴为幅值。数据文件的时频域分析结果如图5所示。
图5是导入振动数据后的时频域分析结果,其中,图5(a)是采用频率为默认1 000 Hz时的时域图,图中可看出该数据文件的采样时间为66.56 s,在某些时间点数据发生了明显的波动。图5(b)是该采样频率下的频谱图,由该图可看出数据在125 Hz左右有一次明显的波动,与图5(a)所示的时域图像是吻合的。
当采样频率框中输入500时,则表示同一个数据文件的采样频率变为500 Hz。图5(c)与图5(d)是同一个数据文件在不同的采样频率下的图形,可以看出,图形的形状是一致的,改变的是横坐标值,说明了采样频率输入功能正确。通过对比图5(b)与图5(d),可以看出整个图形的形状是一致的,图5(b)的明显波动点约为125 Hz,图5(d)约在62 Hz,也证明了采样频率从1 000~500 Hz的变化时,频域分析正常。
图5 时频域分析图
4结束语
本文通过Matlab/GUI设计文件数据分析界面,由上述试验可以看到,分析界面快速便捷的实现数据文件的分类整理、显示和时频域分析。因此,该分析界面能够应用于地震勘探法中的前期数据分析,相比于具有同样功能的传统分析仪器,该分析界面的成本和开发周期都大幅降低,且不会过分受限于环境。在勘探区,只需一台电脑即可实现数据导入和初步分析,改进了地震勘探法的局限性。用户也可依据自身需要,开发研究更多的功能。既省去了购置相应仪器的成本,简化了相关操作的时间和维护成本,也部分脱离了环境的约束。
参考文献
[1]杨德义,赵镨,王慧.煤矿三维地震勘探技术发展趋势[J].中国煤炭地质,2011(6):42-47.
[2]马灵.海上地震数据多缆采集与记录系统设计研究[D].合肥:中国科学技术大学,2012.
[3]赵冉,王英.基于虚拟仪器的异步电机自动测试系统的研究[J].仪器仪表用户,2011(3):10-12.
[4]Hugo G Espinosa,Daniel A James,Sean Kelly.Sports monitoring data and video interface using a gui auto generation matlab tool[J].Procedia Engineering,2013,60(3):243-248.
[5]曹凯.现代测量技术在煤矿测量中的应用分析[J].能源与节能,2014(4):144-146.
[6]刘伟,刘光斌,吴红.Matlab图形用户界面编程的几点思考[J].计算机系统应用,2003(8):60-62.
[7]Altintas,Ahmet.A GUI-based education toolbox for power electronics converters using Matlab/Simulink and Simpower Systems[J].International Journal of Electrical Engineering Education,2011,48(1):53-65.
[8]寇阳.一种低损耗波导高通滤波器的设计方法[J].电子科技,2015,28(6):123-125.
[9]刘华昌,于成龙,何承基.基于Matlab的高压电容器直流局部放电检测[J].计算机测量与控制,2005(5):423-426.
欢 迎 订 阅 2016 年《电子科技》杂 志
邮 发 代 号 52-246
Design of Data Analysis System Based on Matlab/GUI
LI Yali1,XIN Shangzhi1,ZHENG Chunlei2
(1.School of Optical-Electrical and Computer Engineering,University of Shanghai for Science and Technology,Shanghai 200093,China;2.New Material Technology Company,Shanghai 200042,China)
AbstractThe seismic exploration method in petroleum exploration requires many cables and sensors for collecting the data of wave reflection of the crust and recording data on tapes for data analysis.A data analysis interface created by Matlab/GUI is proposed to directly import and show data storage folders collected by different sensors on the interface to time domain and frequency domain analysis.The results show that all the design requirements are met,with significant saving of cost and time in petroleum exploration.
Keywordsseismic exploration;data analysis interface;Matlab/GUI
中图分类号TP274+.2
文献标识码A
文章编号1007-7820(2016)04-088-04
doi:10.16180/j.cnki.issn1007-7820.2016.04.023
作者简介:李娅丽(1990—),女,硕士研究生。研究方向:电力电子与电力传动。
基金项目:沪江基金资助项目(B1402/D1402)
收稿日期:2015- 09- 10