㈠ 如何將m文件編譯成c mex文件
.M文件是保存一段代碼的文件,類似於C語言中的一個函數體;
這也是MATLAB中最常見的文件保存格式之一
.MEX文件是一種「可在matlab環境中調用的C(或fortran)語言衍生程序」。也就是說,MEX文件的源碼文件是由C或Fortran語言編寫的,後經matlab編。
㈡ matlab 2009r,將函數m文件轉換為MEX文件,採用mcc命令,mcc -x myfun,為什麼總是報錯呢
matlab 的路徑要設置成需要轉換文件所在的位置;也應該用 mcc -m ****.m
-a arrayviewfunc.m workspacefunc.m;如果還有問題,將arrayviewfunc.m 和workspacefunc.m也復制存放在需要轉換文件的文件夾內;arrayviewfunc.m 和workspacefunc.m可在matlab 安裝包中搜索到,祝你操作順利;
㈢ 怎樣把c文件編譯為mex 文件
如果有matlab的m源碼,可以通過matlab自帶的編譯器,編譯成C/C++的源代碼
㈣ mex文件的MEX的編寫
mex的編譯結果實際上就是一個帶輸出函數mexFunction 的dll文件,所以寫MEX程序其實就是寫一個DLL程序。編寫MEX程序的編輯器可以使用MATLAB的代碼編輯器,也可使用自己的C++編輯器,如VS2008等。 #includemex.hvoidmexFunction(intnlhs,mxArray*plhs[],intnrhs,constmxArray*prhs[]){}四個參數分別用來輸出和輸入數據: nlhs 是輸出參數個數,plhs 是輸出參數指針;nrhs 是輸入參數個數,prhs 是輸入參數指針。
注意: 對輸出和輸入參數的操作都是通過指針的方式進行的。 對輸入數據進行操作,需要通過MEX函數mxGetPr 得到數據的指針地址。 mxGetM 和 mxGetN 得到矩陣數據的行和列 (返回整數)。對於實矩陣,我們可以定義 double *M; 來對實矩陣數據操作。如: double*M;intm,n;//指針指向第一個參數的數據地址M=mxGetPr(prhs[0]);m=mxGetM(prhs[0]);n=mxGetN(prhs[0]);MATLAB矩陣數據的存儲順序是從上到下,從左到右的,這點和Fortran是一樣的。也就是說對於MATLAB的m x n的矩陣A。 A(1,1) 就是 *M,A(2,1) 就是 *(M+1) ,以此類推,A(i,j) 就是 *(M + n*(j-1) + (i-1)).
注意: MATLAB的指標從1開始,C的指標從0開始。 創建文件 timestwoalt.c,其內容如下: #includemex.hvoidtimestwo_alt(double*y,doublex){*y=2.0*x;}voidmexFunction(intnlhs,mxArray*plhs[],intnrhs,constmxArray*prhs[]){double*M;intm,n;//指針指向第一個參數的數據地址M=mxGetPr(prhs[0]);m=mxGetM(prhs[0]);n=mxGetN(prhs[0]);plhs[0]=mxCreateDoubleMatrix(m,n,mxINT32_CLASS,mxREAL);//生成mxn的實矩陣,分配內存空間double*A;A=mxGetPr(plhs[0]);timestwo_alt(A,*M);//調用並直接賦值到指針指向的輸出變數}
㈤ MATLAB的M文件、MEX文件、MAT文件是什麼
.M文件是保存一段代碼的文件,類似於C語言中的一個函數體; 這也是MATLAB中最常見的文件保存格式之一 .MEX文件是一種「可在matlab環境中調用的C(或fortran)語言衍生程序」。也就是說,MEX文件的源碼文件是由C或Fortran語言編寫的,後經matlab編譯器處理而生成的二進制文件;它可以被matlab解釋器自動裝載並執行的動態鏈接程序,這種文件在windows下是ddl文件。
.mat是matlab的數據存儲的標准格式。也就是你操作產生的數據的一個集合包,可以把一次處理的結果保存,供下一次使用。
你可以調用matlab的子程序庫,用c或fortan調用mat格式的數據。有幾種方法可以打開1.matlab中可以用load命令讀取.mat文件
2.C語言中有API讀取.mat文件,如matOpen, matClose等等
3.用記事本就可以打開.mat文件,.mat文件格式是公開的,你可以自己解析裡面的內容
㈥ matlab mexw32是什麼文件
mexw32是matlab中的M文件經過編譯生成的mex文件,mex文件的後綴名按32位/64位分別為 .mexw32/.mexw64。
mex文件是由C或Fortran語言編寫的源代碼,經matlab編譯器處理而生成的二進制文件。它是可以被matlab解釋器自動裝載並執行的動態鏈接程序,類似windows下的dll文件。
mex文件的編寫
mex的編譯結果實際上就是一個帶輸出函數mexFunction 的dll文件,所以寫mex程序其實就是寫一個DLL程序。編寫mex程序的編輯器可以使用matlab的代碼編輯器,也可使用自己的C++編輯器,如VS2008等。一般格式如下:
#include "mex.h"
void mexFunction ( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] )
{
.......
}
四個參數分別用來輸出和輸入數據:
nlhs 輸出參數個數,plhs 輸出參數指針(nrhs和prhs是輸入參數相關的)。
注意: 對輸出和輸入參數的操作都是通過指針的方式進行的。
mex文件的編譯
將m文件編譯成mex文件,可以提高代碼的運行速度,隱藏源代碼,既能提高程序的執行速度,同時也能保護原作者的勞動成果不被竊取。
mex文件的調用
其調用方式與C語言中函數的調用方式是一樣的,即:
返回值=函數名(參數列表);
㈦ matlab中的多個m文件怎麼轉化成exe文件
+文件。
命令的格式為:
mcc[-option]fun[fun2...][mexfile1...][mlifile...]
此函數的作用是將matlab程序fun.m轉化為c程序fun.c或者c++程序fun.cpp
轉化後的文件默認在當前目錄中。
若M文件多於一個,那麼每個文件對應轉化相應的c和c++文件
若源文件包含c文件,則將它們同新生成的c文件一起編譯。
一些有用的option參數解釋如下:
————————————————————————————————————
c 轉化為c語言文件但是不生成mex文件或者獨立應用程序
d<directory> 指定生成的文件目錄
G/g 進入調試狀態
h 編譯幫助函數,所以的m文件都將編譯到mex文件或者獨立應用程序
L《option》 指定目標語言為option,其中c,cpp,p分別代表c語言,c++,matlab語言
m 指定創建獨立c語言應用程序的宏,作用等於『-t-W main -L C-h-T link:exe libmmdile.mlib』
M"<string>" 向MBLID或者mex教本傳遞string中包含的信息
o<outputfilename> 指定輸出文件名
O<optimization> 指定優化參數
p 指定創建獨立c++語言應用程序的宏 作用等於-t-W main -L Cpp-h-T link:exe libmmdile.mlib』
v 詳細顯示編譯步驟
x 指定創建獨立mex文件的宏,作用等於-t-W main -L C-T link:exe libmmdile.mlib』
S 轉化為simuink的s函數
————————————————————————————————————
————————————————————————————————————
eg
現有m文件main.m mrank.m,主函數main中調用了子函數mrank
main.m
function main
r=mrank(5)
mrank.m
function r=mrank(n)
r=zeros(n,1);
for k=1:n
r(k)=rank(magic(k));
end
在matlab環境下執行主程序可以看到結果
》》main
r=
1
2
3
3
5
現在要把他們轉化為c和cpp程序
在matlab工作窗口中輸入下面命令
》》mcc-mc main mrank
可以得到下面個文件:
main.c
main.h
main-main.c
mrank.c
mrank.h
在matlab中輸入下面命令
mcc -lcpp main mrank
可以得到下面5個文件
main.cpp
main.hpp
main-main.cpp
mrank.cpp
mrank.hpp
有了這些程序以後,就可以在其他c,c++程序中方便調用了
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
創建獨立可執行程序
方法1:編譯m文件為可執行程序
mcc -m main mrank
or
mcc -p main mrank
方法2:將編譯的c c++轉化為可執行程序
mbuild main.c main_main.c mrank.c
or
mbuild main.cpp main_main.cpp mrank.cpp
㈧ matlab中mex-file文件是什麼文件,有什麼用怎樣看其中的代碼謝謝
程序源文件編譯後的文件。相比m文件,mex文件執行速度更快。不能像查看m文件一樣查看mex文件,原因是mex文件是二進制文件。