matlab和c#联合仿真之三

在将解决方案的Matlab由2008a升级到2009a之前,我想当然的认为那将是一件非常简单的事情,因为Matlab应该是向下兼容的。

于是一开始我直接将用08a编写的.m文件在09a中直接进行打包,可惜在C#中调用相应的Matlab类库时提示错误。在郁闷了许久之后,终于找到了出错的原因。

下面,不妨先通过一些非常有趣的小实验来说明我发现的问题吧!

测试用的项目为教程二中创建的项目,仅在其基础上修改.m文件并进行测试。

以下为测试列表:

测试一:在.m文件中添加一行warning。

测试二:在.m文件中添加两行warning(连续)。

测试三:在.m文件中添加两行warning(不连续)。

测试四:在.m文件中添加一行warning+一行disp(连续)。

测试五:在.m文件中添加一行warning+一行disp(不连续)。

测试六:在.m文件中添加一行disp+一行warning(连续)。

测试七:在.m文件中添加一行disp+一行warning(不连续)。

测试八:在.m文件中添加一行disp。

测试九:在.m文件中添加两行disp(连续)。

测试十:在.m文件中添加两行disp(不连续)。

测试十一:在.m文件中添加多行disp。

测试十二:在.m文件中有一行无分号(为了在Command Window中显示变量值,以下同理)。

测试十三:在.m文件中有一行无分号+一行disp。

测试十四:在.m文件中有两行无分号(连续)。

测试十五:在.m文件中有两行无分号(不连续)。

以下应该还有很多可能的测试,不过就先测这么多,已经能够说明一些问题了

测试一:在.m文件中添加一行warning。

在twice.m文件中增加一行warning代码,如图所示。

image

重新编译并执行,可以顺利通过。

测试二:在.m文件中添加两行warning(连续)。

在twice.m文件中增加两行连续的warning代码,如图所示。

image

重新编译并执行,将会发现如下错误:

image

测试三:在.m文件中添加两行warning(不连续)。

在twice.m文件中增加两行不连续的warning代码,如图所示。

image

重新编译并执行,出现和测试三一样的错误:

image

测试四:在.m文件中添加一行warning+一行disp(连续)。

在twice.m文件中增加连续的一行warning+一行disp代码,如图所示。

image

重新编译并执行,这次提示的是disp的错误:

image

测试五:在.m文件中添加一行warning+一行disp(不连续)。

在twice.m文件中增加不连续的一行warning+一行disp代码,如图所示。

image

重新编译并执行,出现和测试四一样的错误:

image

测试六:在.m文件中添加一行disp+一行warning(连续)。

在twice.m文件中增加连续的一行disp+一行warning代码,如图所示。

image

重新编译并执行,这次提示的是warning的错误:

image

测试七:在.m文件中添加一行disp+一行warning(不连续)。

在twice.m文件中增加不连续的一行disp+一行warning代码,如图所示。

image

重新编译并执行,出现和测试六一样的错误:

image

测试八:在.m文件中添加一行disp。

在twice.m文件中增加一行disp代码,如图所示。

image

重新编译并执行,可以顺利通过。

测试九:在.m文件中添加两行disp(连续)。

在twice.m文件中增加连续的两行disp代码,如图所示。

image

重新编译并执行,可以顺利通过。

测试十:在.m文件中添加两行disp(不连续)。

在twice.m文件中增加不连续的两行disp代码,如图所示。

image

重新编译并执行,可以顺利通过。

测试十一:在.m文件中添加多行disp。

在twice.m文件中增加多行disp代码,如图所示。

image

重新编译并执行,可以顺利通过。

测试十二:在.m文件中有一行无分号(为了在Command Window中显示变量值,以下同理)。

在twice.m文件中增加一行无分号的代码,如图所示。

image

重新编译并执行,可以顺利通过。

测试十三:在.m文件中有一行无分号+一行disp。

在twice.m文件中增加一行无分号+一行disp代码,如图所示。

image

重新编译并执行,提示disp错误:

image

测试十四:在.m文件中有两行无分号(连续)。

在twice.m文件中增加两行连续的无分号代码,如图所示。

image

重新编译并执行,提示出错,如图所示。

image

测试十五:在.m文件中有两行无分号(不连续)。

在twice.m文件中增加两行不连续的无分号代码,如图所示。

image

重新编译并执行,出现和测试十四同样的错误:

image

好啦,看了上面这么多的实验,大家应该看出来一点什么了吧!

Matlab 2009a貌似比Matlab 2008a严格的多,即最多只允许打包的代码中向Command Window执行一行输出,否则就会报错。

因此在进行版本升级的时候,必须修改相应的.m文件,尽可能让其不向Command Window中输出任何信息。

此外,考虑到版本的兼容性,2009a还会经常自作聪明的提示你某个方法已过期,这就会造成不必要的输出。

好吧,对于这种情况,我就在下一教程中介绍一个瞒天过海的方法!

(欢迎继续关注!)

参考文献:

1. http://www.cnblogs.com/horizon_king/archive/2011/01/21/1941387.html

原文地址:https://www.cnblogs.com/xlw1219/p/2749263.html