• 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

  • 相关阅读:
    Linux数据库还原备份
    loadrunner遇到的问题
    Maven基础入门与核心知识
    数据去中心化的场景与流程
    设计模式:灵活编程(观察者模式)
    使用Mycat构建MySQL读写分离、主从复制、主从高可用
    设计模式:灵活编程(装饰模式)
    设计模式:灵活编程(组合模式)
    Laravel5:重定向 redirect 函数的详细使用
    设计模式:对象生成(单例、工厂、抽象工厂)
  • 原文地址:https://www.cnblogs.com/xlw1219/p/2749263.html
Copyright © 2020-2023  润新知