




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、用Excel Link實現(xiàn)Excel與Matlab混合編程來源: 神經網絡作者:AI俱樂部網友評論0 條瀏覽次數(shù)48Excel Link是一個在Windows環(huán)境下實現(xiàn)Excel與Matlab進行鏈接的插件。通過連接Excel 和Matlab,用戶可以在Excel工作表空間和宏編程工具中使用Matlab的數(shù)值計算,圖形處理等功能,不需要脫離Excel環(huán)境。同時由Excel Link來保證兩個工作環(huán)境中的數(shù)據(jù)交換和同步更新。 1. Excel Link的安裝和和設置首先,在系統(tǒng)中安裝Excel軟件。然后安裝Matlab和Excel Link,用Matlab安裝盤開始安裝,選擇自定義安裝中,在選中
2、組件ExcelLink,如下圖所示:安裝完Excel Link后還需要在Excel中進行一些設置后才能使用。啟動Excel,選擇菜單“工具”項下的“加載宏”項,彈出如下對話框:選中Excel Link項。如果該項不存在,則通過瀏覽目錄,在目錄%MATLAB%toolboxexlink下找到excllink.xla文件,如下圖示,并確定。選中ExcelLink項并確定后,在Excel中多了一個Excel Link工具條,如下圖示: 經過以上的設置后就可以開始使用Excel Link了。2. ExcelLink連接管理函數(shù)(1 Matlabinit該函數(shù)只能在宏子例程中使用。初始化ExcelLin
3、k和啟動Matlab進程。只有在MLAutoStart 函數(shù)中使用“no”參數(shù),才需要手動使用Matlabinit來初始化ExcelLink和啟動Matlab進程,如果使用參數(shù)“yes”,則Matlabinit是自動執(zhí)行的。使用語法:Matlabinit(2 MLAutoStart設置自動啟動Matlab和ExcelLink。在工作表中的使用語法:MLAutoStart("yes"MLAutoStart("no"在宏中的使用語法:MLAutoStart "yes"MLAutoStart "no"使用“yes”參數(shù),
4、則當Excel啟動時,自動啟動Matlab和ExcelLink;如果使用參數(shù)“no”,則當Excel啟動時,不啟動Matlab和ExcelLink。如果在此之前它們已經啟動,則無任何影響。(3 MLClose終止Matlab進程并刪除Matlab工作空間的所有變量。并通知Excel,Matlab不再運行。在工作表中的使用語法:MLClose(在宏中的使用語法:MLClose(4 MLOpen啟動Matlab進程。如果Matlab進程已經啟動,則MLOpen函數(shù)不進行任何操作。在使用MLClose關閉Matlab進程后使用MLOpen來重新啟動Matlab。在工作表中的使用語法:MLOpen(在
5、宏中的使用語法:MLOpen3. ExcelLink數(shù)據(jù)管理函數(shù)(1 Matlabfcn根據(jù)給定的Excel數(shù)據(jù)執(zhí)行Matlab命令。在工作表中使用時的語法:matlabfcn(command,inputs參數(shù)command,Matlab將執(zhí)行的命令,命令需要寫成“command”(使用雙引號引起來的形式。參數(shù)inputs 傳給Matlab命令的變長輸入參數(shù)列表。列表是包含數(shù)據(jù)的工作表單元格范圍。函數(shù)返回單一數(shù)值或者是字符串,結果返回到調用函數(shù)的單元格中。例如matlabfcn(”sum”,B1:B10;把從B1到B10的單元格中數(shù)據(jù)相加,如下圖示:并將結果返回到當前的活動單元格。即A11,結
6、果如下圖。(2 Matlabsub根據(jù)給定的Excel數(shù)據(jù)執(zhí)行Matlab命令,并將結果返回到指定的單元格中。在工作表中的使用語法:matlabsub(command,edat,inputscommand和inputs參數(shù)的與matlabfcn相同。參數(shù)edat,指定返回值寫入在工作表中的位置。如果edat用雙引號引起來,則edat必須是單元格地址或范圍的名字。如果參數(shù)不用引號引起edat的形式,則通過計算獲得矩陣名。例如:matlabsub(”sum”,”A1”,B1:B10;把工作表中從單元格B1到B10的數(shù)據(jù)相加,并將結果返回到單元格A1中。注意:edat指定的位置不能包含matlabs
7、ub所在的位置。(3 MLAppendMatrix將Excel工作表中的數(shù)據(jù)追加到Matlab中指定的矩陣中如果該矩陣不存在,則創(chuàng)建矩陣。在工作表中使用的語法:MLAppendMatrix(var_name,mdat在宏中使用的語法:MLAppendMatrix var_name,mdat注意要追加的數(shù)據(jù)維數(shù)要和原矩陣中的維數(shù)相匹配,否則出錯。例如:MLAppendMatrix(”a”,A1:A2;假設矩陣a是個2行3列的矩陣,如下圖:將A1:A2中的數(shù)據(jù)追加到矩陣后,如下圖示成為矩陣的第四列,如下圖示。單元格B1中是字符a,函數(shù)MLAppendMatrix(B1,A1:A2的作用于MLApp
8、endMatrix (”a”,A1:A2相同。(4 MLDeleteMatrix刪除Matlab空間中指定的矩陣在工作表中使用的語法:MLDeleteMatrix(var_name;在宏中使用的語法:MLDeleteMatrix var_nameVar_name,是要刪除的矩陣名,如果矩陣名在引號內“var_name”的形式,則直接指定變量名,如果var_name不用引號引起來,則通過計算獲得實際矩陣的名字。例如,單元格B1中的內容為a,MLDeleteMatrix(B1,則表示刪除Matlab工作空間的矩陣a,它等價于MLDeleteMatrix(”a”(5 MLEvalString將命令(
9、寫成字符串的形式傳到Matlab中執(zhí)行。在工作表中使用的語法:MLEvalString(command;在宏中使用的語法:MLEvalString command參數(shù)command如果是用引號引起來”command”的形式,則是直接指定命令;如果不用引號引起來command的形式,則command必須是包含了命令字符串的工作表的單元格地址或者是范圍。例如:MLEvalString(”b=magic(4”;表示在Matlab中執(zhí)行命令b=magic(4;(6 MLGetMatrix將指定的Matlab矩陣寫入到Excel工作表中的指定位置。在工作表中使用的語法:MLGetMatrix(var_n
10、ame,edat在宏中使用的語法:MLGetMatrix var_name,edat參數(shù)Var_name,是要寫入工作表的矩陣名,如果矩陣名在引號內“var_name”的形式,則直接指定變量名,如果var_name不用引號引起來,則通過計算獲得實際矩陣的名字。參數(shù)edat指定了矩陣寫入工組表的位置。如果參數(shù)是用引號引起”edat”的形式,則是直接指定矩陣名,如果參數(shù)不用引號引起edat的形式,則通過計算獲得矩陣名。例如:MLGetMatrix(”a”,”sheet1!B1”;將矩陣a寫入工作表sheet1以單元格B1起始的位置,如果a是一個2行3列的矩陣,則矩陣占據(jù)sheet1的B1到D2的空
11、間。如果在A1中有字符串a,則MLGetMatrix(A1,” sheet1!C1”的作用與MLGetMatrix(”a”,”sheet1!C1”相同。函數(shù)運行結果如圖示。(7 MLGetVar將MatLab矩陣傳送給Excel VBA變量,只能在宏子例程中使用。使用語法:MLGetVar ML_var_name,VBA_var_name參數(shù)ML_var_name是將獲取的矩陣名。如果矩陣名在引號內“ML_var_name”的形式,則直接指定變量名,如果ML_var_name不用引號引起來,則通過計算獲得實際矩陣的名字。參數(shù)VBA_var_name,將其Matlab矩陣數(shù)據(jù)傳給的VBA變量名,
12、不用引號將其引起來。例如:Sub Fetch(MLGetVar "J",DataJEnd Sub表示將Matlab矩陣J的數(shù)據(jù)寫入到VBA變量DataJ中。(8 MLPutMatrix用指定位置的Excel工作表中的數(shù)據(jù),創(chuàng)建或者覆蓋Matlab矩陣。在工作表中使用的語法:MLPutMatrix(var_name,mdat在宏中使用的語法:MLPutString var_name,mdat參數(shù)var_name是將有被創(chuàng)建或者被覆蓋的矩陣名。如果指定的矩陣不存在,則創(chuàng)建該矩陣,如果矩陣已經存在,則覆蓋該矩陣。參數(shù)mdat,指定工作表中的位置。例如:工作表中有A1到C2的數(shù)據(jù),
13、使用函數(shù)MLPutMatrix(”c”,A1:C2,則可以將這些數(shù)據(jù)寫到Matlab矩陣c中,如下圖示。注意:如果修改工作表中的數(shù)據(jù),則Matlab中的矩陣相應發(fā)生變化。如果把數(shù)據(jù)剪切到別的地方,如D1到F2,則函數(shù)MLPutMatrix(”c”,A1:C2會自動更改為MLPutMatrix(”c”, D1:F2(9 MLPutVar使用VBA變量的數(shù)據(jù)創(chuàng)建或者覆蓋Matlab 矩陣。只能在宏子例程中使用。使用語法:MLPutVar ML_var_name,VBA_var_name參數(shù)ML_var_name是將被創(chuàng)建或覆蓋的矩陣名。如果矩陣名在引號內“ML_var_name”的形式,則直接指定
14、變量名,如果ML_var_name不用引號引起來,則通過計算獲得實際矩陣的名字。參數(shù)VBA_var_name,將其數(shù)據(jù)傳給Matlab矩陣的VBA變量名,不用引號將其引起來。如果VBA_var_name變量包含字符串的數(shù)據(jù),則輸出到Matlab為元胞數(shù)組格式。例如:Sub Put(MLPutVar "K",DataKEnd Sub用VBA變量DataK中的數(shù)據(jù)創(chuàng)建或著覆蓋Matlab矩陣K。4. 補充使用Excel Link的注意事項(1Excel工作表通常以“=”作為起始標記,例如=matlabfcn(”sum”,B1:B10;(2大多數(shù)的Excel Link函數(shù)中有兩種
15、定義變量的方式:直接定義,即將變量用雙引號標記則是直接定義變量,例如MLGetMatrix(”bonds”,”sheet1!C1”,其中bonds是直接定義的變量;間接定義,函數(shù)中的不用雙引號的工作表單元地址或行列名稱被看作是間接變量,函數(shù)對其指引的內容進行操作。工作表單元地址可以包含頁表序號,例如MLDeleteMatrix(B1;單元格B1中的內容為a,則相當于執(zhí)行MLDeleteMatrix(”a”;(3建議使用Excel Link的自動計算模式。如果在手動計算模式下使用MLGetMatrix函數(shù),當在單元格中輸入完函數(shù)等式時,需要按F9鍵執(zhí)行,而按下F9鍵將有可能引起其他工作表函數(shù)的重
16、復執(zhí)行,產生不可預料的后果。設置Excel Link自動計算模式方法如下:在Excel“工具”菜單的“選項”,選擇重新計算標簽,圖4.2.13。(4如果需要在工作表中重新計算Excel Link函數(shù),最好按F2鍵和回車鍵單步執(zhí)行每個函數(shù)。(5如果在MLGetMatrix函數(shù)中使用了單元的直接地址,那么當刪除了行或列或者將函數(shù)從其他單元復制到新的單元后,一定要重新修改地址。Excel Link不能自動改變MLGetMatrix 中的地址。(6在打開一個包含ExcelLink函數(shù)的Excel數(shù)據(jù)表的時候,Excel會自動從上到下,從左到右地執(zhí)行這些函數(shù),所有有可能出現(xiàn)如“#COMMAND!”或“#
17、NONEXIST”等Excel錯誤提示,只需關閉所有Matlab圖形窗口,然后按F2鍵并回車重新單步執(zhí)行單元格里地函數(shù)就可以了。5. 在工作表和在宏中使用ExcelLink的例子例1 :(在工作表中使用ExcelLink如下圖所示:使用mlopen(函數(shù)啟動Matlab,使用mlevalstring("load census"載入matlab自帶的數(shù)據(jù)文件census,其中包含矩陣cdate 和pop。使用mlgetmatrix("cdate","E1",將Matlab空間的矩陣cdata寫入到工作表中以E1開始的位置;mlgetma
18、trix("pop","F1"將Matlab空間的矩陣pop寫入到工作表中以F1開始的位置;運行結果如下圖所示:mlputmatrix("x",E1:E21mlputmatrix("y",F1:F21將E1到E21中的數(shù)據(jù)以及F1到F21中的數(shù)據(jù)分別寫入到Matlab空間的矩陣變量x和y中。mlevalstring("z=x-mean(x./std(x"mlevalstring("p2,s2=polyfit(z,y,2"mlevalstring("pop2,de12
19、=polyval(p2,z,s2"根據(jù)所給的數(shù)據(jù)擬合多項式并進行偏差計算。mlevalstring("plot(x,y,'+',x,pop2,'g-',x,pop2+2*del2,'r:',x,pop2-2*del2,'r:'"繪出離散點、擬合曲線圖及偏差曲線圖,結果如下圖示:mlclose() ; 關閉 Matlab。 例 2:在宏中使用 Excel Link 新建一個 Excel 工作表,打開 Visual Basic 編輯器,操作如下圖示: 然后在工程管理器中插入模塊,如下圖: 在模塊代碼區(qū)域寫下如下代碼,如下圖: Function excellinktest( MLOpen mlevalstring "load census" mlgetmatrix "cdate", "E1" mlgetmatrix "pop", "F1" mlputmatrix "x&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 標準作業(yè)規(guī)程管理辦法
- 《質量管理體系及其實施措施范例》
- 何謂工程安全管理辦法
- 《學校心理輔導與心理健康教育復習資料》
- 村莊房屋綠化管理辦法
- 城市供水系統(tǒng)恒壓控制技術優(yōu)化設計研究
- AI時代數(shù)據(jù)價值最大化:從底層架構到大模型應用落地實踐
- 園區(qū)地面車輛管理辦法
- 物業(yè)公司員工績效考核與獎懲制度
- 鋼結構廠房施工組織設計優(yōu)化與鋼結構部分研究
- 論語 學而 教學課件
- 【中考真題】2025年北京市中考數(shù)學真題(含解析)
- 浙江省臺州市2024-2025學年高一下學期6月期末英語試題
- 光伏發(fā)電項目施工方案(安裝)光伏施工方案
- 行為安全觀察與溝通
- 疲勞風險培訓課件
- GB/T 45707-2025皮革鉻鞣鞋面用坯革規(guī)范
- 2025年中小學教師職稱評審考試試卷及答案
- 中職學校教材管理制度
- 海綿城市建設中的BIM技術應用實例
- 員工定崗定員管理制度
評論
0/150
提交評論