zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    [BZOJ1565][NOI2009]植物大战僵尸
    [BZOJ1566][NOI2009]管道取珠
    [BZOJ4104][Thu Summer Camp 2015]解密运算
    [BZOJ1003][ZJOI2006]物流运输
    [BZOJ3790]神奇项链
    指纹模块原理_光学指纹模块原理
    Ubuntu 16.04无损分区大小调整工具Gparted
    16进制转换10进制
    Memory Ordering in Modern Microprocessors
    python 多态
  • 原文地址:https://www.cnblogs.com/xlw1219/p/2749263.html
Copyright © 2011-2022 走看看