精通VC與MATLAB聯合程式設計 編譯器的使用

2021-04-16 02:31:32 字數 1853 閱讀 1873

鄧科 在上一章中對matlab 編譯器做了簡要介紹,並介紹了如何將m檔案轉換成vc可呼叫的dll檔案,在這章中介紹如何利用編譯器將m檔案轉換成對應的c/c++檔案,並在vc中呼叫。這章節中的例子是在第四章中介紹過的解線形方程組。

首先要保證編譯器設定正確,編譯器的設定可以參考前面兩章的內容。如果以前已經進行了配置就不需要這一步。

1、在matlab中編寫如下函式:

function [x]=gjfcz(a,b)

%a=[-1.5 1 2; 4 2 3 ; -3 2 8]

%b=[3;5;6]

x=a/b

儲存名為gjfcz.m,該函式的功能為求解線形方程組,可參考第四章的內容。

2、在matlab的命令視窗輸入以下命令:

mcc –m gjfcz.m
該命令用來生成對應的c檔案和可執行程式。在matlab工作目錄下(一般是matlab/work)將會生成如下檔案:gjfcz.exe,gjfcz.c,gjfcz.h,gjfcz_main.c,其中gjfcz.c,gjfcz.h是我們需要的檔案。

3、新建名為jxxfc基於對話方塊的工程,面板上新增乙個按扭。

4、拷貝gjfcz.c,gjfcz.h兩檔案到工程目錄下,並將檔案引入工程(project->add to project->files)。

5、為按扭新增如下響應**:

void cjxxfcdlg::onbutton1() 

; static double bdata=;

double xdata[100];

mxarray *a = null;//賦初值

mxarray *b = null;

mxarray *x = null;

/* 使用自動記憶體管理*/

mlfenternewcontext(0, 0);

//建立矩陣

mlfassign(&a, mlfdoublematrix(3, 3, adata, null));

mlfassign(&b, mlfdoublematrix(3, 1, bdata, null));

initializemodule_gjfcz();

x=mlfgjfcz(a,b);//呼叫gjfcz.c中的函式求解

terminatemodule_gjfcz();

memcpy(xdata,mxgetpr(x),3*sizeof(double));

// mxgetpr(x)用來得到x的位址

cstring r;

r.format("%f/n%f/n%f",xdata[0],xdata[1],xdata[2]);

messagebox(r);

/* 釋放矩陣所佔的記憶體*/

mxdestroyarray(a);

mxdestroyarray(b);

mxdestroyarray(x);

/* 禁用自動記憶體管理*/

mlfrestorepreviouscontext(0, 0);

}

編譯、連線,執行結果如圖1:

圖1本程式在vc6.0+matlab6.5環境下調式通過,在vc和matlab介面程式設計中,使用編譯器將m檔案編譯成c/c++檔案,然後在vc中呼叫該c/c++檔案是最常用的方法。 本例中雖然使用了c/c++函式庫中的函式,但比起完全使用c/c++函式編寫程式要簡單了許多,可見要靈活的使用編譯器,對c/c++函式庫有一定的了解是很必要的,matlab提供有函式庫的幫助文件cmath_ref2b.pdf和cmath_ug2b.pdf,使用的時候可以查閱。再次說明的是,很多朋友已經在使用matlab7.0的版本,7.0的版本在對c/c++接**術上做了很大改動,不是一般的公升級,對以前的版本也不相容。新的版本提供了乙個類似於vc的類庫,用了一下,感覺不是很好。  

LabVIEW與MATLAB聯合程式設計

labview與matlab的聯合程式設計一般可以通過2種方式進行 1.公式節點 formula node 2.matlab指令碼節點 matlab script node 1.公式節點 formula node 位置 函式選板 數學 指令碼與公式 公式節點 在程式框圖上計算數學公式和類似於c語言的...

Matlab與VC混合程式設計

眾所周知,matlab是一套功能非常強大的商業數學軟體,從訊號處理,語音處理,資料採集,數值運算,影象處理,到電子 金融分析等等,幾乎在各個工業領域,他都已經得到了廣泛應用,同時也取得了巨大的成功。但是,由於matlab是用一種指令碼語言,他的解釋是逐行執行的,程式中所有的變數都是用mxarray來...

Matlab與VC混合程式設計

眾所周知,matlab是一套功能非常強大的商業數學軟體,從訊號處理,語音處理,資料採集,數值運算,影象處理,到電子 金融分析等等,幾乎在各個工業領域,他都已經得到了廣泛應用,同時也取得了巨大的成功。但是,由於matlab是用一種指令碼語言,他的解釋是逐行執行的,程式中所有的變數都是用mxarray來...