欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    MATLAB程式设计入门篇MATLAB编译器.ppt

    • 资源ID:5439229       资源大小:200.99KB        全文页数:24页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    MATLAB程式设计入门篇MATLAB编译器.ppt

    MATLAB 程式設計入門篇 MATLAB 編譯器,張智星http:/www.cs.nthu.edu.tw/jang清大資工系 多媒體檢索實驗室,MATLAB編譯器具有下列功能:產生獨立應用程式(Stand-alone Applications)應用程式能夠具有MATLAB的完整功能可以在沒有安裝 MATLAB的電腦上執行產生C或C+的程式庫:含動態程式庫(Dynamically Linked Libraries,簡稱DLL,用於微軟視窗系統)或共享程式庫(Shared Libraries,用於UNIX/LINUX系統)可用於任何外部應用程式可以在沒有安裝 MATLAB的電腦上執行,14-1 MATLAB編譯器簡介,軟體元件:例如 Java 類別庫(Java Classes)、Excel 增益程式(Excel Add-ins)、COM 及.NET 物件等,這些軟體元件的產生需要使用 MATLAB Builder,14-1 MATLAB編譯器簡介,進入範例說明前,必須先設定電腦上的C編譯器,以便用於MATLAB編譯器,方法如下述在MATLAB命令視窗下輸入mbuild-setup,系統回應如下:,14-1 MATLAB編譯器簡介,Please choose your compiler for building standalone MATLAB applications:Would you like mbuild to locate installed compilers y/n?,輸入y之後,按下 Enter,系統回應如下:這些C編譯器是MATLAB在你的電腦自動偵測出來的結果(所以在不同的電腦會得到不同的結果),14-1 MATLAB編譯器簡介,Select a compiler:1 Lcc C version 2.4.1 in C:PROGRAM FILESMATLABR2006Asyslcc 2 Microsoft Visual C/C+version 8.0 in C:Program FilesMicrosoft Visual Studio 8 3 Microsoft Visual C/C+version 6.0 in C:PROGRA1MIAF9D10 NoneCompiler:,提示,若在上述過程中,出現錯誤訊息,你可以先進行mex-setup,再進行mbuild-setup,可能就可以解決你的問題。,若要MATLAB編譯器將一個MATLAB函式編譯成獨立應用程式,所使用的指令是 mcc,格式如下mcc m userFunc.m先撰寫一個 MATLAB 函式myEigValue.m範例14-1:myEigValue/myEigValue.m,14-2 產生獨立應用程式,function eigValue=myEigValue(mat)%myEigValue:Generate the eigenvalues of the given matrixif(isstr(mat)%若輸入是字串,轉成數值mat=eval(mat);enda,b=eig(mat);eigValue=diag(b);disp(eigValue);%顯示固有值 eigenValue,測試此範例,可以在MATLAB命令視窗輸入:myEigValue(magic(5);即可在螢幕顯示一個 5X5 的魔術方陣所對應的固有值,14-2 產生獨立應用程式,在將此MATLAB函式編譯成為可執行檔的過程中,會產生一些額外檔案,所以你必須將本範例由光碟拷貝至硬碟,才能進行以下的操作。,提示,將 myEigValue.m 轉換成 myEigValue.exe,有一些細節要特別小心:myEigValue.exe 將使用命列列參數的方式來得到輸入方陣,所以 myEigValue.m 必須先使用 eval 將輸入字串轉為方陣。myEigValue.m 必須使用 disp 結果印在螢幕上,以方便 myEigValue.exe 來印出同樣的結果。,14-2 產生獨立應用程式,接著,我們在MATLAB命令視窗下,將工作目錄改變至 myEigValue.m 所在的目錄然後使用下列命令來將 myEigValue.m 編譯成 myEigValue.exe,如下:mcc m myEigValue.m經過半分鐘的時間,就會完成編譯,並產生數個檔案,包含 一個可執行檔 myEigValue.exe若要測試此可執行檔,可以直接在 DOS 命令視窗下輸入:myEigValue.exe magic(5),14-2 產生獨立應用程式,即可在螢幕顯示一個 5X5 的魔術方陣所對應的固有值若要輸入一個特定的方陣,可以使用類雙引號來包住代表方陣的字串,範例如下:myEigValue.exe 1 2 3;3 2 1;1 1 1,14-2 產生獨立應用程式,在第一次執行 myEigValue.exe時,會產生myEigValue_mcr 目錄,以便使用MATLAB的程式庫,所以花的時間會比較久一點。之後再執行 myEigValue.exe,就會直接取用速度就會變快了。,提示,使用 mcc 時,還有幾點要注意:如果你的 MATLAB 函式有呼叫任何你自己定義的函式,要一併放進來編譯。如果只是要產生C程式碼,而不產生可執行檔,可以使用mcc mc myEigValue.m(c 代表只產生 C 語言的包裝程式檔案)。如果要檢視MATLAB編譯器在編譯時所產生的訊息,可以使用mcc mv myEigValue.m(v 代表 verbose)。如果你的函式沒有用到繪圖功能,可以使用mcc m R nojvm myFunc.m,以減小所產生的檔案大小。,14-2 產生獨立應用程式,若要將編譯後所產生的可執行檔案搬到其他電腦上執行,必須將下列檔案放在一起,才能順利執行:myEigValue.exemyEigValue.ctfmyEigValue.ctf 用來記錄各種資訊,讓myEigValue.exe在第一次執行時,可以產生myEigValue_mcr目錄mcr代表MATLAB Compiler Runtime,用來存放myEigValue.exe會取用到的MATLAB程式庫,14-2 產生獨立應用程式,使用MATLAB編譯器可以產生共享程式庫(Shared Libraries),包含所有由使用者定義的函式,以便讓其他獨立應用程式來呼叫。產生一個共享程式庫。首先先定義這兩個 MATLAB 函式範例14-2:sharedLibrary/myMatMultiply.m,14-3 產生共享資料庫,function out=myMatMultiply(mat1,mat2)%myMatEig:Generate the product of two given matricesout=mat1*mat2;,範例14-3:sharedLibrary/myMatInv.m接著將這兩個 MATLAB 函式編譯成共享程式庫,程式庫名稱為 matLib,所使用的指令如下mcc-B csharedlib:matLib myMatInv.m myMatMultiply.m此時會在工作目錄下產生數個檔案,主檔名都是 matLib,這些檔案即是 matLib 程式庫,14-3 產生共享資料庫,function invMat=myMatInv(mat)%myMatInv:Generate the inverse matrix of the given matrixinvMat=inv(mat);,可以使用一般獨立應用程式來呼叫這個程式庫內所定義的函式。程式庫是由兩個 MATLAB 函式編譯所得,因此我們可以得到兩個對應的C函式,分別是 mlfMyMatInv 及 mlfMyMatMultiply,對應關係如下:out=myMatInv(in)mlfMyMatInv(1,14-3 產生共享資料庫,使用 matLib 程式庫來呼叫這兩個C函式的獨立應用程式範例如下範例10-4:myMatLibMain.c,/*=*此範例程式可以呼叫 MATLAB 編譯器所產生的程式庫 matLib*Roger Jang,20080211*=*/#include#include matLib.h/*顯示C資料型態為 mxArray 的雙倍精準陣列*/void matDisplay(const mxArray*in),14-3 產生共享資料庫,int i,j;int rowNum=mxGetM(in);/*橫列個數*/int colNum=mxGetN(in);/*直行個數*/double*data=mxGetPr(in);/*指到輸入陣列中的雙倍精準資料*/*印出資料*/for(i=0;icolNum;i+)for(j=0;jrowNum;j+)printf(%4.2ft,dataj*colNum+i);printf(n);printf(n);/*主要工作函式*/void*mainFunction(int*errorCode),14-3 產生共享資料庫,mxArray*in1,*in2;/*定義送到程式庫函式的輸入矩陣*/mxArray*out=NULL;/*定義程式庫函式的輸出矩陣*/double data=1,3,5,2,4,6,0,8,9;/*測試用的資料*/*確認此應用程式已經被正確地啟始*/if(!mclInitializeApplication(NULL,0)fprintf(stderr,錯誤:無法啟始應用程式!n);*errorCode=-1;return;/*確認程式庫matLib已經被正確地啟始*/if(!matLibInitialize()fprintf(stderr,錯誤:無法啟始程式庫!n);*errorCode=-2;return;,14-3 產生共享資料庫,14-3 產生共享資料庫,/*創造輸入矩陣*/in1=mxCreateDoubleMatrix(3,3,mxREAL);in2=mxCreateDoubleMatrix(3,3,mxREAL);/*將 data 中的資料拷貝至 in1*/memcpy(mxGetPr(in1),data,9*sizeof(double);/*將 data 中的資料拷貝至 in2*/memcpy(mxGetPr(in2),data,9*sizeof(double);/*呼叫由 MATLAB 編譯器產生的程式庫 matLib 中的函式*/*計算矩陣相乘*/mlfMyMatMultiply(1,/*收回配置給 out 的記憶體*/,14-3 產生共享資料庫,/*計算反矩陣*/mlfMyMatInv(1,14-3 產生共享資料庫,/*主程式*/int main()int errorCode=0;mainFunction(,若要編譯此獨立程式,可在 MATLAB 命令視窗輸入如下:mbuild myMatLibMain.c matLib.lib此時即可產生獨立應用程式 myMatLibMain.exe,只要在 DOS 命令視窗下輸入myMatLibMain,即可看到此程式碼執行的結果。,

    注意事项

    本文(MATLAB程式设计入门篇MATLAB编译器.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开