請問MATLAB可以加入C code嗎??? |
尚未結案
|
azon
一般會員 ![]() ![]() 發表:1 回覆:1 積分:0 註冊:2005-03-23 發送簡訊給我 |
|
㊣
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:261 回覆:2302 積分:1667 註冊:2005-01-04 發送簡訊給我 |
|
azon
一般會員 ![]() ![]() 發表:1 回覆:1 積分:0 註冊:2005-03-23 發送簡訊給我 |
|
kuoyung
一般會員 ![]() ![]() 發表:3 回覆:5 積分:1 註冊:2004-11-09 發送簡訊給我 |
您好,我也是Matlab的初學者,最近剛好也有遇到用C去Call Matlab指令
建議您可以試著用mcc的指令,裡頭有很多不同的功能,若想要清楚的知道每個指令可用hellp mcc ,Matlab便會顯示出所有與mcc裡的使用參數。
以下是小弟我在網路上看到的文章,大家可以一起來討論
MATLAB5.3的提供了C/C 數學庫,其中的C 數學庫功能很強,使用它可以用類似MATLAB的語法編寫C 程序,十分方便。雖然速度上仍然比手工C/C 程序慢,但是由此換來的高效的開發效率和可靠性往往是值得的。另外mcc命令可以將M文件轉化為C或CPP文件,編譯后可以脫離MATLAB運行,它們也是使用的C/C 數學庫。 不過,MATLAB的數學庫在開發時似乎傾向于編譯獨立的可執行程序,把VC、BC只是作為一個編譯和連接的工具,而沒有過多地考慮在VC、BC的集成環境下進行開發。這給我們帶來了不便。 很多網友問起如何將MCC生成的C 程序嵌入到VC。最近對這個問題做了一下嘗試,在這里做一個總結,請大家回去試試。這里只介紹VC的情況,用BC的網友就自己研究研究吧,估計是類似的。 1、設置項目編譯選項 首先建立一個新的項目,或者打開一個已有的項目,然后選擇菜單: Project->Settings->C/C Category:Preprocessor Preprocessor definitions:
添加: MSVC,IBMPC,MSWIND Category: Precompiled Headers 選擇: Automatic use of precompiled headers
Through header: stdafx.h 2、調設置項目連接選項 首先要從下面幾個函數定義文件(*.def)生成相應的導入庫文件(*.lib) libmmfile.def
libmcc.def
libmatlb.def
libmx.def
libmat.def 它們位于目錄c:\matlab\extern\include
用下面命令導出庫文件: lib /def:libmmfile.def /out:libmmfile.lib /machine:ix86
lib /def:libmcc.def /out:libmcc.lib /machine:ix86
lib /def:libmatlb.def /out:libmatlb.lib /machine:ix86
lib /def:libmx.def /out:libmx.lib /machine:ix86
lib /def:libmat.def /out:libmat.lib /machine:ix86 將它們放入你的項目連接選項 Project->Settings->Link Category:Input Object/library modules:
添加:libmatpm.lib libmmfile.lib libmcc.lib libmatlb.lib libmx.lib libmat.lib 注1: 中間是空格,不要加逗號
注2: libmatpm.lib是C MathLib的庫,如果是只用C,就不用連接它了。 Ignore libraries:
添加: msvcrt.lib
注: 僅在Debug版本中需要。原因不明:P 以上的這些lib文件,我已經做好了,打了個包放在這里下載:matlablibs.zip (64K) 3、設置編譯環境 Tools->Options->Directories Include fiels添加: c:\matlab\extern\include
c:\matlab\extern\include\cpp Library fiels添加: c:\matlab\extern\lib
c:\matlab\extern\include 注:下面這個目錄是那些lib所在的地方。
如果都挪到上面的目錄,這個自然就不要了。 4、編寫程序 用MCC命令生成的CPP文件和自己手工編寫的CPP文件, 其項目設置是完全相同的,
程序的語法原則上也是一樣的. 只是MCC生成的CPP文件有大量"沒用"的代碼. (1)添加自己編寫的程序模塊 用下面文件頭:
#i nclude "stdafx.h"
#i nclude "matlab.hpp"
然后, 按照C MathLib文檔要求的格式書寫程序. (2)嵌入mcc生成的文件 在MATLAB下用下面格式的命令生成cpp文件 mcc -t -L Cpp test 得到test.hpp, test.cpp
將test.cpp加入項目, 不做任何改動. 最后,摁F7編譯就可以了。 5、實例 上面羅羅嗦嗦一大堆,肯定讓你打哈欠了:P 沒關系,其實還是挺簡單的,這里有個VC的project,用C 數學庫解決了一個幼兒園的算術題,下載回去看看吧,馬上就明白了。 MccDemo.zip (68K) 這里先說明一下: MATLAB程序test.m: function [sum, prod]=test(x,y) sum = x y;
prod = x*y; 用來計算兩個數的和與積。注意這是兩個返回變量的情況。
另外,x,y當然可以是數組。 用mcc命令生成了test.hpp和test.cpp。 文件demo.cpp: #i nclude "stdafx.h"
#i nclude "matlab.hpp"
#i nclude "test.hpp" void mccDemo()
{ CString str;
mwArray x, y, sum, prod;
double dx,dy,dsum,dprod; x = 5.0;
y = 10.0;
sum = test(&prod, x, y); dx=x(1,1);
dy=y(1,1);
dsum=sum(1,1);
dprod=prod(1,1);
str.Format("%f %f=%f\n%f*%f=%f", dx,dy,dsum,dx,dy,dprod);
AfxMessageBox(str);
} 由于采用了C 數學庫,語法很簡單。注意數組的賦值、其中數據的存取,這些都要仔細地看手冊。 最后是跳出一個消息框,顯示計算結果。 改程序啟動之后,選擇菜單mcc->demo即可
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |