宮薇薇
(中國(guó)鐵道科學(xué)研究院,北京 100081)
基于Matlab數(shù)據(jù)庫(kù)工具箱的實(shí)驗(yàn)數(shù)據(jù)自動(dòng)抽取及應(yīng)用
宮薇薇
(中國(guó)鐵道科學(xué)研究院,北京 100081)
矩陣計(jì)算和多領(lǐng)域的算法庫(kù)是Malab科學(xué)計(jì)算軟件的核心,它所提供的大量函數(shù)庫(kù)為科研工作者進(jìn)行專(zhuān)業(yè)領(lǐng)域?qū)嶒?yàn)提供了巨大的方便。Matlab數(shù)據(jù)庫(kù)工具箱雖然開(kāi)啟了自動(dòng)化調(diào)用數(shù)據(jù)的功能,但是并不是每位科學(xué)實(shí)驗(yàn)的研究者均具備數(shù)據(jù)庫(kù)編程和書(shū)寫(xiě)SQL語(yǔ)句的技能,而大規(guī)模參數(shù)賦值卻是科學(xué)實(shí)驗(yàn)的基礎(chǔ)。因此通過(guò)介紹工具箱中QueryBuilder的使用,建立ODBC/JDBC兼容數(shù)據(jù)源,對(duì)大規(guī)模實(shí)驗(yàn)數(shù)據(jù)進(jìn)行自動(dòng)抽取數(shù)據(jù)、變量賦值及圖形化表示、函數(shù)測(cè)試及調(diào)用。實(shí)現(xiàn)不書(shū)寫(xiě)任何計(jì)算機(jī)語(yǔ)句,完成大規(guī)模數(shù)據(jù)的調(diào)用賦值以及函數(shù)調(diào)用的功能,旨在幫助實(shí)驗(yàn)者快速完成物理數(shù)據(jù)的計(jì)算工作。
實(shí)驗(yàn)數(shù)據(jù);Matlab;數(shù)據(jù)庫(kù)
矩陣是Matlab的數(shù)據(jù)存儲(chǔ)形式,矩陣存儲(chǔ)結(jié)構(gòu)方便對(duì)陣內(nèi)數(shù)據(jù)做規(guī)范化統(tǒng)一處理,矩陣數(shù)據(jù)的賦值是科學(xué)計(jì)算的首要的基礎(chǔ)性問(wèn)題。就目前的技術(shù)而言,大量數(shù)據(jù)的存儲(chǔ)不是問(wèn)題,關(guān)鍵是如何快速地將整理好的上萬(wàn)條數(shù)據(jù)以數(shù)據(jù)庫(kù)形式自動(dòng)賦值給需要處理函數(shù)的輸入變量。應(yīng)用寫(xiě)計(jì)算機(jī)語(yǔ)言和SQL語(yǔ)句來(lái)處理數(shù)據(jù)的提取毋庸置疑是一種良好的解決方式[1-7]。但是Matlab針對(duì)的研究者眾多,使用不同工具箱的學(xué)者各異,不是每個(gè)學(xué)者都能具備SQL編程的能力。如果矩陣數(shù)據(jù)的規(guī)模不大,手工錄入就沒(méi)有問(wèn)題,但是往往需要處理的數(shù)據(jù)規(guī)模巨大。針對(duì)此問(wèn)題,本文通過(guò)數(shù)據(jù)庫(kù)工具箱實(shí)現(xiàn)Matlab與任何ODBC/JDBC兼容數(shù)據(jù)庫(kù)的數(shù)據(jù)交換,使用QueryBuilder工具可以自動(dòng)實(shí)現(xiàn)SQL查詢(xún)語(yǔ)句的生成,完成對(duì)變量的賦值和存儲(chǔ)。進(jìn)而在不需要書(shū)寫(xiě)任何代碼的前提下,實(shí)現(xiàn)對(duì)數(shù)據(jù)讀取、分析和存儲(chǔ)的快速實(shí)現(xiàn)。實(shí)現(xiàn)每個(gè)學(xué)者能夠應(yīng)用Matlab快速實(shí)現(xiàn)物理數(shù)據(jù)的導(dǎo)入結(jié)果的測(cè)算。
實(shí)驗(yàn)步驟主要分為搜集數(shù)據(jù)、建立數(shù)據(jù)源、自動(dòng)抽取數(shù)據(jù)、變量賦值及圖形化表示、函數(shù)測(cè)試及調(diào)用五個(gè)步驟,以鐵路運(yùn)量景氣指數(shù)計(jì)算為例,對(duì)每個(gè)實(shí)驗(yàn)步驟進(jìn)行詳細(xì)闡述。
在完成求解問(wèn)題參數(shù)設(shè)計(jì)和模型建立的工作后,根據(jù)輸入?yún)?shù)的數(shù)據(jù)搜集是進(jìn)行算例測(cè)算的第一步。數(shù)據(jù)的搜集的渠道、可得性和質(zhì)量是保證模型測(cè)算結(jié)果準(zhǔn)確性的基石。示例實(shí)驗(yàn)所要測(cè)算的是影響鐵路貨運(yùn)量相關(guān)宏觀經(jīng)濟(jì)及行業(yè)因素,數(shù)據(jù)的時(shí)間周期是以月度為單位。將可搜集的相關(guān)月度數(shù)據(jù)進(jìn)行整理,分為國(guó)內(nèi)生產(chǎn)總值、工業(yè)生產(chǎn)、工業(yè)企業(yè)利潤(rùn)、投資、房地產(chǎn)、零售與消費(fèi)、勞動(dòng)力市場(chǎng)、通貨膨脹、貨幣與信貸、匯率、利率、財(cái)政收支、對(duì)外貿(mào)易、金融市場(chǎng)和大宗商品15張表,放入Excel表中,也可以導(dǎo)入到Access數(shù)據(jù)形成數(shù)據(jù)庫(kù),完成數(shù)據(jù)準(zhǔn)備。
圖1 國(guó)內(nèi)生產(chǎn)總值數(shù)據(jù)表結(jié)構(gòu)
在使用數(shù)據(jù)庫(kù)中數(shù)據(jù)之前,必須建立需要處理的數(shù)據(jù)源。Matlab調(diào)用數(shù)據(jù)庫(kù)的原理如圖2所示:操作系統(tǒng)通過(guò)數(shù)據(jù)庫(kù)工具箱,Windows通過(guò)Bridge模式和ODBC驅(qū)動(dòng),或者Unix/Windwos系統(tǒng)直接通過(guò)JDBC驅(qū)動(dòng),實(shí)現(xiàn)與數(shù)據(jù)庫(kù)之間的通訊。
圖2 數(shù)據(jù)庫(kù)工具箱驅(qū)動(dòng)原理
主要使用的是Matlab數(shù)據(jù)庫(kù)工具箱中的QueryBuilder工具,在命令窗口中輸入如下命令:
調(diào)用Visual Query Builder,如圖3所示:
圖3 Visual Query Builder窗口界面
點(diǎn)擊Query菜單中的Define ODBC Data Source對(duì)數(shù)據(jù)源進(jìn)行定義。在ODBC數(shù)據(jù)管理器中添加驅(qū)動(dòng)程序,以Excel數(shù)據(jù)為例選擇相應(yīng)的安裝數(shù)據(jù)源驅(qū)動(dòng)程序,也就是使用的數(shù)據(jù)的存儲(chǔ)格式,一般習(xí)慣性地將數(shù)據(jù)存放在excel里面。
圖4 ODBC數(shù)據(jù)源建立窗口界面
為了兼容office版本,選擇Microsoft Excel Driver(?.xls,?.xlsx,?.xlsb),點(diǎn)擊完成。對(duì)數(shù)據(jù)進(jìn)行命名。最后,點(diǎn)擊確定,即完成了數(shù)據(jù)源的定義。
在Visual Query Builder界面中的Data source中可以看到已經(jīng)建立命名的數(shù)據(jù)源,將其選中,Tables欄可以看到所有的表,選中其中一個(gè),F(xiàn)ields欄中可以看到所有的字段。
圖5 數(shù)據(jù)提取界面
如圖5所示,選擇Newuse數(shù)據(jù)源,Sheet1中的字段。在Fields欄,按住Ctrl用鼠標(biāo)左鍵逐一選擇,或者按住shift鍵用鼠標(biāo)選擇始末兩個(gè)字段,比如選擇“固定資產(chǎn)投資:制造業(yè)、標(biāo)普500波VIX指數(shù)、固定資產(chǎn)投資(名義增速)、政府財(cái)政盈余、生產(chǎn)者價(jià)格指數(shù)(季度環(huán)比折年)、人民幣存款”六個(gè)指標(biāo),按住Shift鍵,用鼠標(biāo)左鍵選擇“固定資產(chǎn)投資:制造業(yè)”,然后再選擇“人民幣存款”。在下面的SQL Statement中會(huì)自動(dòng)生成SQL語(yǔ)句:
SELECT ALL固定資產(chǎn)投資:制造業(yè),標(biāo)普500波VIX指數(shù),固定資產(chǎn)投資(名義增速),政府財(cái)政盈余,生產(chǎn)者價(jià)格指數(shù)(季度環(huán)比折年),人民幣存款FROM"Sheet1$"。
如果需要生成更加高級(jí)的SQL語(yǔ)句可以通過(guò)Advanced query options中的,Where、Group by,Having和Order by進(jìn)行自動(dòng)生成。
在圖5界面中,Matlab workspace variable中填寫(xiě)需要賦值的變量比如A,點(diǎn)擊Execute,將SQL執(zhí)行的數(shù)據(jù)結(jié)果賦值給變量。然后,在Workspace variable欄中即可看到已經(jīng)賦值變量A的基本內(nèi)容,114行6列,46512字節(jié)存儲(chǔ)。
同樣步驟,將變量B賦值:
SELECT ALL中國(guó)出口,出口金額:化工產(chǎn)品,工業(yè)增加值真實(shí)增速(3月移動(dòng)平均),石油現(xiàn)貨價(jià)格,工業(yè)企業(yè)利潤(rùn):輕工業(yè)FROM"Sheet1 $"。
Matlab workspace variable中填寫(xiě)需要賦值的變量比如B,點(diǎn)擊Execute。在Workspace variable中顯示A、B兩變量的信息。在Matlab Command Windows中查看A、B的值,以A為例:
圖5 變量A賦值結(jié)果
在Display菜單中,有關(guān)于數(shù)據(jù)的圖形化和報(bào)告生成功能,選擇Chart,打開(kāi)Visual Query Builder Charting菜單,選擇坐標(biāo)變量,點(diǎn)擊Display按鈕,自動(dòng)生成相應(yīng)的圖形化表示。
圖6 Charting界面
在Malab中的File菜單中新建Function文件,輸入相應(yīng)的參數(shù)和函數(shù)名稱(chēng),試驗(yàn)結(jié)果通過(guò)CI1變量進(jìn)行傳遞。
如圖5所示,excel數(shù)據(jù)提取出來(lái)以后是有[]括起來(lái)的Cell格式,如果進(jìn)行矩陣處理,需要將其轉(zhuǎn)換為矩陣數(shù)據(jù),應(yīng)用函數(shù)cell2mat()函數(shù),如函數(shù)CI中的第一句和第二句,處理完的A結(jié)果如圖6所示:
圖6 Cell轉(zhuǎn)Mat函數(shù)處理
圖7 CI函數(shù)處理結(jié)果
將數(shù)據(jù)轉(zhuǎn)換為Matrix格式,將目前的路徑修改到需要調(diào)用的m文件所在的文件夾,Current Folder打開(kāi)CI.m所在的文件夾。在Windows窗體中書(shū)寫(xiě)代碼:
調(diào)用寫(xiě)好的的函數(shù)function[CI1]=CI(A,B),執(zhí)行獲得結(jié)果。
大量數(shù)據(jù)的自動(dòng)化提取結(jié)合Matlab多重函數(shù)的調(diào)用是提高物理試驗(yàn)完成速度的利器。采用Matlab Tool Box中的Visual Query Builder,不需要編制任何一句代碼,快速輔助研究者從各類(lèi)數(shù)據(jù)庫(kù)中抽取數(shù)據(jù),賦值變量,應(yīng)用豐富函數(shù)庫(kù)編制個(gè)性化Function,加上Figure的函數(shù)的便捷功能,快速實(shí)現(xiàn)物理試驗(yàn)的全過(guò)程。Matlab數(shù)據(jù)庫(kù)工具箱是的使用是科學(xué)試驗(yàn)工作的有效保障。
[1] Mathworks.Database Toolbox Getting Started Guide [M].2012:1-32.
[2] 吳迪.基于Matlab及數(shù)據(jù)庫(kù)技術(shù)的試驗(yàn)數(shù)據(jù)檢驗(yàn)與存取研究[J].大學(xué)物理試驗(yàn),2010,23(4):67-69.
[3] 鄭志宏.Matlab在大學(xué)物理試驗(yàn)中的應(yīng)用[J].大學(xué)物理試驗(yàn),2005,18(4):82-83.
[4] 吳敏.Matlab數(shù)據(jù)庫(kù)開(kāi)發(fā)設(shè)計(jì)[J].工業(yè)控制計(jì)算機(jī),2006,19(4):44-46.
[5] Duane Hanselman.精通Matlab7[M].北京:清華大學(xué)出版社,2006.
[6] 代文江,王強(qiáng).基于計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)實(shí)驗(yàn)數(shù)據(jù)處理系統(tǒng)[J].大學(xué)物理實(shí)驗(yàn),2013(1):85-88.
[7] 高宇飛,牟海維.Matlab語(yǔ)言在傳感器實(shí)驗(yàn)數(shù)據(jù)處理中的應(yīng)用[J].大學(xué)物理實(shí)驗(yàn),2012(5):65-67.
Experimental Data Extraction and Application under Matlab Database Toolbox
GONG Wei-Wei
(China Academy of Railway Sciences,Beijing 100081)
Matrix computation and multi-field algorithm library is the core of scientific calculation software Malab.A lot of function tool boxes provide great convenience for research workers doing the professional field experiment.Although Matlab database toolbox opens automation calls the function of data,not every scientific experiments operating researcher have the ability to program and write the SQL statement while mass parameter assignment is the foundation of scientific experiments.Therefore this paper introduces using the toolbox Query Builder,call the ODBC/JDBC compliant database,large scale experimental data extraction,variables,function calls,parameters and calculation results of the graphical representation and scientific experiments.In order to realize without writing any computer statements to complete the large-scale data call assignment and function,aims to help the experimenter complete calculation of physical data quickly.
experimental data;Matlab;database
O4-39
A
10.14139/j.cnki.cn22-1228.2015.02.027
1007-2934(2015)02-0096-04
2014-11-18
中國(guó)鐵道科學(xué)研究院基金(2014YJ105)、(2013YJ102)、(2013YJ105)