從MATLAB代碼生成獨(dú)立c語言代碼_第1頁
從MATLAB代碼生成獨(dú)立c語言代碼_第2頁
從MATLAB代碼生成獨(dú)立c語言代碼_第3頁
從MATLAB代碼生成獨(dú)立c語言代碼_第4頁
從MATLAB代碼生成獨(dú)立c語言代碼_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、Matlab用helpIsqcurvefitMATLABCoder可以從MATLAB代碼生成獨(dú)立的、可讀性強(qiáng)、可移植的C/C+代碼。使用MATLABCoder產(chǎn)生代碼的3個(gè)步驟:準(zhǔn)備用于產(chǎn)生代碼的MATLAB算法;檢查MATLAB代碼的兼容性(有些matlab代碼語句并不能生成c/c+代碼);產(chǎn)生最終使用的源代碼或MEX。利用MATLABCoder生成c+代碼,并在vs2008中驗(yàn)證:一個(gè)簡單的例子,兩數(shù)相乘:1、安裝matlab2011a或者更新版本;2、簡單生成一個(gè)foo.m文件;functionc=foo(a,b)%#codegen%Thisfunctionmulipliesaandbc

2、=a*b其中,#codegen可以防止出現(xiàn)警告錯(cuò)誤3、在命令窗口,輸入mex-setpu,選中一個(gè)存在的編譯器;4、在命令窗口輸入coder(圖形界面),回車,彈出MATLABCoderProject對話框;5、在New選項(xiàng)卡Name中輸入一個(gè)工程名foo.prj;點(diǎn)擊Ok,彈出MATLABCoderMEXFunction對話框;6、在Overview選項(xiàng)卡中,點(diǎn)擊Addfiles,彈出對話框,選中foo.m打開;7、單擊變量a,選擇DefinebyExample,彈出MATLABCoderDefinebyExample對話框,在MATLABExpressionODO5,點(diǎn)擊OK;同樣變量b也

3、進(jìn)行相應(yīng)操作,輸入6;8、選中Build選項(xiàng)卡,OutputtypeODDc/c+StaticLibrary;DOGeneratecodeonly;9、點(diǎn)擊Moresettings,GeneralDLanguageDDC+;InterfaceDDOOOOODD;Close;10、點(diǎn)擊Build,進(jìn)行編譯;點(diǎn)擊Viewreport,彈出CodeGenerationReport對話框,此時(shí),變量a、b、c會顯示相應(yīng)的變量信息;11、利用vs2008建立一個(gè)控制臺應(yīng)用程序,將生成的相關(guān)文件foo.h、foo.cpp、rtwtypes.h、foo_types.h拷到相關(guān)目錄下并添加到應(yīng)用程序中;12、

4、在foo.cpp文件中添加#include“stdafx.h”;13、test.cpp文件中代碼為:#includestdafx.h#includefoo.h#includeusingnamespacestd;int_tmain(intargc,_TCHAR*argv)cinab;c=foo(a,b);coutc=cendl;return0;一個(gè)復(fù)雜的例子,求一個(gè)數(shù)的n次方根:1、兩個(gè).m文件:nrt.m:functionnth_rt,iterations,hstry=nrt(varargin)%#codegen%ThisfunctionwilluseaNewtonSearchTechniqu

5、etofind%thenthrootofanumber,a,tothetolerance,tol.%Thesquareroot%nrt(10,2),ornrt(10,2,1e-9)%Thenroot%nrt(10,n),ornrt(10,n,1e-9)a=varargin1;n=varargin2;ifnargin=3tol=1e-9;elsetol=varargin3;endifa0nth_rt=0;iterations=0;hstry=0;elsenth_rt,hstry=newtonSearchAlgorithm(a,n,tol);iterations=length(find(hstry

6、=0);%iterations=sum(hstry=0);endnewtonSearchAlgorithm.m:functionx,h=newtonSearchAlgorithm(b,n,tol)%#codegen%Given,a,thisfunctionfindsthenthrootofa%numberbyfindingwhere:xAn-a=0coder.inline(never);%使其生成一個(gè)單獨(dú)的c+文件notDone=1;aNew=0;%RefinedGuessInitializationa=1;%InitialGuesscnt=0;h=zeros(50,1);h(1)=a;whi

7、lenotDonecnt=cnt+1;curVal,slope=f_and_df(a,b,n);%squareyint=curVal-slope*a;aNew=-yint/slope;%Thenewguessh(cnt)=aNew;if(abs(aNew-a)49%after50iterations,stopnotDone=0;aNew=0;elsea=aNew;endendx=aNew;functionf,df=f_and_df(a,b,n)%Ourfunctionisf=aAn-banditsderivativeisn*aA(n-1).f=aAn-b;df=n*aA(n-1);2、在命令窗

8、口輸入coder(圖形界面),回車,彈出MATLABCoderProject對話框;3、在New選項(xiàng)卡Name中輸入一個(gè)工程名nrt.prj;點(diǎn)擊Ok,彈出MATLABCoderMEXFunction對話框;4、在Overview選項(xiàng)卡中,點(diǎn)擊Addfiles,彈出對話框,選中nrt.m打開;5、添加三個(gè)輸入,分別為10、2、1e-9;兩個(gè)輸入也可以;6、選中Build選項(xiàng)卡,Outputtype中選擇c/c+StaticLibrary;選中Generatecodeonly;7、點(diǎn)擊Moresettings,General-Language選擇C+;Interface選項(xiàng)中去掉所有選項(xiàng);Clo

9、se;8、點(diǎn)擊Build,進(jìn)行編譯;點(diǎn)擊Viewreport,彈出CodeGenerationReport對話框;9、利用vs2008建立一個(gè)控制臺應(yīng)用程序,將生成的相關(guān)文件nrt.cpp、nrt.h、newtonSearchAlgorithm.cpp、newtonSearchAlgorithm.h、nrt_types.h、rtwtypes.h拷至“相關(guān)目錄下并添加到應(yīng)用程序中;10、分別在nrt.cpp、newtonSearchAlgorithm.cpp文件中添加;框11、test.cpp文件中代碼為:#includestdafx.h#includenrt.h#includeusingnamespacestd;int_tmain(intargc,_TCHAR*argv)2=33cinvarargin_1varargin_2;doublenth_rt=0,iterations=0;doublehstry_data50=0;inthstry_sizes1=0;nrt(varargin_1,varargin_2,varargin_3,&nth_rt,&iterations,hstry_data

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論