关于matlab与c混合编程的问题_第1页
关于matlab与c混合编程的问题_第2页
关于matlab与c混合编程的问题_第3页
关于matlab与c混合编程的问题_第4页
关于matlab与c混合编程的问题_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

关于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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论