![Matlab與C#混合編程_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/13/a59e0f01-6b80-45d7-b436-70dbf519ac95/a59e0f01-6b80-45d7-b436-70dbf519ac951.gif)
![Matlab與C#混合編程_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/13/a59e0f01-6b80-45d7-b436-70dbf519ac95/a59e0f01-6b80-45d7-b436-70dbf519ac952.gif)
![Matlab與C#混合編程_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/13/a59e0f01-6b80-45d7-b436-70dbf519ac95/a59e0f01-6b80-45d7-b436-70dbf519ac953.gif)
![Matlab與C#混合編程_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/13/a59e0f01-6b80-45d7-b436-70dbf519ac95/a59e0f01-6b80-45d7-b436-70dbf519ac954.gif)
![Matlab與C#混合編程_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/13/a59e0f01-6b80-45d7-b436-70dbf519ac95/a59e0f01-6b80-45d7-b436-70dbf519ac955.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Matlab與C#混合編程的實現(xiàn)關(guān)于matlab與c#之間一些數(shù)據(jù)類型的轉(zhuǎn)換的方法,我也曾經(jīng)寫過。總結(jié)一下,最主要的是要完成下面幾個步驟:1、 同時安裝.netframwork與MC(Rmatlabcompileruntime)。這個在裝完與matlab以后,前面2個組件也就安裝好了。2、 利用matlab自帶的.nettool工具將.m文件轉(zhuǎn)換成.net組件-.dll文件為接口,它實際上不含任何實現(xiàn),都是調(diào)用另一個.ctf文件來完成具體的功能。3、在c#中,必須引入mwarray.dll才能擁有在.net中進(jìn)行矩陣運算所需要的一切。雖然matlabhelp中只是說推薦,但一般的應(yīng)用中,只是進(jìn)
2、行一部分函數(shù)的調(diào)用,而不是去取得整個運行結(jié)果。這個.dll是必須引入的。有時mclmcrrt74.dll這個文件也需要引入。根據(jù)具體的要求,需要引入的文件也有所差別。4、生成一個實例,并對.net組件所輸出的結(jié)果進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換,以符合.net編程環(huán)境中對數(shù)據(jù)類型的要求,這個在以前我已經(jīng)講過,這里就不再多說了。關(guān)鍵是掌握如何把一個矩陣(在matlab中,一個m*n的矩陣對應(yīng).net中的一個1*(m*n)的數(shù)組)轉(zhuǎn)換成數(shù)據(jù)類型一致的數(shù)組。目前所有的matlab數(shù)據(jù)類型(無論什么類型,都可以把它看成一個矩陣,這樣就可以利用數(shù)組的思想來思考)都可以進(jìn)行轉(zhuǎn)化,具體的可能需要經(jīng)過實驗才能符合各自的要求
3、。雖然matab對.net的支持不如它對C+支持的功能強(qiáng)大,但也已經(jīng)滿足了我們實際應(yīng)用的需求。如果我們可以把大部分的運算都放在matlab里面完成,數(shù)據(jù)轉(zhuǎn)換的數(shù)量又少,那么整個系統(tǒng)的運行速度與效率還是挺高的。c#與matlab混合編程圖解usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Runtime.InteropServices;namespaceConsoleApplication1classProgramstaticvoidMain(stringargs)Programp=newProgra
4、m();p.MatlabTest();Console.WriteLine(按任意鍵退出.);Console.ReadKey();/測試C#matlab調(diào)用/privatevoidMatlabTest()Console.WriteLine(正在載入matlabfor.NET庫);DotNetTest.DotNetTestclassdt=newDotNetTest.DotNetTestclass();Console.WriteLine(完成);Console.WriteLine();/多項式intdemention=3;doubledd=newdoubledemention;dd0=1;dd1=4
5、;dd2=6;/MathWorks.MATLAB.NET.Arrays.MWArrayd=/MathWorks.MATLAB.NET.Arrays.MWNumericArray.MakeSparse(/1,demention,MathWorks.MATLAB.NET.Arrays.MWArrayComplexity.Real,demention);MathWorks.MATLAB.NET.Arrays.MWNumericArrayd=(MathWorks.MATLAB.NET.Arrays.MWNumericArray)dd;Console.WriteLine(開始計算多項式:0,d.ToSt
6、ring();/存儲計算結(jié)果MathWorks.MATLAB.NET.Arrays.MWArrayh;/調(diào)用matlab函數(shù)計算h=dt.myroots(d);/取得實部Arrayreal=(MathWorks.MATLAB.NET.Arrays.MWNumericArray)h).ToArray(MathWorks.MATLAB.NET.Arrays.MWArrayComponent.Real);stringrealpart=實部列表:;foreach(doubleiinreal)realpart+=i+t;/取得虛部Arrayimaginary=(MathWorks.MATLAB.NET.
7、Arrays.MWNumericArray)h).ToArray(MathWorks.MATLAB.NET.Arrays.MWArrayComponent.Imaginary);stringimaginarypart=虛部列表:;foreach(doubleiinimaginary)imaginarypart+=i+t;Console.WriteLine(realpart);Console.WriteLine(imaginarypart);/打印結(jié)果Console.WriteLine(計算結(jié)果:);Console.WriteLine(h.ToString();X?!翱芍鶦wteSBireeto
8、rx:ShortcutsLK:vt:A44ThatzJwAl. F.l.t .bwrert Diicct9ryDoOBTh J myadd m myfz 9ro.m mynlot niMytod mUffllell 3t|.cp,C rrdProfilerni:S :WI Bolder)?lot XI;fiz Svriss ToalsHQprjJLAH CXitr-il 但 sb JJYo-duet P 中 (Y戲 IMIRf fiuiia.r EXIUTLABJAFutld- MEO Xev to RATIKK7 、,ch tKi ? Vi da* xereid 8t4 St=ldrnran
9、a4 Vir4ni)nbtnldUsa”:刖HPoptionl.optinnWlsoufccf)1c1.JOurcrfilcWlobject-fillI.objecrfileJC(IdbTfiryfilo1.libraiicportfil-1.ojrpoHfilelCUxethe-twlpoptiontoraorvixfgKiMoxcoxigulttheJlzllOsvxzGgg.D:;rzn_ABKR20J8AB:KkKI.PL:Error:Xcnar.es?iv-n.IUTLABCrj*HerNxrujRAJLABGe*t6*otSMiolooprta(Eh.*etLi於23Systs:。
10、9KelpPr*dx:tFigeOVeb)=Tibuildatr2Eg=nbuil(Uilp”小火“*Siriulink缺O(jiān)hdmiiluhZk”.J:uib-etoc.g.Se3UCC6W21.11y、gSkc*1cut厚Ddn:pIcols2Mb希F,“3kgMFwd立Ls.QlUlp/DroiIrsi-c但0,s8TfteJCczRES=TK/frreicRATCABSTUIqIditlolsJr6ject0*hntrillelQeslrtrp阻乂“#】p,一口M3?OrdBihcrx:Id:,WIABShortcutLK:vt:A44YhitsCwrrertDirectory“口,由|
11、才.AllPil.%;pyr,DoiNdTRstFolder1,myaddmfAfiletjmyfZ9rO.nib-lite二m制xmfilemyrocnmfAfiteMytotlmhaliterJrrilei:!叫PSJFi11_12JCnaUM“to”口dX甲&-00-A3下午1:58-TCOTtOCleupdotnet-toolsetup.nrttool-setip;.nbuxld-t3thiildCO-3CO-3吃I下午2:16一,下午2:17-X下午3:T3alidII辿TwlD/lrg,kJGrEIUMilOer就Lyat皿|d.Xli&juVXTLawcTCc,gdOea-rjc
12、CCrtCnjcrrnlHZ3Cgcel*TQ二1*6Nt,豆汁MWISCLlaK韻|ijfcrc.|12WB,H42M13西/金l:?一.TUH/B0ggc)tilet4i-oe,Jr。)大,0,Mc口7K年也,4Jfelp二)、飄CfCwvdBmctr:d:VlwoIWlABShortcuts L K:v to A44 * Yhit z 5wT S32,處J冷 二妗.J型方機(jī)cc3Ei.K 韻 I ff fpreae I IfBHp|,MI3內(nèi)x;ATLAHVK0tileRdi,k瘋,2r0j*ctO*hucItrailelRzki睜/Ip-i加CiJCwrdBireCorx:|d:Vl,
13、Brm、mTlAB_fhorCTJlsLK:vt:A44Yhits5wCwrrrrtTlirrcliyC,fl0SUXDdNriTestFolderfjE尸ddefAlile匕myfZM.mM他二*nyplotmfAfilemyrodsmfAfiteMytodmIVMte司JrMle:1prjPPJFULPila1:-Ooiizfz4ro.nspdw士口R工4;3”D:liaMATLAB|nr,*y.function r = nrroot5(c) r = roots(c) ;dI2jC-aridHiktorv口?X日4-G%3下午1:58一“COTtOClHUPdotnettoolsetup.
14、n&TTool-setup;.nboxld-at3nbuild-OCHA3下午2”6,K-CO-J下午2:17-X(h1嶼的:下午3:-MMild53,15ICL8Mh,八”.SCgol.韻|葉fcrzc|*6,.ATLASEileR機(jī)工。疝3gr/jez。個“l(fā)r411elRzki姆RiMxJfclp1c3前約Q.ICwreart-or:Id:5ar“MWTtAB”.|*1Sh&rtCTitsCK:vtcA44到Y(jié)hits5w文杵喂胃認(rèn)田小邁項Her)的JKJ8A)工R口也社EC卻就)4同,二dJ,3.MEVixedFlattort5-w,.:naTs)JIMi頁Frogr.XVatVorl
15、c.間AyeHHT,rrir.nd=期,Morks.辦TUI1STAxfm八口,:.3d;-1”二c二no奸外,更多項SC/(.二:。fry。):-fJ存錯計真是聚/“13nnz,回用gUN麗*i-兌b=4tpro1-d):“,神MSBi.raid-(嗝幺th、3ksB=(IIIIkVatriagi,pn7yp7l;Wferttch(dcbl,inoc)X,1二一二Q二安.Coudeg口“XiorU小個F1CsolaJlplicti4al:由Imhrprt)eh-iq引用ODo,Ne,7”-OHLAp打q蛙里n、Mr,(,計口傷7-n-riteL:neTcStr.g耳科ATIAB口於*Hg)“
16、IwrrNObertcrj|d:V1,qo、WIAShortcutsAK:vt:A44*Yhitz5w文杵口咳IMDM.4“退項Her8)的5JfJSA)工R口5社EC卻就)VixedFlatfors,-2f二3艙門,%?一(,電或)芻.Frcrascr|加力;cuiyro*ts(8):report:i、iricinarypirt匕,*tt.-rtteL:nrQ-ralpar“6將M8?X:.rtJ-(IBthYukk*riagr,實卻打ft。,ch(drebl。3inreal打q姐里nMrs(,(*計tJ用T-n;-riteL:neftiTcStr9部嗖解-i*.iBiaary=(IIIIV
17、trag;,pn7yprl=Wffrch(dewblf)trie工.P力安CorroleApjJi-ret3onl*但個F1J!C4solaJlplicti4nli0hp“t)b:-iq引用OHMUWJorWetTeMOSri16JSjnt*nDtK:/二。太、一YhHcr:二一-;DPeuDPE二由,hriD“OLAPT一cscyLosr弓1?2。尸幺二次3二ttq福湃二早】:dmsqmcok;小&莖門券電QLr,IEnnArr丑。I&51爨swb=4e-*yrwid):LI_7之WTIVJC3y3TArryr:IwqwicAmdd匕MorksMTLAI1STArrrnVYlkucAJTWz
18、d:FkufrIq0獷.1,%融跖諭*出5:.r:cI(?,7Qf一*frf,;hs?rdbl1,:6L宿HmWpppooos:3yary”(3JLN.*t;G3J,?acypR-”.fqQ:hcdrb;2-:6s-snarypGi才=/.?二ern,k.Lp色-.?:;rMG,&IcriQI:已ywsservica3dcl:em?cn*?一dC,nv4:$LQUUS.二且二Ef*roQf,2clwnr&-2QrKa29B0一pucpooooooooooQQQppOQf2京OOOOOOOBPfi059T2P3C-l&Qh一o6qo5ao旗:Nqs*?.*r二T*12=-?,rTV?,電3、1,
19、1|&、*|c*r0TAP71iiuQ2.C?今一-nQCM。1QAp=8U。一-匕一便7,ptl;,b5一u30:azopweAe*rtsn-5-L號-3?(.usdF-:(&ww52dElr:-in,自,)乂/孱+,力 i , IhM Vix4 Fldte0rt?J) pP w+jDxal JStiS 1 Fregr. cs XjJ 卜、FUtlUTustU-a(H *sairiry7”.:g 7&l4XIm . - #ri 4Lf丁正.在較Z、.41ob for KPt左)DeiVetTeal *alTeacl b* it =h”0* DatJleiTLictinl-,”“-1S4i文W
20、uiRWqpE(D公一包出情購anIX)生成口調(diào)試宓跖少IR社區(qū)Wy)rrLJlVkFU SEQ Seen. D 69-J Xrd.q Fr w * CMjl DllXt*貶mtdftOvtitieu;3.M1C:dd/、dottllC4riin.ddQl=1;&h】=%dm】=6:/NwihYerkiMATUBJOT!Air夕4/HrirArryMd-Sy-,(Ldfcgioo,HthYorksMATLABXET3fAmCnpl。,tyB”工:n*ntjcn)Zh,wbFAllABMz/R4*席八K/”EV*7(AB研WybVYM,、,M4:二wUnxJ水開燈廠理當(dāng),;0H,d.7Strix
21、usO):VaikRorinPaILaB.U?T.ArrwvR/brftilWJ-Ni國獗i一片b=4tvyro*t5(d):“樨實部*r“r41=(喝32、3g1HLAE3T7Arrays.*1xaix:*)h).7;ArriHut?.Ycks.YAT1KBICTArrirta*2KWJM1r;faraarh(dliliinreal)reedfrtiirtaonery=i*rt:“專耳曖酰i.,eqesy(iNwthYurkKATLaBMTI2r,s恒(,0i)T1八ztegsaanTypart5rsi去:”.fore&ch(drbl,1tn“asoary)行63.a“匚,|3t4雙管,I(
22、M小d、命二,:7Igftr2ch.in.|,ll.b”一CX1JQ,一Ias16TI0innXr - ii j巾攙巨r(nóng)c.m rr myphl e 憐nvtndj! m電Jr/HRl*|通*口心曲X,%III*久。噎呢IwdllelRhE胃肌幣、一Na心1fmTckjt-(SBTCflT5t4Titr_jnrEzED.ni$自tn!)m?r領(lǐng)匕得口口叱GTfklt:刀fitfUf*LiiVtfldbdu8ss.IC#與Matlab混合編程的幾種方式1 .通過從Matlab的*m文件中生成C語言版本的DLL具體過程:1)在Matlab中寫好一個m文件(比如一個簡單的加法函數(shù)myplus.m);
23、2)使用Matlab的mbuild-setup選擇編譯器,我機(jī)器上的編譯器有兩個LCC和VC2008(&意如果使用VS.net做應(yīng)用的話,建議編譯器選VC2008否則C鼾會告訴你DLL找不至IEntryPoint)3)在命令行中使用mcc-Bcsharedlib:mypluslibmyplus.m(如果是多個M文件,接著往后寫),等待幾十秒之后會生成若干文件(*.c,*h,*dll等),其中.h文件中有導(dǎo)出的函數(shù)原型。4)建立C#01,并將前面的dll拷貝到合適路徑,使用DllImport(mypluslib.dll,CallingConvention=CallingConvention.Cd
24、ecl)將.h文件中的函數(shù)使用C#勺語法聲明。一般來說,這些函數(shù)中會有Initialize,*Terminate和M文件中定義的函數(shù)(*代表lib名稱)。5)使用CsharpMatlabCompilerVer4.cs將C#H勺數(shù)據(jù)類型和Matlab中的矩陣等類型進(jìn)行變換。該文件定義了MatlabCSharp類,主要是導(dǎo)入了libmx.dll中的一些函數(shù),并封裝了一些實用的函數(shù)如double2mxArray_scalarReal等。2 .C#調(diào)用Matlab工作區(qū)計算并返回結(jié)果主要使用engOpen,engClose,engPutVariable,engEvalString,engGetVari
25、able函數(shù)進(jìn)行操作。大致過程如下:MatlabCSharp.engPutVariable(ep,ml_a,mx_a);MatlabCSharp.engPutVariable(ep,ml_b,mx_b);MatlabCSharp.engEvalString(ep,ml_c=ml_a+ml_b;);mx_c=MatlabCSharp.engGetVariable(ep,ml_c);3 .使用MatlabDeployTool生成COMA件注:老版本的叫ComTool現(xiàn)在叫做DeployTool。在CommandWindoWt面直接輸入deploytool即可1)選擇NewDeploymentPro
26、ject-MATLABBuilderNE-GenericCOMComponent2)添加相應(yīng)的M文件3)保存,編譯4)新建C#Et程,添加Reference,Ok4.使用MatlabDeployTool生成.Net組件1)選擇NewDeploymentProject-MATLABBuilderNE-.NetComponent2)添加相應(yīng)的M文件3)保存,編譯4)新建C#X程,由于經(jīng)常要usingMathWorks.MATLAB.NET.Arrays;usingMathWorks.MATLAB.NET.Utility;因此需添加MWArray個Reference,一般安裝玩MATLABBuild
27、erNE就有了,放在GAC當(dāng)中的。C#與Matlab混合編程(VS2005+Matlab7.5)制作dll步驟:starmatlabMatlabBuilderdeploymenttool新建MatlabB.Netcomponent右鍵addfile找目標(biāo)M文件編譯VS2005引用:引用編譯的dll,同時保持*.ctf在同一文件夾下國日usingMathWorks.MATLAB.NET.Arrays;usingMathWorks.MATLAB.NET.Utility;SQtest.testclass test =newtest.testclass();MWNumericArray是MWArray
28、和c#中數(shù)據(jù)的中間類,怎么用?怎樣在C#與matlab間傳遞參數(shù)?a.double型、int型等數(shù)值類型的變量傳遞MWNumericArrayi=null,result=mydouble;i=4;myClassmyclass=newmyClass();/實例化result=(MWNumericArray)myclass.myfunc(i);b.字符串(需要用到MWCharArray和MWArray轉(zhuǎn)換)MWCharArray=myString;MWNumericArraysensitivity;sensitivity=(MWNumericArray)myClass.myAlgorithm(MW
29、Array);c.多個輸出參數(shù)組成的數(shù)組MWNumericArrayout_Arr=(MWNumericArray)out_Args1;/取出第一個參數(shù)返回的數(shù)組(matlab返回的數(shù)組下界是從1開始的)取出數(shù)組中的一個元素值mydouble=out_Arri.ToScalarDouble();如上面例子ToScalarDouble一類的toXXXX等方法還有許多。d.result.toArray可以把matlab返回的矩陣變成C#的nxm數(shù)組,eg:double口csArray=(double,)result.ToArray(MWArrayComponent.Real);e.將數(shù)組傳入Mat
30、lab(和傳遞單個數(shù)值的方法一樣)double口dbx=newdouble2,21,2,3,4;MWNumericArrayx=dbx;myclass.picture(x);M文件如何接收和返回?functionx=test(h,d)/接收兩個參數(shù),返回一個functionx1,x2=test(h,d)/返回數(shù)組以上為.Net方式連接,以下為COM?式連接(編譯速度而言.net的方式要快上很多,而且似乎比較穩(wěn)定)matlab編譯工作- mbuild-setup- deploytool,MatlabB,GenericCOMComponent- 添加m函數(shù)文件(eg:myfunc.m),改類名(e
31、g:myComClass),build注冊dllregsvr32myCom.dllregsvr32mwcomutil.dllVS2005調(diào)用:- Reference力口Com控件- 調(diào)用示例double口arr=null;objectin_a,out_a;in_a=500;out_a=arr1;myCom.myComClassmc=newmyCom.myComClass();mc.myfunc(1,refout_a,in_a);小例子:(提取matlab返回的兩個參數(shù)并轉(zhuǎn)化為C#勺矩陣)testz.testzclassst=newtestz.testzclass();MWArray口max=s
32、t.testz(2);MWNumericArrayx1=(MWNumericArray)max0;MWNumericArrayx2=(MWNumericArray)max1;double,location1=(double,)x1.ToArray(MWArrayComponent.Real);double,location2=(double,)x2.ToArray(MWArrayComponent.Real);label1.Text=location11,2.ToString();其中的M文件:國日functionx1,x2=testz()x1=123;456;789;x2=987;654;3
33、21;關(guān)于matlab與c#昆合編程產(chǎn)生的移植問題(R)這個問題曾經(jīng)差點讓我的畢業(yè)設(shè)計的程序沒辦法拿出去演示。其實這也是個很現(xiàn)實的問題,你做好的程序如果不能在別人的機(jī)子上運行,那么它有什么應(yīng)用價值呢?說來也慚愧,我以前編寫過很多的程序都出現(xiàn)過移植性難的問題。我想一個很主要的原因是在一個程序開發(fā)者使用的機(jī)子上,往往是具備了非常完整的軟件運行環(huán)境,但程序運行時有可能需要調(diào)用外部的程序或函數(shù),這些平時我們可能不會去注意。也就造成軟件發(fā)布時移植性問題產(chǎn)生的根源了。matlab與c#混合編程的程序,如果要運行于客戶的機(jī)子,必須在客戶端的機(jī)子上設(shè)置好系統(tǒng)變量,同時需要安裝.netframwork與MCR。
34、.netframwork大家都很熟悉了,任何一個.net設(shè)計出來的程序,都不能脫離.netframwork而獨立運行,正如用vc+設(shè)計的程序離不開MFC一樣。這個是必須安裝的。獨立的.netframwork組件包可以直接去微軟的網(wǎng)站上去找。MCR是由matlab提供的,它和.netframwork的性質(zhì)相同,任何一個運行matlab的電腦上,都必須安裝該組件。該組件在matlab2006a版本中已經(jīng)分離開而成為一個獨立的可運行的.exe文件。它一般是放在MATLABR2006atoolboxcompilerdeploywin32文件夾中,名為MCRInstaller.exe。該組件其實是將MA
35、TLABR2006abinwin32文件夾下白大部分(注意不是全部).dll文件打包而已。這也是為什么有些程序在安裝了MCR的機(jī)子上仍然不能運行的原因,不過對絕大多數(shù)的程序來說,一個MCR就足夠了。比較保險的辦法是,自行將MATLABR2006abinwin32下的所有文件打包成一個安裝文件,安裝完后設(shè)置好系統(tǒng)變量(也就是在class變量下添加上面文件的路徑)。為了讓用戶安裝程序時不需要太多的操作,我們可以把上面2個組件和應(yīng)用程序一起打包,然后寫個腳本檢測客戶端的機(jī)子是否已經(jīng)安裝了上面的2個組件,如果沒有,則提示用戶安裝。檢測腳本的寫法很多地方都可以找到。這里就不多介紹了。Matlab和C#混
36、合編程初探最近很想把Matlab中對圖像處理的結(jié)果,在C#應(yīng)用中顯示出來。因此涉及到Matlab和C#的混合編程問題,經(jīng)歷一番折騰。簡單的測試程序終于通過了,期間涉及各種配置和調(diào)用問題。某些步驟的具體原因,尚沒有研究明白,但是通過下面的流程是可以成功實現(xiàn)在C#中調(diào)用一個十分簡單的Matlab函數(shù)的功能,希望在以后學(xué)習(xí)中,可以在C#中調(diào)用更多的Matlab功能。本文用WindowsLiveWriter編寫,也順便測試一下,呵呵!1、Matlab(7.8.0(R2009a)版本)中新建dlldemo.m文件funtionresult=dlldemo(input);result=2*input;en
37、d2、在 command windowVS2008 SP13、在 command window中 deploytool會彈出如下對話框中配置分別配置mbuildsetup和/mexsetup,編譯器均選擇按照提示的流程,先創(chuàng)建project,選擇.NETComponent類型;然后把dlldemo.m文件添加到project里面,然后點上面菜單條上的buildtheproject,成功后會在剛才選定的project文件夾下出現(xiàn)兩個文件夾,在distrib文件夾下有我們需要的dlldemo.dll4、接下來需要做的是,查看distrib文件下的readme首先需要安裝MCRinstaller.e
38、xe,它所在的位置是:Matlab的安裝目錄toolboxcompilerdeploywin32MCRInstaller.exe5、我們還需做一個準(zhǔn)備工彳K在命令行中進(jìn)入/bin/win32目錄下(matlabroot為matlab安裝的路徑),輸入regsvr32mwcomutil.dll,即對mwcomutil.dll進(jìn)行注冊(這個dll是matlab下作的任何com組件都要用到的dll),下面我們在其他編譯器下調(diào)用時就可以用了6、在c#中簡單做一個windowsapplication點擊Calculate按鈕后,代碼是:privatevoidbutton1_Click(objectsen
39、der,EventArgse)Dlldemomydlldemo=newDlldemo();inti=3;MWArrayresult;result=mydlldemo.dlldemo(MWArray)i);/label2.Text=result.ToString();需要添加的references有dlldemo,它在上面提到的distrib文件夾中,還需要添加一個MWArray引用,它的路徑是Matlab安裝路徑toolboxdotnetbuilderbinwin32v2.0。程序中需要引用的命名空間有:usingMathWorks.MATLAB.NET.Arrays;usingMathWor
40、ks.MATLAB.NET.Utility;usingdlldemo;程序運行后點擊Calculate按鈕后結(jié)果是:因為程序中預(yù)設(shè)i=3,所以根據(jù)matlab里面的代碼,將3乘2,得到結(jié)果是67、AnyquestionsyoucansendE-mailtome:References:12C#與Matlab混合編程這段時間一直在折騰MATLAB,要用神經(jīng)網(wǎng)絡(luò)做交通方面的預(yù)測.剛開始對MATLAB這個軟件是一竅不通,不過還好,這個軟件的語言和C語言差不多,很簡單.因為我不是要精通它,只是為了現(xiàn)學(xué)現(xiàn)用.有了目標(biāo)所以學(xué)起來也挺快的.今天剛剛從網(wǎng)上了買了個倒版的MATLABR2007a,這個是可以和C#進(jìn)行混合編程的.原先我們都是用MATLAB做好網(wǎng)絡(luò)模型訓(xùn)練完成后,得到權(quán)值閥值,再寫算法在C#中重構(gòu),很麻煩!現(xiàn)在希望可以通過它們的混合編程,讓預(yù)測做的簡單.第一步:安裝.netframwork與MCR:.netframwork在安裝完后,也就安裝好了.再安裝MCR:安裝文件保存在matlab的安裝目錄toolbox下,C:ProgramFilesMATLABR2007atoolboxcompilerdeploywin32第二步完成編譯器的設(shè)置:命令窗口輸入mbuild-setup和m
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年廚電產(chǎn)品技術(shù)支持企業(yè)制定與實施新質(zhì)生產(chǎn)力戰(zhàn)略研究報告
- 2025-2030年即食燕麥片杯行業(yè)跨境出海戰(zhàn)略研究報告
- 2025-2030年地質(zhì)樣品自動化檢測系統(tǒng)企業(yè)制定與實施新質(zhì)生產(chǎn)力戰(zhàn)略研究報告
- 2025-2030年廚電產(chǎn)品合作行業(yè)跨境出海戰(zhàn)略研究報告
- 2025-2030年數(shù)字化工藝品行業(yè)跨境出海戰(zhàn)略研究報告
- 倉儲設(shè)施設(shè)計與布局優(yōu)化考核試卷
- 獸醫(yī)重癥監(jiān)護(hù)與器官支持技術(shù)考試考核試卷
- 中藥材種植的有機(jī)認(rèn)證與標(biāo)準(zhǔn)考核試卷
- 增材制造裝備在地質(zhì)鉆探設(shè)備性能提升的實踐考核試卷
- 2025年度品牌線上線下融合營銷合作協(xié)議
- 語言和語言學(xué)課件
- 《工作場所安全使用化學(xué)品規(guī)定》
- 裝飾圖案設(shè)計-裝飾圖案的形式課件
- 2022年菏澤醫(yī)學(xué)??茖W(xué)校單招綜合素質(zhì)考試筆試試題及答案解析
- 護(hù)理學(xué)基礎(chǔ)教案導(dǎo)尿術(shù)catheterization
- ICU護(hù)理工作流程
- 廣東版高中信息技術(shù)教案(全套)
- 市政工程設(shè)施養(yǎng)護(hù)維修估算指標(biāo)
- 短視頻:策劃+拍攝+制作+運營課件(完整版)
- 石家莊鐵道大學(xué)四方學(xué)院畢業(yè)設(shè)計46
- 分布式光伏屋頂調(diào)查表
評論
0/150
提交評論