新聞中心
隨著數(shù)據(jù)處理需求的不斷增加,越來(lái)越多的人開(kāi)始關(guān)注如何使用軟件工具來(lái)更好地處理數(shù)據(jù)。Matlab是一款優(yōu)秀的數(shù)學(xué)軟件,它具有強(qiáng)大的計(jì)算能力和豐富的功能,能夠在數(shù)據(jù)處理中起到重要的作用。與此同時(shí),數(shù)據(jù)庫(kù)是一種存儲(chǔ)和管理數(shù)據(jù)的系統(tǒng),越來(lái)越多的數(shù)據(jù)都存儲(chǔ)在數(shù)據(jù)庫(kù)中。那么,如何將Matlab與數(shù)據(jù)庫(kù)結(jié)合起來(lái),實(shí)現(xiàn)高效數(shù)據(jù)處理呢?

創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的眉縣網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
一、為什么需要將Matlab與數(shù)據(jù)庫(kù)結(jié)合
在處理數(shù)據(jù)過(guò)程中,我們需要從數(shù)據(jù)源中獲取數(shù)據(jù),如數(shù)據(jù)文件、數(shù)據(jù)庫(kù)等。 對(duì)于數(shù)據(jù)量大的情況,從文件直接讀取數(shù)據(jù)會(huì)非常耗時(shí),甚至?xí)斐上到y(tǒng)崩潰。而數(shù)據(jù)庫(kù)可以通過(guò)索引快速查詢、過(guò)濾和更新數(shù)據(jù),因此在處理大數(shù)據(jù)集時(shí),使用數(shù)據(jù)庫(kù)會(huì)提高效率。同時(shí),Matlab可以進(jìn)行數(shù)據(jù)分析、運(yùn)算和可視化等操作,所以將數(shù)據(jù)庫(kù)中的數(shù)據(jù)讀取到Matlab中,并對(duì)其進(jìn)行處理,將這兩者結(jié)合起來(lái)則是處理大數(shù)據(jù)集非常有效的途徑。
二、如何實(shí)現(xiàn)Matlab與數(shù)據(jù)庫(kù)的結(jié)合
使用Matlab可以連接各種數(shù)據(jù)庫(kù)類(lèi)型,包括MySQL、Microsoft SQL Server、Oracle等。一般情況下,我們可以使用ODBC(Open Database Connectivity)來(lái)連接數(shù)據(jù)庫(kù)。該接口定義了一套通用的API,可以讓不同類(lèi)型的數(shù)據(jù)庫(kù)互相通訊。Matlab也提供了可以使用ODBC連接各種數(shù)據(jù)庫(kù)的工具。
以MySQL數(shù)據(jù)庫(kù)為例,以下是實(shí)現(xiàn)Matlab與MySQL的連接方法:
1. 創(chuàng)建ODBC數(shù)據(jù)源
首先需要在Windows環(huán)境下創(chuàng)建MySQL數(shù)據(jù)庫(kù)的ODBC數(shù)據(jù)源。方法是:打開(kāi)“控制面板”→“管理工具”→“ODBC數(shù)據(jù)源”→選擇“系統(tǒng)DSN”→“添加”→選擇“MySQL ODBC 5.3 ANSI Driver”或“MySQL ODBC 5.3 Unicode Driver” → 輸入數(shù)據(jù)源名稱、描述、服務(wù)器等信息后測(cè)試連接。
2. 使用ODBC連接MySQL
在Matlab中使用ODBC連接MySQL需要用到ODBC數(shù)據(jù)源,具體步驟如下:
“`matlab
db = database(‘MySQL’, ‘root’, ‘password’, ‘com.mysql.jdbc.Driver’, ‘jdbc:mysql://localhost:3306/test’,’com.mysql.jdbc.Driver’);
% ‘MySQL’表示數(shù)據(jù)庫(kù)類(lèi)型, ‘root’表示用戶名,‘password’表示連接密碼,‘com.mysql.jdbc.Driver’是MySQL的JDBC驅(qū)動(dòng),‘jdbc:mysql://localhost:3306/test’表示要連接到的MySQL數(shù)據(jù)庫(kù)Server。
“`
3. 連接MySQL數(shù)據(jù)庫(kù)
“`matlab
conn = database(‘test’, ‘root’, ‘password’, ‘com.mysql.jdbc.Driver’, ‘jdbc:mysql://localhost:3306/test’,’com.mysql.jdbc.Driver’);
% ‘test’為我們的數(shù)據(jù)庫(kù)名。
“`
連接后,我們可以運(yùn)行任何標(biāo)準(zhǔn)SQL查詢語(yǔ)句,以獲得所需的數(shù)據(jù)。在Matlab中,使用“exec”的方法執(zhí)行SQL語(yǔ)句。Matlab將返回包含查詢結(jié)果的數(shù)據(jù)集對(duì)象。
“`matlab
selectQuery = ‘SELECT * FROM table_name’;
results = fetch(exec(conn, selectQuery));
“`
三、Matlab如何高效處理數(shù)據(jù)庫(kù)數(shù)據(jù)
在連接數(shù)據(jù)庫(kù)后,我們可以通過(guò)將數(shù)據(jù)庫(kù)查詢獲得的數(shù)據(jù)導(dǎo)入到Matlab中,然后對(duì)其進(jìn)行分析、處理和可視化操作。
我們可以使用“fetch”的方法將結(jié)果導(dǎo)入到一個(gè)MATLAB數(shù)據(jù)結(jié)構(gòu)中,如下所示:
“`matlab
results = fetch(selectStmt)
“`
這將返回一個(gè)MATLAB內(nèi)部數(shù)據(jù)類(lèi)型的結(jié)果集,可以直接進(jìn)行處理和分析。此外,對(duì)于大型數(shù)據(jù)集,我們可以選擇逐塊讀取數(shù)據(jù),以減少內(nèi)存消耗和加快程序的運(yùn)行速度。例如,可以使用以下代碼將結(jié)果逐塊輸出:
“`matlab
warning off;
fetchSize = 1000;
setdbprefs(‘DataReturnFormat’,’table’);
localSelect = [selectStmt,’ LIMIT’];
count = fetch(exec(conn, [‘select count(*) from (‘ selectStmt ‘) tempTable’]));
count = count.Data{1};
localResultSet = cell(1, ceil(count/fetchSize));
tic;
for ii = 1:length(localResultSet)
results = fetch(exec(conn, [localSelect ‘ ‘ num2str((ii-1)*fetchSize) ‘, ‘ num2str(fetchSize)]));
% 將查詢結(jié)果轉(zhuǎn)為數(shù)組,執(zhí)行自定義函數(shù)
localResultSet{ii} = table2array(results);
end
disp([‘Query Runs in’,num2str(toc),’Seconds’]);
% 將每個(gè)區(qū)塊結(jié)果拼接成完整的查詢結(jié)果
totalResultSet = cat(1, localResultSet{:});
“`
Matlab提供了強(qiáng)大的功能和API,可以與各種類(lèi)型的數(shù)據(jù)庫(kù)進(jìn)行連接,從而靈活地處理數(shù)據(jù)。借助Matlab的分析和處理能力,我們可以更高效、方便地獲取和處理大量數(shù)據(jù),從而為科學(xué)研究和工程設(shè)計(jì)提供了有價(jià)值的支持。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗(yàn)豐富以策略為先導(dǎo)10多年以來(lái)專注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),響應(yīng)式網(wǎng)站制作,設(shè)計(jì)師量身打造品牌風(fēng)格,熱線:028-86922220Matlab和Mysql數(shù)據(jù)連接問(wèn)題。
有感于網(wǎng)上查到了大量相當(dāng)有幫助的技術(shù)性文章,這里也把我前段時(shí)間實(shí)現(xiàn)的一個(gè)功能程序公布出來(lái),供需者參考。
功能簡(jiǎn)介:服務(wù)器R(remote)只負(fù)責(zé)網(wǎng)站的運(yùn)行和訪問(wèn),每天獲得一批新的原始數(shù)據(jù),服務(wù)器L(local)負(fù)責(zé)后臺(tái)運(yùn)算,自動(dòng)定時(shí)從服務(wù)器R的mysql里讀取數(shù)據(jù),在L上經(jīng)過(guò)matlab編寫(xiě)的算法程序運(yùn)算后再遠(yuǎn)程將結(jié)果寫(xiě)回R的數(shù)據(jù)庫(kù)以實(shí)現(xiàn)網(wǎng)站的更新。全程無(wú)人值守。(L負(fù)責(zé)后臺(tái)運(yùn)算,安裝matlab;R負(fù)責(zé)網(wǎng)絡(luò)訪問(wèn),安裝mysql)
不同于網(wǎng)絡(luò)上查到的實(shí)現(xiàn)方法,本程序全部在m文件里編寫(xiě),不用php 或c++做接口,宗旨就是用簡(jiǎn)單的方法實(shí)現(xiàn)簡(jiǎn)單的想法。(以下假定suanfa.m子程序已經(jīng)存在)
1.編寫(xiě)import_data.m子程序,實(shí)現(xiàn)從mysql讀取數(shù)據(jù)到matlab中.
1)下載mysql的jdbc的java驅(qū)動(dòng),安裝到*:\Program Files\MATLAB71\java\jar\toolbox路徑下;
2)此“路徑\文件名”添到*:\Program Files\MATLAB71\toolbox\local下的classpath.txt文件中;
3)設(shè)置mysql下的數(shù)據(jù)庫(kù)名稱為帶有“mysql ”后綴的,比如:abcmysql;
4)服務(wù)器R的mysql下,輸入“grant all on *.* to username@”L的IP” Identified by
“password”,允許L遠(yuǎn)程訪問(wèn);
5)復(fù)制如下代碼到import_data文件中
function MM=import_data();
timeoutA=logintimeout(5)
% Set maximum time allowed for establishing a connection.
connA = database(‘mysql’, ‘username’, ‘password’,’com.mysql.jdbc.Driver’,’jdbc:mysql:
//R的IP:3306/abc’)
ping(connA)% Check the database status.
cursorA=exec(connA,’SELECT ALL CONLUMA,CONLUMB,CONLUMC FROM tablename);
setdbprefs(‘DataReturnFormat’,’numeric’); %set numeric format
cursorA=fetch(cursorA) ; % Fetch all rows of data.
MM=cursorA.Data;% Display the data,save the data in MM
close(cursorA) ;% Close the cursor and the connection.
close(connA)
其中username,password,L\R的IP,數(shù)據(jù)庫(kù)名稱abc,tablename,sql語(yǔ)句都是要依實(shí)際修改的。
2.編寫(xiě)export_data.m子程序,實(shí)現(xiàn)從matlab寫(xiě)回?cái)?shù)據(jù)到mysql中:
原理類(lèi)似, (tablename2的表要事先建好u)復(fù)制以下程序:
timeoutA=logintimeout(5)
% Set maximum time allowed for establishing a connection.
connA = database(‘mysql’, ‘username’, ‘password’,’com.mysql.jdbc.Driver’,’jdbc:mysql:
//R的IP:3306/abc’)
ping(connA)% Check the database status.
%delete the records before updating
cursorA=exec(connA,’delete tablename FROM tablename’);
Colnames = ;%updating
fastinsert(connA, ‘tablename2’, Colnames,newdata);
close(cursorA) ;
close(connA);
其中username,password,R的IP,數(shù)據(jù)庫(kù)名稱abc,tablename,sql語(yǔ)句都是要以實(shí)際情況修改的,
newdata就是suanfa.m程序得到結(jié)果組成的矩陣,這些結(jié)果將寫(xiě)到數(shù)據(jù)庫(kù)中tablename2的表中。
3.編寫(xiě)主程序以調(diào)用這些子程序:
4.編譯m程序?yàn)閑xe程序:
(注意主程序頭部的也要加“function”呦,否則作為腳本文件不能編譯)
1)在matlab環(huán)境中配置編譯器,輸入mbuild -setup,依提示操作;
2)輸入mcc -m main.m suanfa.m import_data.m export_data.m生成與主程序同名的exe文件;
3)設(shè)置windows任務(wù)計(jì)劃,添加此exe文件便可以自動(dòng)定時(shí)讀取、計(jì)算、更新網(wǎng)站數(shù)據(jù)庫(kù)了。
ps:matlab7.0沒(méi)有找到deploytool工具,沒(méi)法連接數(shù)據(jù)庫(kù),要使用更高版本的matlab。
Database Toolbox 2
和關(guān)系數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)交換
Database 工具箱可以使你使用MATLAB 的數(shù)據(jù)分析
和可視化工具對(duì)存儲(chǔ)在數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行分析。在
MATLAB 工作環(huán)境中, 您可以使用結(jié)構(gòu)化查詢語(yǔ)言進(jìn)
行:
■ 對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行讀寫(xiě)
■ 使用約束條件對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作
您可以在MATLAB 中和絕大多數(shù)的數(shù)據(jù)庫(kù)進(jìn)行交
互, 包括Oracle、Sybase、Microsoft SQL Server、
MySQL、PostgreSQL 以及Microsoft Access 。該工具箱
還允許您在單個(gè)的MATLAB 任務(wù)中同時(shí)存取多個(gè)數(shù)據(jù)
庫(kù)并且支持事務(wù)特性。它包含了Visual Query Builder
( 可視化查詢工具), 它可以使您在不熟悉SQL 的情
況下和數(shù)據(jù)庫(kù)進(jìn)行交互。
Visual Query Builder
可以快速對(duì)您的數(shù)據(jù)
進(jìn)行存取和圖表顯示
關(guān)鍵特性
■ 支持ODBC/JDBC 連接的數(shù)據(jù)庫(kù)接口
包括Oracle、Sybase、Microsoft SQL
Server、MySQL、PostgreSQL 以及
Microsoft Access
■ 從MATLAB 中直接執(zhí)行查詢語(yǔ)句
■ 對(duì)于大數(shù)據(jù)量查詢, 將增量獲取數(shù)據(jù)
■ 在所有的數(shù)據(jù)導(dǎo)入和導(dǎo)出的過(guò)程中,
保留數(shù)據(jù)類(lèi)型
■ 單個(gè)的MATLAB 任務(wù)中可以同時(shí)
存取多個(gè)數(shù)據(jù)庫(kù)
■ 從一個(gè)數(shù)據(jù)庫(kù)中導(dǎo)入數(shù)據(jù),完成計(jì)
算后, 將結(jié)果輸出到另外一個(gè)數(shù)據(jù)庫(kù)
■ 在單個(gè)事務(wù)中獲取大數(shù)據(jù)集, 或者分
割數(shù)據(jù), 通過(guò)多個(gè)事務(wù)來(lái)完成
■ 通過(guò)在一個(gè)MATLAB 會(huì)話中保持?jǐn)?shù)
據(jù)庫(kù)連接來(lái)減少需要進(jìn)行輸入和輸出
數(shù)據(jù)所需要的語(yǔ)句, 除非數(shù)據(jù)庫(kù)連接
被顯式關(guān)閉
■ 它可以使您在不熟悉SQL 的情況下
和數(shù)據(jù)庫(kù)進(jìn)行交互
在MATLAB 中對(duì)Microsoft Access 數(shù)據(jù)庫(kù)進(jìn)行查詢
數(shù)據(jù)庫(kù)工具箱函數(shù)列表
數(shù)據(jù)庫(kù)訪問(wèn)函數(shù)
clearwarnings 清除數(shù)據(jù)庫(kù)連接警告
close 關(guān)閉數(shù)據(jù)庫(kù)連接
commit 數(shù)據(jù)庫(kù)改變參數(shù)
database 連接數(shù)據(jù)庫(kù)
exec 執(zhí)行SQL語(yǔ)句和打開(kāi)油標(biāo)
get 得到數(shù)據(jù)庫(kù)屬性
insert 導(dǎo)出MATLAB單元數(shù)組數(shù)據(jù)到數(shù)據(jù)庫(kù)表
isconnection 判斷數(shù)據(jù)庫(kù)連接是否有效
isreadonly 判斷數(shù)據(jù)庫(kù)連接是否只讀
ping 得到數(shù)據(jù)庫(kù)連接信息
rollback 撤銷(xiāo)數(shù)據(jù)庫(kù)變化
set 設(shè)置數(shù)據(jù)庫(kù)連接屬性
sql2native 轉(zhuǎn)換JDBC SQL 語(yǔ)法為系統(tǒng)本身的SQL語(yǔ)法
update 用MATLAB單元數(shù)組數(shù)據(jù)代替數(shù)據(jù)庫(kù)表的數(shù)據(jù)
數(shù)據(jù)庫(kù)游標(biāo)訪問(wèn)函數(shù)
attr 獲得的數(shù)據(jù)集的列屬性
close 關(guān)閉游標(biāo)
cols 獲得的數(shù)據(jù)集的列數(shù)值
columnnames 獲得的數(shù)據(jù)集的列名稱
fetch 導(dǎo)入數(shù)據(jù)到MATLAB單元數(shù)組
get 得到游標(biāo)對(duì)象屬性
querytimeout 數(shù)據(jù)庫(kù)SQL查詢成功的時(shí)間
rows 獲取數(shù)據(jù)集的行數(shù)
set 設(shè)置游標(biāo)獲取的行限制
width 獲取數(shù)據(jù)集的列寬
數(shù)據(jù)庫(kù)元數(shù)據(jù)函數(shù)
bestrowid 得到數(shù)據(jù)庫(kù)表唯一行標(biāo)識(shí)
columnprivileges 得到數(shù)據(jù)庫(kù)列優(yōu)先權(quán)
columns 得到數(shù)據(jù)庫(kù)表列名稱
crossreference 得到主健和外健信息
dmd 創(chuàng)建數(shù)據(jù)庫(kù)元數(shù)據(jù)對(duì)象
exportedkeys 得到導(dǎo)出外部健信息
get 得到數(shù)據(jù)庫(kù)元數(shù)據(jù)屬性
importedkeys 得到導(dǎo)入外健信息
indexinfo 得到數(shù)據(jù)庫(kù)表的索引和統(tǒng)計(jì)
primarykeys 從數(shù)據(jù)庫(kù)表或結(jié)構(gòu)得到主健信息
procedurecolumns 得到目錄存儲(chǔ)程序參數(shù)和結(jié)果列
procedures 得到目錄存儲(chǔ)程序
supports 判斷是否支持?jǐn)?shù)據(jù)庫(kù)元數(shù)據(jù)
tableprivileges 得到數(shù)據(jù)庫(kù)表優(yōu)先權(quán)
tables 得到數(shù)據(jù)庫(kù)表名稱
versioncolumns 得到自動(dòng)更新表列
Xinsoft,:28:15
數(shù)據(jù)庫(kù)工具箱讓用戶使用MATLAB強(qiáng)大數(shù)據(jù)分析和可視化工具功能處理存儲(chǔ)在數(shù)據(jù)庫(kù)中的數(shù)據(jù)的復(fù)雜分析。在MATLAB環(huán)境下工作,可以用結(jié)構(gòu)化查詢語(yǔ)言SQL)命令:
讀,寫(xiě)數(shù)據(jù)庫(kù)的數(shù)據(jù)
簡(jiǎn)單和高級(jí)條件的數(shù)據(jù)查詢
連接MATLAB和數(shù)據(jù)庫(kù)包括Oracle,Sybase,Microsoft SQL Server和Informix。
可以用單一MATLAB同時(shí)訪問(wèn)多個(gè)數(shù)據(jù)庫(kù),進(jìn)行大數(shù)據(jù)量的事務(wù)處理。不懂SQL的用戶可以用Visual Query Builder處理數(shù)據(jù)。
重點(diǎn)
魯棒接口能力。 用ODBC/JDBC連接數(shù)據(jù)庫(kù),包括Oracle,Sybase SQL Server,Sybase SQL Anywhere,Microsoft SQL Server, Microsoft Access,
Informix Ingres.
SQL語(yǔ)法。 在MATLAB環(huán)境直接執(zhí)行SQL查詢
動(dòng)態(tài)導(dǎo)入數(shù)據(jù)。 調(diào)節(jié)SQL查詢,把數(shù)據(jù)導(dǎo)入MATLAB。數(shù)據(jù)庫(kù)工具箱滿足小的和大的查詢。
數(shù)據(jù)類(lèi)型保存。 在數(shù)據(jù)導(dǎo)入和導(dǎo)出行為MATLAB保存數(shù)據(jù)類(lèi)型
同時(shí)訪問(wèn)多個(gè)數(shù)據(jù)庫(kù)。 從數(shù)據(jù)庫(kù)導(dǎo)入數(shù)據(jù),對(duì)該數(shù)據(jù)執(zhí)行計(jì)算,然后導(dǎo)入到另一個(gè)數(shù)據(jù)庫(kù)。
處理大數(shù)據(jù)集的能力。
連續(xù)狀態(tài)的數(shù)據(jù)庫(kù)連接:一旦和某個(gè)數(shù)據(jù)庫(kù)的連接建立后,數(shù)據(jù)庫(kù)一直是打開(kāi)的,除非在MATLAB中執(zhí)行關(guān)閉語(yǔ)句。這提高了數(shù)據(jù)庫(kù)的讀取速度,減少了不必要的命令來(lái)調(diào)入,輸出數(shù)據(jù) Visual Query Builder. 該圖形用戶接口列數(shù)據(jù)源和所有表和字段,不懂SQL的用戶可以訪問(wèn)和查詢數(shù)據(jù)庫(kù)函數(shù)列表
數(shù)據(jù)庫(kù)訪問(wèn)函數(shù)
clearwarnings 清除數(shù)據(jù)庫(kù)連接警告
close 關(guān)閉數(shù)據(jù)庫(kù)連接
commit 數(shù)據(jù)庫(kù)改變參數(shù)
database 連接數(shù)據(jù)庫(kù)
exec 執(zhí)行SQL語(yǔ)句和打開(kāi)油標(biāo)
get 得到數(shù)據(jù)庫(kù)屬性
insert 導(dǎo)出MATLAB單元數(shù)組數(shù)據(jù)到數(shù)據(jù)庫(kù)表
isconnection 判斷數(shù)據(jù)庫(kù)連接是否有效
isreadonly 判斷數(shù)據(jù)庫(kù)連接是否只讀
ping 得到數(shù)據(jù)庫(kù)連接信息
rollback 撤銷(xiāo)數(shù)據(jù)庫(kù)變化
set 設(shè)置數(shù)據(jù)庫(kù)連接屬性
sql2native 轉(zhuǎn)換JDBC SQL 語(yǔ)法為系統(tǒng)本身的SQL語(yǔ)法
update 用MATLAB單元數(shù)組數(shù)據(jù)代替數(shù)據(jù)庫(kù)表的數(shù)據(jù)
數(shù)據(jù)庫(kù)游標(biāo)訪問(wèn)函數(shù)
attr 獲得的數(shù)據(jù)集的列屬性
close 關(guān)閉游標(biāo)
cols 獲得的數(shù)據(jù)集的列數(shù)值
columnnames 獲得的數(shù)據(jù)集的列名稱
fetch 導(dǎo)入數(shù)據(jù)到MATLAB單元數(shù)組
get 得到游標(biāo)對(duì)象屬性
querytimeout 數(shù)據(jù)庫(kù)SQL查詢成功的時(shí)間
rows 獲取數(shù)據(jù)集的行數(shù)
set 設(shè)置游標(biāo)獲取的行限制
width 獲取數(shù)據(jù)集的列寬
數(shù)據(jù)庫(kù)元數(shù)據(jù)函數(shù)
bestrowid 得到數(shù)據(jù)庫(kù)表唯一行標(biāo)識(shí)
columnprivileges 得到數(shù)據(jù)庫(kù)列優(yōu)先權(quán)
columns 得到數(shù)據(jù)庫(kù)表列名稱
crossreference 得到主健和外健信息
dmd 創(chuàng)建數(shù)據(jù)庫(kù)元數(shù)據(jù)對(duì)象
exportedkeys 得到導(dǎo)出外部健信息
get 得到數(shù)據(jù)庫(kù)元數(shù)據(jù)屬性
importedkeys 得到導(dǎo)入外健信息
indexinfo 得到數(shù)據(jù)庫(kù)表的索引和統(tǒng)計(jì)
primarykeys 從數(shù)據(jù)庫(kù)表或結(jié)構(gòu)得到主健信息
procedurecolumns 得到目錄存儲(chǔ)程序參數(shù)和結(jié)果列
procedures 得到目錄存儲(chǔ)程序
supports 判斷是否支持?jǐn)?shù)據(jù)庫(kù)元數(shù)據(jù)
tableprivileges 得到數(shù)據(jù)庫(kù)表優(yōu)先權(quán)
tables 得到數(shù)據(jù)庫(kù)表名稱
versioncolumns 得到自動(dòng)更新表列
MATLABER曰:
這是個(gè)很經(jīng)典的介紹,
因?yàn)樗婕暗組ATLAB在金融學(xué)中的應(yīng)用,甚至利用它可以作出很好的財(cái)務(wù)軟件.
zhimingchen曰:Visual Query Builder 不支持漢字,所以我覺(jué)得使用 Visual Query Builder 不是更好的方法;使用DAO,特別ADO是一種很好方法,可以做到與數(shù)據(jù)庫(kù)無(wú)關(guān);請(qǐng)看我的一個(gè)訪問(wèn)數(shù)據(jù)庫(kù)的實(shí)例:
function Table=GetTable(ConnectionStr,SqlStr)
%ConnectionStr為連接串,比如可以設(shè)置ConnectionStr=’Data Source=HistryData2.0;
Pr
ovider=MSDASQL;User ID=Admin;Password=;’
%SqlStr為SQL語(yǔ)句,
% 利用ADO調(diào)用數(shù)據(jù)源
try
MyConnection=actxserver(‘ADODB.Connection’);
MyConnection.ConnectionString=ConnectionStr;
invoke(MyConnection,’Open’);
MyRecordset=invoke(MyConnection,’Execute’,SqlStr);
%域信息
Fields=MyRecordset.Fields;
%域個(gè)數(shù)
FieldNumber=Fields.Count;
FieldNames=cell(1,FieldNumber);
%獲取數(shù)據(jù)
% invoke(MyRecordset,’MoveFirst’);
Data=invoke(MyRecordset,’GetRows’);
MyRecordset.Source;
%記錄行數(shù)
RecordCount=size(Data,2);
for i=1:size(FieldNames,2)
TempField=get(Fields,’Item’,i-1);
FieldNames=TempField.Name;
end
%給Table賦植
Table.RecordCount=RecordCount;
Table.FieldNames=FieldNames;
Table.Data=Data;
invoke(MyRecordset,’Close’);
invoke(MyConnection,’Close’);
catch
msgbox(lasterr,’Tint’);
Table.Data={};
end
Xinsoft,:28:37
一、通過(guò)MATLAB 提供的數(shù)據(jù)庫(kù)引擎, 以下是MATLAB ,DATABASE TOOLBOX中的例子,
通過(guò)ODBC/JDBC 接口訪問(wèn)具體的數(shù)據(jù)庫(kù)
function dbimportdemo()
%DBIMPORTDEMO Imports data into Matlab from a database.
% Version 1.0 21-Oct-1997
% Author(s): E.F. McGoldrick, 12/5/1997
% Copyright (c)The MathWorks, Inc.
% $Revision: 1.7 $ $Date: 2023/01/12 16:22:06 $
% Set maximum time allowed for establishing a connection.
timeoutA=logintimeout(5)
% Connect to a database.
%打開(kāi)數(shù)據(jù)源 SampleDB
connA=database(‘SampleDB’,”,”)
% Check the database status.
ping(connA)
% Open cursor and execute SQL statement.
%執(zhí)行SQL查詢語(yǔ)句
cursorA=exec(connA,’select country from customers’);
% Fetch the first 10 rows of data.
%獲取前十行數(shù)據(jù)
cursorA=fetch(cursorA,10)
% Display the data.
%顯示
AA=cursorA.Data
% Close the cursor and the connection.
%關(guān)閉
close(cursorA)
close(connA)
二、通過(guò)DAO訪問(wèn)數(shù)據(jù)庫(kù)(DAO技術(shù)適合于訪問(wèn)ACCESS 2023以下版本的數(shù)據(jù)庫(kù),優(yōu)點(diǎn)是功
能
齊全,具體可以參考MSDN關(guān)于DAO的幫助),以下是我自己摸索出來(lái)的,在MATLAB幫助文
件
中有關(guān)于如何調(diào)用EXCEL組件的方法。
Handle=actxserver(‘DAO.DBEngine.36’);
MyWSS=get(Handle,’Workspaces’)
Count=get(MyWSS,’Count’)
MyWS=get(MyWSS,’Item’,0)
%打開(kāi)數(shù)據(jù)庫(kù)
MyDB=invoke(MyWS,’OpenDatabase’,’D:\My Documents\test.mdb’)
%打開(kāi)數(shù)據(jù)庫(kù)的表,得到一個(gè)指向記錄集的指針
MyRS=invoke(MyDB,’OpenRecordset’,’用戶’)
%獲取“用戶”表的前十行數(shù)據(jù)
MyRows=invoke(MyRS,’GetRows’,’10’)
%關(guān)閉
invoke(MyRS,’Close’)
invoke(MyDB,’Close’)
invoke(MyWS,’Close’)
三、ADO技術(shù)(微軟建議ACCESS 2023及以上版本的數(shù)據(jù)庫(kù)應(yīng)盡量通過(guò)ADO訪問(wèn),優(yōu)點(diǎn)是可
以
通過(guò)較少的對(duì)象訪問(wèn)數(shù)據(jù)庫(kù),ADO與今后微軟的數(shù)據(jù)庫(kù)技術(shù)發(fā)展方向一致,目前支持的功
能
稍微少了一些)具體訪問(wèn)的可以參考MSDN的幫助文件和ADO 類(lèi)型庫(kù)的方法原型。
四、通過(guò)dde進(jìn)行動(dòng)態(tài)數(shù)據(jù)交換,可以查看help
這是我?guī)湍阏襾?lái)的。不知道對(duì)不對(duì)。找了很久的!
首先要安裝mysql驅(qū)動(dòng)程序包
Step 1: 將mysql-connector-java-5.1.7-bin.jar文件拷貝到……\MATLAB\R2023a\java\jar\toolbox
Step 2: 到……\MATLAB\R2023a\toolbox\local目錄下,找到classpath.txt文件,打開(kāi),并添加用來(lái)加載mysql的jdbc驅(qū)動(dòng)語(yǔ)句:
$matlabroot/java/jar/toolbox/mysql-connector-java-5.1.7-bin.jar
Step 3:重新打開(kāi)MATLAB即可
驅(qū)動(dòng)程序安裝成功后,接來(lái)下要是matlab連接mysql數(shù)據(jù)庫(kù)的代碼:
conn =database(‘databasename’,’username’,’password’,’driver’,’databaseurl’)
連接成功后,返回連接對(duì)象。
參數(shù)如下:
*databasename: 數(shù)據(jù)庫(kù)名稱.
*driver: JDBC driver.
*username and password: 用戶名和密碼.
*databaseurl: 類(lèi)似于jdbc:subprotocol:subname. subprotocol 是數(shù)據(jù)庫(kù)類(lèi)型,
subname 類(lèi)似于//hostname:port/databasename.
如果matlab和數(shù)據(jù)庫(kù)建立了連接,將返回類(lèi)似于如下信息:
Instance: ‘SampleDB’
UserName: ”
Driver:
URL:
Constructor:
Message:
Handle:
TimeOut: 0
AutoCommit: ‘off’
Type: ‘Database Object’
連接mysql的代碼如下:
conn = database(’tissueppi’,’root’,’root’,’com.mysql.jdbc.Driver’,’jdbc:
連接成功后,就可以用exec函數(shù)執(zhí)行sql語(yǔ)句
exec函數(shù)執(zhí)行sql語(yǔ)句并返回一個(gè)開(kāi)指針
語(yǔ)法如下:
curs = exec(conn,’sqlquery’)
例如:curs = exec(conn, ‘select * from customers’)
執(zhí)行完查詢后,還要將查詢結(jié)果從開(kāi)放cursor對(duì)象導(dǎo)入到對(duì)象curs中,該功能是用
cursor.fetch函數(shù)實(shí)現(xiàn)的。
語(yǔ)法如下:
curs = fetch(curs)
使用curs.Data來(lái)顯示數(shù)據(jù),curs.Data返回一個(gè)CELL結(jié)構(gòu),可以先把CELL結(jié)構(gòu)轉(zhuǎn)換成
MATRIX結(jié)構(gòu)再取值:
cur =cell2mat(cur)
a=cur(1,1);
則查詢結(jié)果就加到了向量a中
注意:
在exec函數(shù)執(zhí)行查詢過(guò)程中,有的sql語(yǔ)句要輸入變量,這時(shí)可使用strcat函數(shù)完成該
功能。
t = strcat(s1, s2, s3, …)
for(t=1:10)
sql1 = strcat(‘select count(did) from rss_genepairs_u where gocc>=’,num2str(t),’ || gomf >= ‘,num2str(t),’ || gobp >= ‘,num2str(t));
end
完整代碼如下:
conn = database(’tissueppi’,’root’,’root’,’com.mysql.jdbc.Driver’,’jdbc:
for t=0.5:0.01:0.91
for x=0.5:0.1:11
sql = strcat(‘select count(did) from rss_genepairs_x2 where score =’,num2str(t),’ || gomf >= ‘,num2str(t),’ || gobp >= ‘,num2str(t),’)’);
aTemp = exec(conn,sql);
aTemp = fetch(aTemp);
a = aTemp.Data;
a = cell2mat(a);
a= a(1,1);
end
end
matlab 與數(shù)據(jù)庫(kù)的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于matlab 與數(shù)據(jù)庫(kù),探究Matlab如何與數(shù)據(jù)庫(kù)結(jié)合實(shí)現(xiàn)高效數(shù)據(jù)處理,Matlab和Mysql數(shù)據(jù)連接問(wèn)題。的信息別忘了在本站進(jìn)行查找喔。
成都創(chuàng)新互聯(lián)科技公司主營(yíng):網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、小程序制作、成都軟件開(kāi)發(fā)、網(wǎng)頁(yè)設(shè)計(jì)、微信開(kāi)發(fā)、成都小程序開(kāi)發(fā)、網(wǎng)站制作、網(wǎng)站開(kāi)發(fā)等業(yè)務(wù),是專業(yè)的成都做小程序公司、成都網(wǎng)站建設(shè)公司、成都做網(wǎng)站的公司。創(chuàng)新互聯(lián)公司集小程序制作創(chuàng)意,網(wǎng)站制作策劃,畫(huà)冊(cè)、網(wǎng)頁(yè)、VI設(shè)計(jì),網(wǎng)站、軟件、微信、小程序開(kāi)發(fā)于一體。
本文名稱:探究Matlab如何與數(shù)據(jù)庫(kù)結(jié)合實(shí)現(xiàn)高效數(shù)據(jù)處理(matlab與數(shù)據(jù)庫(kù))
鏈接分享:http://www.5511xx.com/article/dhohcps.html


咨詢
建站咨詢
