




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
關(guān)于matlab與c#混合編程的問題
2012-06-0600:45shulai1008|瀏覽1573次
在c#中輸入相應(yīng)的函數(shù),如何把這個函數(shù)傳遞給matlab中的m文件,并且是按照函數(shù)來
識別的
分享到:
2012-06-0611:08
再不玩〃瘋狂攀巖〃你就OUT啦!
提問者采納
你是指,參數(shù)傳遞吧,怎么會有函數(shù)傳遞呢
以下代碼,供你參考,涉及到參數(shù)轉(zhuǎn)換和傳遞,不懂的再補(bǔ)充吧
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingMathWorks.MATLAB.NET.Arrays;〃在MWArray.dll,最常用的
usingMathWorks.MATLAB.NET.Utility;//在MWArray.dll,最常用的
usingtest_erfc;//我在matlab中采樣deploytool編譯成test_erfc.dll
namespaceerfccc
(
classProgram
(
staticvoidMain(string[]args)
(
test_erfc.test_erfcclassE=newtest_erfcclass();
0。11$0?.\/7?31_而3(”輸入*的值:'*);
intx=Convert.Tolnt32(Console.ReadLine());
MWArray[]result=E.erfc(1,(MWArray)x);〃第一個參數(shù)取決于你的erfc有
幾個返回參數(shù)
MWNumericArrayr1=(MWNumericArray)result[O];
double[,]locationl=(double[,])r1.ToArray(MWArrayComponent.Real);
Console.WriteLine(location1[0,0].ToString());
Console.ReadLine();
)
)
)
追問:
我的意思是如何將如sin(x)/x這樣的表達(dá)式傳遞給ma
tlab,完成從c#中輸入表達(dá)式和積分上下限求積分的
功能
追答:
這個我就不懂了,我也不知道能不能實現(xiàn),
如果是將表達(dá)式在matlab代碼中固定,在C#中只傳
積分上下限的話可以實現(xiàn)
追問:
嗯,那也還是謝謝你了
追答:
如果你的函數(shù)有限,建議你還是寫在matEb程序里,
通過整型參數(shù)來識別用哪個函數(shù)
Matlab和C#混合編程
作者:qxvfish(站內(nèi)聯(lián)系TA)發(fā)布:2013-11-14
在實驗室算法演示和工程應(yīng)用中存在這樣的困惑:
1.Matlab精通各種數(shù)值計算和算法,但是沒有優(yōu)美的界面,更不用說對數(shù)據(jù)庫訪問操作。
2.Visualstudio(C#)擁有完美的界面編程,窗口或網(wǎng)絡(luò)編程已經(jīng)優(yōu)越的數(shù)據(jù)庫訪問等優(yōu)勢。
3.國外有一本書叫:MATSBC#Book圖書(已經(jīng)放到壓縮包中了),看過以后收獲不少。
4.結(jié)合各種材料,我使用visualstudio2012+matlab2013a實現(xiàn)了從
Winfrom調(diào)用Matlab命令行繪圖
Winfrom調(diào)用.m文件編譯的dll并在WebBrowser中顯示結(jié)果
fl
調(diào)用Matlab命令demo
0LU9P||G附酰
9
**?1?A3
-:?***
9
■
?S
5!
ce
2*
1S
St
**1
ttat,"
IX"
a
…£
■%1Q9it'9t?ffl9O
<MQMIUM3OIMM?A00MluwzQ>3MIVM匕O?SMWIAWnWima
02W?
的防宴空源君理靠▼B
ge?二s同窗:旦
?:)a
卬嶙坊案"WinFormCallMatlab-(1個項目)
*廬WinFormCallMatlab
Df*Properties
-巴引用
magicpro
,■MicrosoftCSharp
?"MLApp
MWArray
■■System
*■System.Core
System.DaU
System.Data.DataSetExtensions
"■System.Deployment
System.Drawing
,■System.Wrndow$.Forms
SystemJCml
?■SystemJCmLLinq
■ServiceReferences
口Appxonfig
/3CallMatlabFunctionByDLLcs
?liGillMatiabFunctionByDLLrDesignerxs
力CallMatiabFunctionByDLLresx
?飛CallMatiabFunctionByDLL
/國CallMatlabViaMatlabCommand.cs
?CallMatlabV1aMatlabC0mm4nd.Designer.cs
CallMatiabViaMatlabComm4nd.resx
?,CallMatlabViaMatlabCommand
/國mainFbrm.c$
?!mainForrn.Designer.es
1JmainForm.resx
?、mainForm
>。Program.cs
度性帳友方案野蔣香瑾X國》、資源苣理81
解決方案結(jié)構(gòu)
WinFormCallMatlab.rar-WinRAR
文件(F)命令(C)T*(S)收藏夾(O)選項(N)幫助(H)
囹§WinFormCallMatlab.rar-RAR欣蚊件,解包大小為3,946,725:
B,MATLABCSharp.pdf
壓縮包中包含MATLABCSharp.pdf
回到目錄
L前言
MatlabBuilderNE工具箱是與C#混編的工具箱,里面的幫助文檔很詳細(xì),提供了4種情
況下與.NET混合編程的案例。
1.是簡單的組件集成,通過Matlab生成DII程序集,在.NET環(huán)境中,通過MWArray組件
來調(diào)用;
2.還有一個是在Web環(huán)境下使用Figure和混編的情況,與1比較類似;
3另外一個就是我們今天要講到的基于類型安全的接口編程以及對WCF和M訐的支持;
4.最后一個是在.NETRemoting技術(shù)中的使用。
在初級入門教程中,以及我現(xiàn)在的混編開發(fā)中,都只是用到了第1個方法,和很簡單,也
很快,當(dāng)然要你掌握了很多基礎(chǔ)技術(shù)之后才能達(dá)到這個水平。今天要見到的基于接口的編程,
有一個很大的好處就是可以避免類型轉(zhuǎn)換,因為之前的方法都有大量的.NET和Matlab類
型進(jìn)行轉(zhuǎn)換,基礎(chǔ)不扎實的朋友很容易搞混淆。而基于接口的編程,則可以避免很多問題,
但同時也對基礎(chǔ)提出了更高的要求,要對接口定義,作用,以及方法多態(tài)等面向?qū)ο蟮奶匦?/p>
更加了解。
下面截圖是在Matlab幫助的說明:
Writing.NETapplicationsthatcanaccess.NETmethodsthatComDonentIntegration
encapsulateMATLABcode
SampleapplicationsthataccessmethodsdevelopedinMATLABComponentIntegration
Learnaboutcreatingtype-safeinterfaces,inordertoavoiddataType?SafgInterfaces,WCF,andMEF
conversiontaskswithMWArray.
Deploying.NETcomponentsovertheWebWebDEploymentofFiguresandImages
Creatingaremotablecomponentorlearningaboutremotable.NETRemoting
components
回到目錄
2.Type-SafeInterfaces簡單說明
與直接編譯為.NET程序集的要求不同,使用這項技術(shù)對.NET程序員的要求小很多,只需要
很少的Matlab知識,但要對.NET技術(shù)精通,
之前由于Matlab的數(shù)據(jù)類型和.NET的基本數(shù)據(jù)類型不兼容,所以為了使得Matlab和.NET
程序進(jìn)行數(shù)據(jù)通信,就需要使用下面的技術(shù):
l)Marshaldatafrom.NETinputdatatoadeployedfunctionbycreatinganMWArr
ayobjectfromnative.NETdata.
ThepublicfunctionsinadeployedcomponentreturnMWArrayobjects.
2)MarshaltheoutputMATLABdatainanMWArrayintonative.NETdatabycallin
goneoftheMWArraymarshalingmethods(ToArrayO,forexample).
所以使用傳統(tǒng)的混編方式,又很多數(shù)據(jù)類型轉(zhuǎn)換的過程。而在使用Type-SafeInterfaces技術(shù)
后,這些中間過程都可以忽略,
只需要關(guān)系輸入的.NET類型以及輸出的.NET類型結(jié)果,Matlab會對數(shù)據(jù)進(jìn)行內(nèi)部的轉(zhuǎn)換處
理??梢钥纯辞昂?副圖的對比:
SimplifiedDataMarshalingWithaType-SafeInterface
ManualDataMarshalingWithoutaType-SafeInterface
因此,我們可以很明顯的看到Type-SafeInterfaces帶來的優(yōu)勢:
Youavoidtrainingandcodingcostsassociatedwithteachingenduserstoworkwi
thMWArrays.
YouminimizecostofdatayoumustmarshalbyeitherplacingMWArrayobjectsin
type-safeinterfacesorbycallingMWArray-basedfunctionsinthedeployedcom
ponent.
Flexibility—youmixtype-safeinterfaceswithmanualdatamarshalingtoaccomm
odatedataofvaryingsizesandaccesspatterns.
Forexample,youmayhaveafewlargedataobjects(images,forexample)thatwo
uldincurexcesscosttoyourorganizationifmanaged
withatype-safeinterface.Bymixingtype-safeinterfacesandmanualmarshaling,
smallerdatatypescanbemanaged
automaticallywiththetype-safeinterfaceandyourlargedatacanbemanagedon
anas-neededbasis.
回到目錄
3.Type-SafeInterfaces實際案例
對這個混編方式,很顯示可以節(jié)省很多事情,我認(rèn)為,作為原始的數(shù)據(jù)類型轉(zhuǎn)換方式,還是
應(yīng)該掌握的。在掌握了之后,再使用這個方法,會事半功倍,畢竟不是所有的問題都可以用
接口解決。接下來,就讓我們一起用一個小的編程實例,來演示整個過程的使用。
演示環(huán)境:VisualStudio2010,Matlab2012a,.NET4.0
演示內(nèi)容:一個簡單的乘法運算混編實現(xiàn)
一、新建T類庫類型的項目,名稱MatlabDemo,.NET4.0,如下圖所示:
溫廝項目________
三J制圖居
最近的模板,NETFramework4▼排序依據(jù):刖S
已安裝的模板▲
VisualC#
Windows窗體應(yīng)用程序VisualC#
*豆)
/VisualC#用于創(chuàng)建C#類國
Windows
畫WPF應(yīng)用程序VisualC#
Web
Cloud控制臺應(yīng)用程序VisualC#
三
Reporting
E
Silverlight國VisualC#
WCF1
1
Workflow圍WPF涎覽器應(yīng)用程序VisualC#
蛹
其他語言Windows服務(wù)VisualC#
其他項目類型—
數(shù)據(jù)庫時WPF用戶控件庫VisualC#
▼
聯(lián)機(jī)模板
WPF目定濃件庫VisualC#▼
一、在上面的項目中添加一個接口文件IMultiply.cs,并編寫下面的代碼,因為我們實現(xiàn)的
是一個簡單的乘法,所以添加如下幾個接口方法:
1namespaceMatlabDemo
2{
3///<summary>乘法接口</$1111111120>
4publicinterfaceMultiply
5(
6//2個數(shù)直接相乘
7doublemultiply(doublex,doubley);
8
9//數(shù)組相乘
10doublet]multiply(double[]x,doubley);
11
12〃矩陣相乘
13doublet,]multiply(doublet,]x,doublet,]y);
14)
15)
這里注意,一定要將接口的可訪問性設(shè)置為Public,否則混編的時候,Matlab會找不到
接口原型,編譯失敗。編寫好,編譯項目即可,會在bin文件夾下得到MatlabDemo.dll
文件,這個文件下面的步驟會用到。
三、編寫M函數(shù),并設(shè)置混編項目。我們編寫一個簡單的乘法M函數(shù)m,如下所示:
1functionz=multiply(x,y)
2
3z=x*y;
注意這里的名稱一定要和接口方法的名稱對于起來,否則Matlab怎么會認(rèn)識,想想就明白
了。然后在Matlab中輸入deploytool命令,輸入項目名稱:TypeSaftDem。,并選擇項
目類型:.NETAssembly,這個過程是"混編三部曲"基本過程,以前的視頻中專門見到了,
不仔細(xì)說明,如下圖所示:
.NETAssembly
es
nent
2C
|與JavaPackage
確定之后,混編項目基本就建立了,然后新建一個類DemoTest,并把上面編寫的
multiply.m函數(shù)添加到這個類中去,這其實就是一個常規(guī)的混編過程,很簡單。添加完成
之后,如果是普通的混編方式,直接編譯就可以了,但基于接口的混編方式,還有一個過程
要設(shè)置,看下圖,單擊混編項目的設(shè)置(Settings...):
向口,x.NETAssembly
3tOplot▼品TypeSaftDemo.prj
Min
BuildPackageNewProject...
OpenProject...
Classes
?DemoTest&RenameProject
芻multiply.m⑥AddClass
[Addfiles]
AddMCR
「AddClassi
QBuild
SharedResourcesandHelperAles
夠Package
Placeimages,datafiles,and
referencedbyanyfunctions.?Settings…j
Alsoplacehere:?Help
f■□,X?Functionscalledusingeval(anditsvariants)
?FunctionsnotontheMATLABpath
?Privatefunctions
如下圖,打開設(shè)置后,選擇"TypeSafeAPI"選項卡:
首先,選擇我們在第一個過程中編寫好的MatlabDemo.dll接口文件,選擇后,程序會自
動搜索該dll中的可用接口(公開的),在.NETinterface下拉列表中顯示,選擇你需要的,
這里我們是【Multiply,如下圖所示的MatlabDemo.【Multiply,然后選擇該接口和Matlab混
編程序中對于的類我們的multiply.m函數(shù)在DemoTest類中,如下圖的Wrappedclass:
設(shè)置完成之后,關(guān)閉即可。然后編譯,如果沒有問題,提示編譯成功之后,打開編譯好的
文件夾,我們可以看到如下3個dll文件:
Package(98KB)
|qDemoTestIMultiply.dll
readme.txt
[,':<6TypeSaftDemo.dll
?ITypeSaftDemooverview.html
[飆TypeSaftDemoNative.dll
[Addfiles/directories][AddMCR1
生成的3個文件JypeSafeDemo.dll其實和普通的混編方式是一樣的,可以和以前數(shù)據(jù)類
型轉(zhuǎn)換的方式一樣使用;而DemoTestIMultiply.dll和TypeSafeDemoNative.dll這2個
一起使用,Matlab已經(jīng)在內(nèi)部將數(shù)據(jù)轉(zhuǎn)換過程封裝好了,直接使用即可。第一種方式就不
演示了,直接演示如何用接口來計算乘法。
五、C#調(diào)用混編好的dll計算結(jié)果。在上一節(jié)中我們已經(jīng)說明了幾個dll的作用,下面將演
示他們的用法,將DemoTestIMultiply.dll和TypeSafeDemoNative.dll一起復(fù)制到測試
項目的C#項目中省新建一個控制臺測試項目)分別添加這幾個dll的引用:MWAarray.dll
和DemoTestIMultiply.dll以及TypeSafeDemoNative.dll。然后添加命名空間,具體核心
代碼如下所示:
等
1usingSystem;
2usingSystem.Collections.Generic;
3usingSystem.Linq;
4usingSystem.Text;
5
6usingMathWorks.MATLAB.NET.Arrays;
7usingMathWorks.MATLAB.NET.Utility;
8
9usingTypeSaftDemo;
10
11namespaceTypeSaftTest
12{
13classProgram
14{
15staticvoidMain(string[]args)
16
17〃混編接口類的實例化
18DemoTestMultiplydi=newDemoTestIMultiply();
19doublet,]a=newdouble[2,2]{{1,2},{3,4}};
20doublet,1b=newdouble[2,2]{{6,7},{8,9}};
21〃分別演示接口的3種不同調(diào)用
22vartl=di.multiply(3,5);
23vart2=di.multiply(newdoublet]{1,2,3},5);
24vart3=di.multiply(a,b);
25Console.WriteLine(,z2個數(shù)直接相乘:"+tl.ToStringO);
26Console.Write("數(shù)組與單個數(shù)直接相乘:”);
27foreach(varitemint2)Console.Write(item.ToString()+z/
”);
28Console.WriteLine();
29Console.Write("矩陣乘法:”);
30foreach(varitemint3)Console.Write(item.ToString0+
"”);
31Console.ReadKey();
32)
33}
34)
結(jié)果如下圖所示:
?file:///D:/Work/Matlab/MatlabDemo/TypeSaftTest/bin/De
2個數(shù)直接相乘:15
數(shù)組與星個數(shù)直接相乘:51015
矩陣乘法:22255057
上面就是Matlab和C#基于接口的混合編程的詳細(xì)過程,混編是一個很有用的工具,
但要用好,其實真的很難,接觸混編這么長的時間以來,碰到過很多同學(xué)使用這個工具,絕
大部分是誤用,導(dǎo)致無故的工作量。要想混編成為自己工作和學(xué)習(xí)的得力助手,必須加強(qiáng)
Matlab和.NET基礎(chǔ)的學(xué)習(xí),只有2者的基礎(chǔ)掌握好了,足夠熟悉這2個平臺,你才可能
更順利的解決混編過程中遇到的問題。當(dāng)混編出了問題的時候,需要很多經(jīng)驗才能度過難關(guān),
這一點很重要,不要指望學(xué)會這個過程,就可以解決所有問題。期待Mathworks公司對
Matlab的混編編程支持越來越強(qiáng)大。
【原創(chuàng)】Matlab.NET混合編程技巧之直接調(diào)用Matlab內(nèi)
置函數(shù)
1.傳統(tǒng)的Matlab.NET混合編程步驟
傳統(tǒng)的Matlab.NET混合編程有2種方式:
DMatlab編寫好M函數(shù),利用deploytool編譯m函數(shù)生成dll,在C#項目中引用并調(diào)
用;
2)基于接口的編寫方式,也是利用deploytool工具,過程繁瑣一點,對編程人員素質(zhì)要求
高一點,但不需要進(jìn)行繁瑣的數(shù)據(jù)類型轉(zhuǎn)換。我的博客有一篇文章專門介紹了這個混合編程
方式,也有例子,大家有興趣的可以看看:
http:〃w/asxinyu/archive/2013/05/16/3082299.html
不管上面用哪種方式,Matlab和C#混編的基本步驟,大概都是下面的過程:
1)編寫M函數(shù),并首先在Matlab中測試是正確可以調(diào)用的。注意命名規(guī)范,注釋規(guī)范;
2)使用命令打開deploytool工具,設(shè)置項目名稱,選擇類型:.NETAssembly,然后新
建一個類,并添加編寫好的M函數(shù)
3)編譯,生成dll,并在C#項目中添加引用(還需要引用對應(yīng)版本的MWArray),利用對
象瀏覽器查看生成dll的方法結(jié)構(gòu),并根據(jù)Matlab和C#的類型轉(zhuǎn)換規(guī)則,進(jìn)行數(shù)據(jù)轉(zhuǎn)換
即可,如果是接口的編程,這個過程相對要簡單。
回到目錄
2.深入解析傳統(tǒng)混編所生成的代碼
2.1第一步:編寫M函數(shù),并測試可以使用
為了好我們今天的目的相匹配,特意封裝一個簡單的內(nèi)置函數(shù),plot,來畫一個簡單的圖形,
如下所示M函數(shù)
1functionPlotTest(n)
2%編寫一個簡單的函數(shù),對plot進(jìn)行簡單封裝一下
3plot(1:n,1:n);
4船則試正確,才可以進(jìn)行下一步工作
注意,混編必須是m函數(shù)function的形式才能被調(diào)用。上述函數(shù)簡單測試一下,沒有問題
(復(fù)雜的函數(shù)一定要多測試,否則后續(xù)調(diào)試常困難)。繼續(xù)下一步。
2.2第二步:在Matlab中使用deploytool建立混編項目
在Matlab工作區(qū)輸入命令:deploytool,然后得到下面界面,輸入混編項目的名稱,選擇
存儲位置,關(guān)鍵的是類型那里一定要選擇”.NETAssembly",如下圖所示:
▼
選擇"0K"之后,下一步matlab界面右側(cè)會出現(xiàn)項目解決方案,需要添加類名稱和M文
件。這個類名稱,就是編譯完成之后C#項目中的類對象名稱,然后添加我們剛才上一步編
寫的"PlotTest.m",然后編譯即可,如下圖所示:
.NETAssembly…n
QPlotTest.prj▼巴夠?▼
BuildPackage
'lasses
?TestDemo
PlotTestm
「Addfilesl
「AddClassi
到此為止,一個常規(guī)簡單的Matlab.NET混編已經(jīng)完成了60%了。編譯完成之后,打開
"Package"選項卡,即可看到生成的dll文件,然后點擊右鍵,打開文件夾即可,如下圖
麻:
.NETAssembly
PlotTest.prj▼3!'d
Build[Package
Package(1KB)
PlotTestdll
>1PlotTest_overview.html
APlotTestNative.dll
readme.txt
「Addfiles/directories]
2.3查看混編生成的代碼
這個過程很關(guān)鍵,其實包含很多信息,只不過95%以上的人都沒有注意到其實混編生
成的dll是有源文件的,通過查看源文件就應(yīng)該知道混編的原理,只不過這是matlab自動
生成而已。那看看生成的源碼吧。
打開Matlab混編項目的目錄,可以看到有2個文件夾,"distrib","src"2個文件
夾。"distrib”文件夾就是上面圖中生成的dll,注意有2個dll,1個是"項目名稱dl",一個
是"項目名稱Native.dll"這2個dll的差別可以通過"distrib”文件夾源碼來觀察Jdistrib"
就是源代碼的文件夾。如下圖所示,src文件夾的文件示意圖:
名稱
mccEccludedFiles
生PlotTest.dll
畫PlotTest
jPlotTest_overview
1?^jPlotTestNative.dll
宣PlotTestNative
-readme
也TestDemo.es
TestDemoNative.es
我們2.2中新建的類名是TestDemo,所以生成的的源碼名稱也是TestDemo盾看這2個
cs文件中的代碼,同時類的方法也可以在VS中通過對象瀏覽器來查看dll有哪些方法以及
方法的參數(shù)類型。直接貼這2個cs文件的代碼,順便解釋和對比下:
TestDemo.cs文件源碼:
1/*
2*MATLABCompiler:4.17(R2012a)
3*Date:MonSep0916:19:012013
4*Arguments:〃-B〃〃macro_default〃〃-
z,dotnet:PlotTest,TestDemo,0.0,private"〃-T〃
5*〃link:lib〃〃-d〃
Z/D:\Work\DevelopMent_SVN\Matlab\MatlabBlog\PlotTest\src,zz/-wz,
6*,zenable:specified_file_mismatch,z〃-w〃z,enable:repeated_file,z〃-
7*^enable:switch_ignored,,〃-,zenable:missing_lib_sentinelz,〃-
enable:demo_license,z
8*,〃-v〃
“class{TestDemo:D:\Work\DevelopMent_SVN\Matlab\MatlabBlog\PlotTest.m)
〃
9*/
10usingSystem;
11usingSystem.Reflection;
12usingSystem.10;
13usingMathWorks.MATLAB.NET.Arrays;
14usingMathWorks.MATLAB.NET.Utility;
15
16#ifSHARED
17[assembly:System.Reflection.AssemblyKeyFile(@,,/,)]
18#endif
19
20namespacePlotTest
21{
22
23III<summary>
24IIITheTestDemoclassprovidesaCLScompliant,MWArrayinterface
totheM-functions
25///containedinthefiles:
26///<newpara></newpara>
27IIID:\Work\DevelopMent_SVN\Matlab\MatlabBlog\PlotTest.m
28///<newpara></newpara>
29IIIdeployprint,m
30III<newpara></newpara>
31/IIprintdig.m
32III</summary>
33III<remarks>
34III?Version0.0
35///</remarks>
36publicclassTestDemo:IDisposable
37{
38SregionConstructors
39
40III<summaryinternal=
41IIIThestaticconstructorinstantiatesandinitializesthe
MATLABCompilerRuntime
42IIIinstance.
43///</summary>
44staticTestDemo()
45(
46if(MWMCR.MCRAppInitialized)
47{
48Assemblyassembly=Assembly.GetExecutingAssembly();
49
50stringctfFilePath=assembly.Location;
51
52intlastDelimiter=ctfFilePath.LastlndexOf(@/z\z,);
53
54ctfFilePath=ctfFilePath.Remove(lastDelimiter,
(ctfFilePath.Length-lastDelimiter));
55
56stringctfFileName="PlotTest.ctf〃;
57
58StreamembeddedCtfStream=null;
59
60String[]resourceStrings=
assembly.GetManifestResourceNames();
61
62foreach(StringnameinresourceStrings)
63(
64if(name.Contains(ctfFileName))
65(
66embeddedCtfStream=
assembly.GetManifestResourceStream(name);
67break;
68)
69)
70mcr=newMWMCR(〃〃,
71ctfFilePath,embeddedCtfStream,true);
72)
73else
74{
75thrownewApplicationException(/?MWArrayassemblycouldnot
beinitialized");
76)
77)
78
79
80///<summary>
81///ConstructsanewinstanceoftheTestDemoclass.
82III</summary>
83publicTestDemo()
84{
85)
86
87
88ttendregionConstructors
89
90ttregionFinalize
91
92///<summaryinternal=
93///ClassdestructorcalledbytheCLRgarbagecollector.
94///</summary>
95~TestDemo()
96{
97Dispose(false);
98}
99
100
101III<summary>
102///Freesthenativeresourcesassociatedwiththisobject
103///</summary>
104publicvoidDispose()
105(
106Dispose(true);
107
108GC.SuppressFinalize(this);
109)
110
111
112III<summaryinternal=〃true〃>
113IIIInternaldisposefunction
114III</summary>
115protectedvirtualvoidDispose(booldisposing)
116(
117if(Idisposed)
118(
119disposed=true;
120
121if(disposing)
122(
123//Freemanagedresources;
124)
125
126//Freenativeresources
127)
128)
129
130
131#endregionFinalize
132
133ttregionMethods
134
135///<summary>
136IIIProvidesavoidoutput,0-inputMWArrayinterfacetothe
PlotTestM-function.
137III</summary>
138///<remarks>
139IIIM-Documentation:
140III編寫一個簡單的函數(shù),對plot進(jìn)行簡單封裝一下
141III</remarks>
142III
143publicvoidPlotTest()
144{
145mcr.EvaluateFunction(0,"PlotTest”,newMWArray[]{});
146)
147
148
149III<summary>
150///Providesavoidoutput,l-inputMWArrayinterfacetothe
PlotTestM-function.
151III</summary>
152III<remarks>
153///M-Documentation:
154III編寫一個簡單的函數(shù),對plot進(jìn)行簡單封裝一下
155///</remarks>
156III<paramname=//n//>Inputargument#K/param>
157III
158publicvoidPlotTest(MWArrayn)
159{
160mcr.EvaluateFunction(0,"PlotTest”,n);
161)
162
163
164III<summary>
165IIIProvidesthestandard0-inputMWArrayinterfacetothe
PlotTestM-function.
166III</summary>
167III<remarks>
168///M-Documentation:
169HI編寫一個簡單的函數(shù),對plot進(jìn)行簡單封裝一下
170///〈/remarks〉
171III<paramname=",numArgsOut/z>Thenumberofoutputargumentsto
return.</param>
172III<returns>AnArrayoflength"numArgsOut"containingthe
output
173///arguments.</returns>
174///
175publicMWArray[]PlotTest(intnumArgsOut)
176(
177returnmcr.EvaluateFunction(numArgsOut,“PlotTest”,new
MWArray[]{});
178)
179
180
181III<summary>
182IIIProvidesthestandard1-inputMWArrayinterfacetothe
PlotTestM-function.
183///</summary>
184///<remarks>
185///M-Documentation:
186///編寫一個簡單的函數(shù),對plot進(jìn)行簡單封裝一下
187III</remarks>
188///<paramname=,znumArgs0utz/>Thenumberofoutputargumentsto
return.</param>
189///<paramname=z/n,z>Inputargument#l</param>
190///<returns>AnArrayoflength"numArgsOut"containingthe
output
191IIIarguments.</returns>
192l/l
193publicMWArray[]PlotTest(intnumArgsOut,MWArrayn)
194(
195returnmcr.EvaluateFunction(numArgsOut,“PlotTest”,n);
196)
197
198
199
200III<summary>
201IIIThismethodwillcauseaMATLABfigurewindowtobehaveas
amodaldialogbox.
202///Themethodwillnotreturnuntilallthefigurewindows
associatedwiththis
203IIIcomponenthavebeenclosed.
204///</summary>
205III<remarks>
206///Anapplicationshouldonlycallthismethodwhenrequiredto
keepthe
207IIIMATLABfigurewindowfromdisappearing.Othertechniques,
suchascalling
208IIIConsole.ReadLine()fromtheapplicationshouldbeconsidered
where
209///possible.</remarks>
210///
211publicvoidWaitForFiguresToDie()
212(
213mcr.WaitForFiguresToDie();
214)
215
216
217
218ttendregionMethods
219
220ttregionClassMembers
221
privatestaticMWMCRmcr=
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- CAB 1018-2013汽車皮革類方向盤套
- CAB 1001-2013水性聚氨酯(PU)合成革
- 2025股票發(fā)行合同范本下載
- 2024年有機(jī)磷系阻燃劑資金申請報告代可行性研究報告
- 智能教育機(jī)器人展示屏幕租賃與智能教學(xué)方案設(shè)計服務(wù)協(xié)議
- 高端市場汽車LED車燈模組定制合作協(xié)議
- 2025年中國鉍業(yè)行業(yè)市場前景預(yù)測及投資價值評估分析報告
- 抖音數(shù)字孿生虛擬偶像培養(yǎng)與推廣協(xié)議
- 股權(quán)質(zhì)押補(bǔ)充協(xié)議實施細(xì)則
- 獨家網(wǎng)絡(luò)播放權(quán)授權(quán)協(xié)議及衍生品開發(fā)合同
- 家具供貨結(jié)算協(xié)議書
- 2025屆湖南省邵陽市高三下學(xué)期第三次聯(lián)考物理試卷(含答案)
- 2025年公證員資格考試全國范圍真題及答案
- 叉車作業(yè)安全協(xié)議書
- 房屋解除轉(zhuǎn)讓協(xié)議書
- 小學(xué)生美術(shù)講課課件
- 新聞采訪考試試題及答案
- DLT 593-2016 高壓開關(guān)設(shè)備和控制設(shè)備
- 6.2《青紗帳-甘蔗林》-【中職專用】高一語文課件(高教版2023·基礎(chǔ)模塊下冊)
- 鐵路混凝土梁配件多元合金共滲防腐技術(shù)條件
- 土地權(quán)屬爭議形成成因及處理原則
評論
0/150
提交評論