2008年6月6日 星期五

Metlab DLL 和 TCL 的應用

###### Metlab Code ######
###=== 建立一個 matlab 的檔案,命名為test2
###=== 程式碼如下


function [result] =test3(a,b,c,d)
   result = a+b*c-d;
   save('D:\MATLAB6p5\work');
return

###=== 在 Matlab 主程式中,選擇..
###=== Start --> Matlab --> Matlab COM Builder --> Matlab COM Builder
###=== 建立 New Project 取名為 test1
###=== Component Name 設為 testAAA
###=== 將 Build debug version 的選項打勾
###=== 執行Build產生 DLL 檔案
###=== 將DLL檔COPY到 C:\Windows\System32 裡面
################################


########### tcl 載入 DLL ###############

package require tcom
::tcom::import test1_1_0.dll
set comUtil [::test1::testAAA]
### 這裡的[::test1::testAAA]
### test1是Matlab 的COM Builder檔名
### testAAA是Matlab 的Component Name,也就是 Class Name

###===---  執行 DLL
### a 矩陣內容為
### { 1.0  2.0 }
### { 3.0  4.0 }

set a [list [list [expr double(1)] [expr double(2)]] [list [expr double(3)] [expr double(4)]] ]
### b 矩陣內容為
### { 3.0  2.0 }
### { 4.0  5.0 }

set b [list [list [expr double(3)] [expr double(2)]] [list [expr double(4)] [expr double(5)]] ]
### c 矩陣內容為
### { 1.0  2.0 }
### { 3.0  4.0 }

set c [list [list [expr double(1)] [expr double(2)]] [list [expr double(3)] [expr double(4)]] ]
### d 矩陣內容為
### { 4.0  5.0 }
### { 6.0  7.0 }

set d [list [list [expr double(4)] [expr double(5)]] [list [expr double(6)] [expr double(7)]] ]
set retx $comUtil test2 1 retx $a $b $c $d
### 這裡的 $comUtil test2 ....
### test2 是Matlab的M File Name,也就是存放程式碼的檔名

puts $retx

### 上面的$comUtil test2 1 retx.. "1" 表示傳回一個值 由 retx 變數接
### 傳回 {6.0 11.0} {16.0 25.0}

沒有留言:

張貼留言