基于人大金仓数据库和MATLAB的弹道目标数据管理
2018-01-11蔡红军
蔡红军
摘要:由于弹道目标的特殊性,真实弹道目标数据显得十分珍贵,如何对历史数据进行保存和管理,便于进行分析,充分发挥试验数据的价值,变得越来越重要。本文针对这一问题,结合弹道目标数据的特点,提出用人大金仓数据库进行数据管理,同时利用MATLAB软件进行数据分析,即解决了弹道目标数据的存储问题,同时又利用MATLAB软件实现对数据的可视化分析。
关键词:数据库;人大金仓;数据库访问
中图分类号:TP311.13 文献标识码:A 文章编号:1007-9416(2017)11-0104-02
1 引言
弹道目标数据由于保密的原因,很难获得真实目标的实测数据,因此弹道目标数据显得十分珍贵。随着参与外场试验的次数越来越多,逐渐积累了大量宝贵的原始数据,然而缺乏对现有的数据进行梳理,难以发挥有限试验数据的价值,同时随着时间的流逝,关键数据信息难免遗漏。因此,急需一个数据库对现有的数据进行管理。
MATLAB软件擅长于数据分析和可视化,同时MATLAB软件中有一个为关系型数据库和MATLAB进行数据交互提供接口函数支持的工具包Database Toolbox,其使用简单,功能强大,通过其提供的接口函数极大简化了MATLAB与关系型数据库间的数据交互,而且它支持同时与多个数据库的并行任务和大量数据集的分段输入。在WINDOWS环境下,Database Toolbox支持JDBC驱动和ODBC驱动,然而Database Toolbox并不支持非结构化大型对象(Large Object,LOB)数据的存储。
本文结合弹道目标数据的特点,采用人大金仓数据库(KingbaseES)和MATLAB软件完成数据的管理和分析,使用KingbaseES中TEXT数据类型,代替LOB数据类型。本文中的驱动配置方法和代码程序均在MATLAB 2012b版本和KingbaseES V7版本下进行。
2 数据库驱动配置
2.1 JDBC访问技术
JDBC(Java Database Connectivity)是Java与数据库的接口规范,它定义了一个支持标准SQL功能的通用应用程序编程接口(API)。通过驱动程序管理器,JDBC API可利用不同的驱动程序连接不同的数据库系统,实现对数据库的跨平台访问。
本文中MATLAB软件基于JDBC驱动连接数据库。
2.2 驱动配置方法
加载JDBC驱动过程如下:
(1)找到KingbaseES软件安装目录,在Kingbase\ES\V7\jdbc文件夹下找到文件kingbasejdbc4.jar;
(2)找到MATLAB软件的安装目录,进入MATLAB\R2012b\ java\jar\toolbox目录,并将kingbasejdbc4.jar拷贝到此目录下;
(3)找到MATLAB\R2012b\toolbox\loc-al目录,打开classpath.txt文件,并在最后一行添加$matlabroot/java/jar/toolbox/kingbase-jdbc4.jar。
至此,驱动配置完成,如果MATLAB处于打开状态,需要重启MATLAB。
2.3 访问数据库
完成2.2节的配置后,JDBC驱动就加载成功了,此时可以通过MATLAB软件连接访问数据库。
连接代码如下:
conn=database(instance,username,password,driver,databaseurl)
其中,instance表示数据库名,username表示登录用户名,password表示登錄密码,driver表示驱动名称,databaseurl表示连接字符串。
假设已经通过KingbaseES建立了RADARDATA数据库,用户名和密码分别是system和123456,则MATLAB连接代码如下:
conn=database(‘RADARDATA,system,123456,com.kingbase.Driver,jdbc://localhost:54321/RADARDATA)。
3 基于MATLAB的数据存储
3.1 创建数据表
成功连接数据库后,有两种方式可以创建数据表,一是通过KingbaseES软件在数据库中创建;二是通过MATLAB软件创建。假设要创建表的内容如表1所示。在表1中index表示数据表中的数据序号;TaskDate表示任务日期;TRKID表示目标编号;Time表示目标获取的时间,是一个一维向量;RCS表示目标的RCS序列,是一个一维向量;Feature1表示RCS的第一个特征,是一个一维向量;Feature2表示RCS的第二个特征,是一个一维向量。
用MATLAB软件创建表1内容的代码如下:
mktab = [‘CREATE TABLE RCSData(index integer, TaskDate date, TRKID integer, Time text, RCS text, Feature1 text, Feature2 text);
exec(conn, mktab);
3.2 保存数据
在上一节中,确定了RCSData表的内容,并用MATLAB创建了数据表。接下来,利用MATLAB可以将大量数据快速地写入到数据表中。
在表1中可以发现,有几列信息为向量类型,即含有多个元素,这种类型可以和KingbaseES中的text类型方便地转换,也是选择利用KingbaseES进行数据存储的原因。endprint
用MATLAB軟件写入数据库数据的代码如下:
Fastinsert(conn,RCSData,{‘index,TaskDate,TRKID,Time,RCS,Feature1,Feature2},{1,2017-11-1,1,num2str(1:10), num2str(rand(1,10)), num2str([1.1 2.1]), num2str([3.2 4.2])});
Fastinsert(conn,RCSData,{‘index,TaskDate,TRKID,Time,RCS,Feature1,Feature2},{2,2017-11-1,2,num2str(1:20), num2str(rand(1,20)), num2str([1.1 2.1 3.1]), num2str([3.2 4.2 5.2])});
Commit(conn);
利用上述代码,在表中成功插入了两组不同长度的RCS序列数据。因此,通过MATLAB软件可以将历史数据批量快速地导入数据库,为数据管理与分析奠定了良好的基础。
4 数据表内容获取与更新
上一节中将数据存入到了数据库中,当利用MATLAB进行数据分析的时候,需要将数据从数据库中读出来。用MATLAB软件读取数据库数据的代码如下:
curs=exec(conn,select * from RCSData);
curs=fetch(curs);
data=curs.data;
RCS=str2num(data{1,5});
close(curs);
假如只需要读取指定目标编号和RCS的信息,可以这样写:
curs=exec(conn,select TRKID,RCS from RCSData);
curs=fetch(curs);
data=curs.data;
TRKID=data{1,1};
RCS=str2num(data{1,2});
close(curs);
通过以上的方式,可以从数据库中获取弹道目标数据,从而可以利用MATLAB强大的数据处理功能和丰富的可视化函数,开展对弹道目标数据的分析。
在读取数据后,如果用不同的方式重新计算了RCS序列的特征,需要对数据库中RCS序列的特征进行更新,用MATLAB软件更新数据库数据的代码如下:
update(conn,RCSData,{‘Feature1},{num2str([1.3 2.3])},where TRKID = 1);
update(conn,RCSData,{‘Feature1},{num2str([1.3 2.3 3.3])},where TRKID = 2);
commit(conn);
在完成对数据库的操作后,需要关闭数据库连接,MATLAB命令如下:
close(conn);
5 结语
本文针对弹道目标数据的特点,利用KingbaseES实现了弹道目标历史数据的存储,同时利用MATALB软件实现了对数据库的数据保存、读取与更新。利用MATLAB和KingbaseES,即解决了弹道目标历史数据的管理问题,又利用MATALB软件方便地对数据进行分析,能够充分挖掘弹道目标数据的信息,体现了历史数据的价值。
参考文献
[1]陈静,范乃吉,袁晓东等.Matlab环境下的Oracle数据库访问技术[J].计算机应用,2015,35(S1):78-82,97.
Abstract:Due to the particularity of the ballistic target, the real ballistic target data is very precious. It becomes more and more important how to save and manage the historical data, facilitate the analysis and give full play to the value of the experimental data. In this paper, in view of this issue, combined with the characteristics of the ballistic target data, put forward the data management using the KingbaseES database, while the use of MATLAB software for data analysis, that is, to solve the ballistic target data storage problems, while using MATLAB software to achieve data Visual analysis.
Key Words:Database; KingbaseES; Database accessendprint