




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
关于matlab与c#混合编程的问题
2012-06-0600:45shulai1008|浏览1573次
在c#中输入相应的函数,如何把这个函数传递给matlab中的m文件,并且是按照函数来
识别的
分享到:
2012-06-0611:08
再不玩〃疯狂攀岩〃你就OUT啦!
提问者采纳
你是指,参数传递吧,怎么会有函数传递呢
以下代码,供你参考,涉及到参数转换和传递,不懂的再补充吧
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);〃第一个参数取决于你的erfc有
几个返回参数
MWNumericArrayr1=(MWNumericArray)result[O];
double[,]locationl=(double[,])r1.ToArray(MWArrayComponent.Real);
Console.WriteLine(location1[0,0].ToString());
Console.ReadLine();
)
)
)
追问:
我的意思是如何将如sin(x)/x这样的表达式传递给ma
tlab,完成从c#中输入表达式和积分上下限求积分的
功能
追答:
这个我就不懂了,我也不知道能不能实现,
如果是将表达式在matlab代码中固定,在C#中只传
积分上下限的话可以实现
追问:
嗯,那也还是谢谢你了
追答:
如果你的函数有限,建议你还是写在matEb程序里,
通过整型参数来识别用哪个函数
Matlab和C#混合编程
作者:qxvfish(站内联系TA)发布:2013-11-14
在实验室算法演示和工程应用中存在这样的困惑:
1.Matlab精通各种数值计算和算法,但是没有优美的界面,更不用说对数据库访问操作。
2.Visualstudio(C#)拥有完美的界面编程,窗口或网络编程已经优越的数据库访问等优势。
3.国外有一本书叫:MATSBC#Book图书(已经放到压缩包中了),看过以后收获不少。
4.结合各种材料,我使用visualstudio2012+matlab2013a实现了从
Winfrom调用Matlab命令行绘图
Winfrom调用.m文件编译的dll并在WebBrowser中显示结果
fl
调用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
解决方案结构
WinFormCallMatlab.rar-WinRAR
文件(F)命令(C)T*(S)收藏夹(O)选项(N)帮助(H)
囹§WinFormCallMatlab.rar-RAR欣蚊件,解包大小为3,946,725:
B,MATLABCSharp.pdf
压缩包中包含MATLABCSharp.pdf
回到目录
L前言
MatlabBuilderNE工具箱是与C#混编的工具箱,里面的帮助文档很详细,提供了4种情
况下与.NET混合编程的案例。
1.是简单的组件集成,通过Matlab生成DII程序集,在.NET环境中,通过MWArray组件
来调用;
2.还有一个是在Web环境下使用Figure和混编的情况,与1比较类似;
3另外一个就是我们今天要讲到的基于类型安全的接口编程以及对WCF和M讦的支持;
4.最后一个是在.NETRemoting技术中的使用。
在初级入门教程中,以及我现在的混编开发中,都只是用到了第1个方法,和很简单,也
很快,当然要你掌握了很多基础技术之后才能达到这个水平。今天要见到的基于接口的编程,
有一个很大的好处就是可以避免类型转换,因为之前的方法都有大量的.NET和Matlab类
型进行转换,基础不扎实的朋友很容易搞混淆。而基于接口的编程,则可以避免很多问题,
但同时也对基础提出了更高的要求,要对接口定义,作用,以及方法多态等面向对象的特性
更加了解。
下面截图是在Matlab帮助的说明:
Writing.NETapplicationsthatcanaccess.NETmethodsthatComDonentIntegration
encapsulateMATLABcode
SampleapplicationsthataccessmethodsdevelopedinMATLABComponentIntegration
Learnaboutcreatingtype-safeinterfaces,inordertoavoiddataType・SafgInterfaces,WCF,andMEF
conversiontaskswithMWArray.
Deploying.NETcomponentsovertheWebWebDEploymentofFiguresandImages
Creatingaremotablecomponentorlearningaboutremotable.NETRemoting
components
回到目录
2.Type-SafeInterfaces简单说明
与直接编译为.NET程序集的要求不同,使用这项技术对.NET程序员的要求小很多,只需要
很少的Matlab知识,但要对.NET技术精通,
之前由于Matlab的数据类型和.NET的基本数据类型不兼容,所以为了使得Matlab和.NET
程序进行数据通信,就需要使用下面的技术:
l)Marshaldatafrom.NETinputdatatoadeployedfunctionbycreatinganMWArr
ayobjectfromnative.NETdata.
ThepublicfunctionsinadeployedcomponentreturnMWArrayobjects.
2)MarshaltheoutputMATLABdatainanMWArrayintonative.NETdatabycallin
goneoftheMWArraymarshalingmethods(ToArrayO,forexample).
所以使用传统的混编方式,又很多数据类型转换的过程。而在使用Type-SafeInterfaces技术
后,这些中间过程都可以忽略,
只需要关系输入的.NET类型以及输出的.NET类型结果,Matlab会对数据进行内部的转换处
理。可以看看前后2副图的对比:
SimplifiedDataMarshalingWithaType-SafeInterface
ManualDataMarshalingWithoutaType-SafeInterface
因此,我们可以很明显的看到Type-SafeInterfaces带来的优势:
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实际案例
对这个混编方式,很显示可以节省很多事情,我认为,作为原始的数据类型转换方式,还是
应该掌握的。在掌握了之后,再使用这个方法,会事半功倍,毕竟不是所有的问题都可以用
接口解决。接下来,就让我们一起用一个小的编程实例,来演示整个过程的使用。
演示环境:VisualStudio2010,Matlab2012a,.NET4.0
演示内容:一个简单的乘法运算混编实现
一、新建T类库类型的项目,名称MatlabDemo,.NET4.0,如下图所示:
温厮项目________
三J制图居
最近的模板,NETFramework4▼排序依据:刖S
已安装的模板▲
VisualC#
Windows窗体应用程序VisualC#
*豆)
/VisualC#用于创建C#类国
Windows
画WPF应用程序VisualC#
Web
Cloud控制台应用程序VisualC#
三
Reporting
E
Silverlight国VisualC#
WCF1
1
Workflow围WPF涎览器应用程序VisualC#
蛹
其他语言Windows服务VisualC#
其他项目类型—
数据库时WPF用户控件库VisualC#
▼
联机模板
WPF目定浓件库VisualC#▼
一、在上面的项目中添加一个接口文件IMultiply.cs,并编写下面的代码,因为我们实现的
是一个简单的乘法,所以添加如下几个接口方法:
1namespaceMatlabDemo
2{
3///<summary>乘法接口</$1111111120>
4publicinterfaceMultiply
5(
6//2个数直接相乘
7doublemultiply(doublex,doubley);
8
9//数组相乘
10doublet]multiply(double[]x,doubley);
11
12〃矩阵相乘
13doublet,]multiply(doublet,]x,doublet,]y);
14)
15)
这里注意,一定要将接口的可访问性设置为Public,否则混编的时候,Matlab会找不到
接口原型,编译失败。编写好,编译项目即可,会在bin文件夹下得到MatlabDemo.dll
文件,这个文件下面的步骤会用到。
三、编写M函数,并设置混编项目。我们编写一个简单的乘法M函数m,如下所示:
1functionz=multiply(x,y)
2
3z=x*y;
注意这里的名称一定要和接口方法的名称对于起来,否则Matlab怎么会认识,想想就明白
了。然后在Matlab中输入deploytool命令,输入项目名称:TypeSaftDem。,并选择项
目类型:.NETAssembly,这个过程是"混编三部曲"基本过程,以前的视频中专门见到了,
不仔细说明,如下图所示:
.NETAssembly
es
nent
2C
|与JavaPackage
确定之后,混编项目基本就建立了,然后新建一个类DemoTest,并把上面编写的
multiply.m函数添加到这个类中去,这其实就是一个常规的混编过程,很简单。添加完成
之后,如果是普通的混编方式,直接编译就可以了,但基于接口的混编方式,还有一个过程
要设置,看下图,单击混编项目的设置(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
如下图,打开设置后,选择"TypeSafeAPI"选项卡:
首先,选择我们在第一个过程中编写好的MatlabDemo.dll接口文件,选择后,程序会自
动搜索该dll中的可用接口(公开的),在.NETinterface下拉列表中显示,选择你需要的,
这里我们是【Multiply,如下图所示的MatlabDemo.【Multiply,然后选择该接口和Matlab混
编程序中对于的类我们的multiply.m函数在DemoTest类中,如下图的Wrappedclass:
设置完成之后,关闭即可。然后编译,如果没有问题,提示编译成功之后,打开编译好的
文件夹,我们可以看到如下3个dll文件:
Package(98KB)
|qDemoTestIMultiply.dll
readme.txt
[,':<6TypeSaftDemo.dll
・ITypeSaftDemooverview.html
[飙TypeSaftDemoNative.dll
[Addfiles/directories][AddMCR1
生成的3个文件JypeSafeDemo.dll其实和普通的混编方式是一样的,可以和以前数据类
型转换的方式一样使用;而DemoTestIMultiply.dll和TypeSafeDemoNative.dll这2个
一起使用,Matlab已经在内部将数据转换过程封装好了,直接使用即可。第一种方式就不
演示了,直接演示如何用接口来计算乘法。
五、C#调用混编好的dll计算结果。在上一节中我们已经说明了几个dll的作用,下面将演
示他们的用法,将DemoTestIMultiply.dll和TypeSafeDemoNative.dll一起复制到测试
项目的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种不同调用
22vartl=di.multiply(3,5);
23vart2=di.multiply(newdoublet]{1,2,3},5);
24vart3=di.multiply(a,b);
25Console.WriteLine(,z2个数直接相乘:"+tl.ToStringO);
26Console.Write("数组与单个数直接相乘:”);
27foreach(varitemint2)Console.Write(item.ToString()+z/
”);
28Console.WriteLine();
29Console.Write("矩阵乘法:”);
30foreach(varitemint3)Console.Write(item.ToString0+
"”);
31Console.ReadKey();
32)
33}
34)
结果如下图所示:
•file:///D:/Work/Matlab/MatlabDemo/TypeSaftTest/bin/De
2个数直接相乘:15
数组与星个数直接相乘:51015
矩阵乘法:22255057
上面就是Matlab和C#基于接口的混合编程的详细过程,混编是一个很有用的工具,
但要用好,其实真的很难,接触混编这么长的时间以来,碰到过很多同学使用这个工具,绝
大部分是误用,导致无故的工作量。要想混编成为自己工作和学习的得力助手,必须加强
Matlab和.NET基础的学习,只有2者的基础掌握好了,足够熟悉这2个平台,你才可能
更顺利的解决混编过程中遇到的问题。当混编出了问题的时候,需要很多经验才能度过难关,
这一点很重要,不要指望学会这个过程,就可以解决所有问题。期待Mathworks公司对
Matlab的混编编程支持越来越强大。
【原创】Matlab.NET混合编程技巧之直接调用Matlab内
置函数
1.传统的Matlab.NET混合编程步骤
传统的Matlab.NET混合编程有2种方式:
DMatlab编写好M函数,利用deploytool编译m函数生成dll,在C#项目中引用并调
用;
2)基于接口的编写方式,也是利用deploytool工具,过程繁琐一点,对编程人员素质要求
高一点,但不需要进行繁琐的数据类型转换。我的博客有一篇文章专门介绍了这个混合编程
方式,也有例子,大家有兴趣的可以看看:
http:〃w/asxinyu/archive/2013/05/16/3082299.html
不管上面用哪种方式,Matlab和C#混编的基本步骤,大概都是下面的过程:
1)编写M函数,并首先在Matlab中测试是正确可以调用的。注意命名规范,注释规范;
2)使用命令打开deploytool工具,设置项目名称,选择类型:.NETAssembly,然后新
建一个类,并添加编写好的M函数
3)编译,生成dll,并在C#项目中添加引用(还需要引用对应版本的MWArray),利用对
象浏览器查看生成dll的方法结构,并根据Matlab和C#的类型转换规则,进行数据转换
即可,如果是接口的编程,这个过程相对要简单。
回到目录
2.深入解析传统混编所生成的代码
2.1第一步:编写M函数,并测试可以使用
为了好我们今天的目的相匹配,特意封装一个简单的内置函数,plot,来画一个简单的图形,
如下所示M函数
1functionPlotTest(n)
2%编写一个简单的函数,对plot进行简单封装一下
3plot(1:n,1:n);
4船则试正确,才可以进行下一步工作
注意,混编必须是m函数function的形式才能被调用。上述函数简单测试一下,没有问题
(复杂的函数一定要多测试,否则后续调试常困难)。继续下一步。
2.2第二步:在Matlab中使用deploytool建立混编项目
在Matlab工作区输入命令:deploytool,然后得到下面界面,输入混编项目的名称,选择
存储位置,关键的是类型那里一定要选择”.NETAssembly",如下图所示:
▼
选择"0K"之后,下一步matlab界面右侧会出现项目解决方案,需要添加类名称和M文
件。这个类名称,就是编译完成之后C#项目中的类对象名称,然后添加我们刚才上一步编
写的"PlotTest.m",然后编译即可,如下图所示:
.NETAssembly…n
QPlotTest.prj▼巴够©▼
BuildPackage
'lasses
©TestDemo
PlotTestm
「Addfilesl
「AddClassi
到此为止,一个常规简单的Matlab.NET混编已经完成了60%了。编译完成之后,打开
"Package"选项卡,即可看到生成的dll文件,然后点击右键,打开文件夹即可,如下图
麻:
.NETAssembly
PlotTest.prj▼3!'d
Build[Package
Package(1KB)
PlotTestdll
>1PlotTest_overview.html
APlotTestNative.dll
readme.txt
「Addfiles/directories]
2.3查看混编生成的代码
这个过程很关键,其实包含很多信息,只不过95%以上的人都没有注意到其实混编生
成的dll是有源文件的,通过查看源文件就应该知道混编的原理,只不过这是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有哪些方法以及
方法的参数类型。直接贴这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编写一个简单的函数,对plot进行简单封装一下
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编写一个简单的函数,对plot进行简单封装一下
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编写一个简单的函数,对plot进行简单封装一下
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///编写一个简单的函数,对plot进行简单封装一下
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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 远程在线安全教育的应用与即时反馈分析
- 跨境电商平台的物流管理与优化策略
- 自我提升的行动清单计划
- 高质量生活与血液病的先进诊断技术
- 2025智能物联网计算终端
- 财务风险管理在教育行业的应用
- 增强前台文员沟通能力的工作计划
- 跨领域科技创新的发展策略研究报告
- 科技类企业如何通过竞品广告提升品牌形象
- 超声科操作技巧解析专家级教程
- 高中历史世界史 试题
- 2023年山东城市建设职业学院单招综合素质考试笔试模拟试题及答案解析
- 中组部2015年版干部履历表-(空表格)
- 昆医大康复治疗技术课件12运动再学习疗法
- 医院入院通知书格式
- 中建三局薪酬管理暂行规定
- 履带式起重机负荷试验及调试报告报审表
- 《黑龙江省住房和城乡建设系统行政处罚裁量基准》
- 发育生物学1-9章全
- 基于单片机的交通信号灯模拟控制系统设计 答辩PPT
- 中国舞蹈家协会《中国舞蹈考级》 第四版教材
评论
0/150
提交评论