❶ 編譯MEX 文件需要滿足哪些條件
編譯和運行mex應該可以用matlab自帶的lcc編譯器吧。
不過好像先要配置一下。
❷ matlab 中mex -setup 編譯器怎麼弄
這個需要你的電腦上安裝有C++6.0才能出來,mex -setup列出的編譯器都是你電腦上的,你圖上的[1] Lcc-win32是matlab自帶的編譯器。
由於你電腦上沒安裝其他的編譯器,當然就檢測不到C++6.0
❸ 請問有大佬知道為什麼MATLAB裡面mex可以找到編譯器但是mbuild不行
MATLAB會列出當前機器上已經安裝的、且與當前MATLAB版本兼容的所有C編譯器,一般而言,MATLAB都會自帶一個LCC編譯器,然而LCC目前僅支持32位的MATLAB,所以你的機器上沒有。
❹ matlab mex 編譯器怎麼編譯文件
通過MEX文件可以在MATLAB中像調用內嵌函數一樣調用現有的使用C語言和Fortran等語言編寫的函數,實現了代碼重用,同時也能解決MATLAB循環效率低的缺點,提高MATLAB環境中數據處理的效率。
MEX文件的後綴名為 .mexw32
MEX文件的編寫和編譯需要兩個基本條件:一是必須按照MATLAB應用程序介面組件和相關工具,二是要有C語言或Fortran語言的編譯器。
需要對MATLAB系統進行設置,使MATLAB系統知道使用系統的哪一個C語言編譯器,以及其參數和路徑。
MEX文件系統設置:
>> mex –setup按照提示進行,最後出現Done…系統配置完畢。
C語言MEX文件的建立
C語言MEX文件的建立
1. MEX文件的結構
a) 計運算元程序
b) 入口子程序,void mexFunction(int nlhs, mxArray *plhs[],int nrhs,const mxArray *prhs[]){ /*用戶特定的代碼….*/ }
2. 創建timestwoalt.c
#include "mex.h"
void timestwo_alt(double *y, double x)
{
*y = 2.0*x;
}
void mexFunction( int nlhs, mxArray *plhs[],
int nrhs, const mxArray *prhs[] )
{
double *y;
doublex;
/* 檢查參數 */
if (nrhs != 1) {
mexErrMsgTxt("One input argument required.");
} else if (nlhs > 1) {
mexErrMsgTxt("Too many output arguments.");
} else if (!mxIsNumeric(prhs[0])) {
mexErrMsgTxt("Argument must be numeric.");
} else if (mxGetNumberOfElements(prhs[0]) != 1 || mxIsComplex(prhs[0])) {
mexErrMsgTxt("Argument must be non-complex scalar.");
}
/* 為輸出參數創建變數 */
plhs[0] = mxCreateDoubleMatrix(1,1,mxREAL);
/*
為參數 x、y賦值,x為值,而y為指針
(由於MATLAB沒有值傳遞,所以用指針才能得到修改後的y值,
不然修改的是y的一個副本,為臨時變數,在函數返回時,y值沒有變化,
不能得到希望的結果)
*/
x = mxGetScalar(prhs[0]);
y = mxGetPr(plhs[0]);
/* 調用timestwo_alt 子函數 */
timestwo_alt(y,x);
}
3. 編譯鏈接C語言的MEX文件源程序,在MATLAB的控制窗口中輸入:mex timestwoalt.c生成一個名為timestwoalt.mexw32的MEX文件
4. 運行:在MATLAB的控制窗口中輸入
x=2;
y=timestwoalt(x)
輸出:y=4
MEX文件實現了一種C語言與MATLAB的介面,其實際的計算功能仍在C語言形式的計運算元程序中完成,而入口子程序的功能是檢查參數以匹配C語言的參數規范(how to?)。
當有C語言編寫的大型程序時,不必用MATLAB語言重新編寫,只要將此C語言程序作為一個計運算元程序,然後編寫一個入口子程序,完成參數的匹配,然後編譯成MEX文件即可。
MEX文件的另外一個功能是可以將MATLAB編程中的瓶頸問題,如多重循環等,將此類費時的指令用C語言實現,然後作必要的入口子程序,編譯成MEX文件,可以有效地提高MATLAB的效率。
S-函數創建器限制了C語言S-函數的功能:只能有一個輸入信號和一個輸出信號,而且只能處理double類型的數據!所以,可用性不大。
❺ MATLAB mex 找不到編譯器怎麼辦
①選y後,MATLAB會列出當前機器上已經安裝的、且與當前MATLAB版本兼容的所有C編譯器,一般而言,MATLAB都會自帶一個LCC編譯器,然而LCC目前僅支持32位的MATLAB,所以你的機器上沒有。
②選n後,MATLAB會列出所有與當前MATLAB版本兼容的C編譯器類型(不管你是否已經安裝,用於幫助用戶選擇合適的C編譯器),你機器上已經安裝的2個編譯器,VC6.0:MATLAB從R2010b之後不再支持,所以選項里看不到;而SDK7.1選n時可以看到([11]),但選y時沒有跳出,是因為MATLAB沒有正確定位SDK。
③解決方法:
方法一:如果以預設選項安裝了SDK7.1(不改變默認安裝路徑),可以嘗試輸入n後,選擇 [14] (注意:是14,不是11!),強制定位該編譯器(網上有人用這種方法成功了:http://mlinking.blog.163.com/blog/static/185801922201331464626365/)
方法二:重新安裝MATLAB,安裝時選擇32位進行安裝,則自帶LCC編譯器。
方法三:選擇適配的VS版本,下載安裝後,重新配置MEX命令。
❻ MATLAB 如何配置編譯器
在MATLAB的Command Window下輸入命令 mbuild –setup,並根據MATLAB的提示選擇合適的編譯器,使用Microsoft Visual C++6.0,進行對C++連接環境的設置。
過程如下:
>> mbuild -setup
按照提示選擇操作,選擇編譯器進行安裝
然後,在MATLAB的Command Window下輸入命令 mex –setup,進行對編譯環境的設置。過程如下:
>> mex -setup
按照提示選擇操作,選擇你所需要的編譯器就可以了。
❼ 關於matlab 中的mex用法和編譯器的問題。
沒有問題的。 但不能想像一點不修改。 Mex就是matlab編譯後產生的執行文件。
❽ 一直沒有用過什麼mex,這個是Cpp文件,怎麼用matlab打開
mex是已經編譯好的C++或Fortran代碼,你可以直接在MATLAB中調用其中的函數,但無法用MATLAB打開查看源代碼,除非原作者提供了C++源碼,需要你在自己的機器上用編譯器自己編譯。
❾ 如何設置matlab 編譯器 mex
mex -setup
Please choose your compiler for building external interface (MEX) files:
Would you like mex to locate installed compilers [y]/n? y
Select a compiler:
[1] Lcc-win32 C 2.4.1 in D:\Programs\MATLAB\R2010a\sys\lcc
[2] Microsoft Visual C++ 2005 SP1 in D:\Program Files\Microsoft Visual Studio 8
[3] Microsoft Visual C++ 6.0 in C:\Program Files\Microsoft Visual Studio
[0] None
Compiler: 2
Please verify your choices:
Compiler: Microsoft Visual C++ 2005 SP1
Location: D:\Program Files\Microsoft Visual Studio 8
Are these correct [y]/n? y
Trying to update options file: C:\Documents and Settings\Administrator\Application Data\MathWorks\MATLAB\R2010a\mexopts.bat
From template: D:\Programs\MATLAB\R2010a\bin\win32\mexopts\msvc80opts.bat
Done . . .
**************************************************************************
Warning: The MATLAB C and Fortran API has changed to support MATLAB
variables with more than 2^32-1 elements. In the near future
you will be required to update your code to utilize the new
API. You can find more information about this at:
http://www.mathworks.com/support/solutions/en/data/1-5C27B9/?solution=1-5C27B9
Building with the -largeArrayDims option enables the new API.
**************************************************************************
❿ 如何在matlab環境下完成mex文件編譯器的配置,並選擇合適的fortran語言編譯器
輸入mex -setup命令,按照提示操作就行了