zoukankan      html  css  js  c++  java
  • c#与matlab混合编程探索

    以下讲述如何使用c#来调用matlab函数实现北斗定位算法的仿真

    1.准备

    首先需要matlab2010,vs2010(其他版本是否可行,未知),另外需要安装matlab的辅助工具MCRInstaller(该工具无需下载,在安装好的matlab程序包中可以找到,例如:E:matlab 2010 oolboxcompilerdeploywin32)

    2.准备matlab程序

    上述截图是我的定位程序所涉及到的函数

    3.matlab程序处理为dll文件,供c#调用,处理的基本步骤如下:

    (1)打开matlab,选择File->New->Deployment Project,按如图填写(其中前俩个空需要自己填写对应自己的内容),其中Name相当于c#中的命名空间

    (2)点击ok之后,出现如下的界面,在build中点击Add class建立类,名称为demo(这里的名字可以任意取,相当于c#中的类),点击demo下的Add files选择自己的matlab函数,完成之后,截图如下:

    (3)完成上述操作之后,点击右上角按钮Build开始生成dll文件,这个过程需要几分钟,请耐心等待

    然后会生成1个文件和一个文件夹,请将文件夹location(针对我自己的名称)下的文件夹src中的location.dll拷贝出来

    以上即完成了matlab的操作,接下来是c#的操作

    4.c#语言编北斗定位界面如下:

    接下来需要完成的步骤如下:

    (1)这里最重要的是对按钮“开始计算”代码的编写,代码如下(下面会对代码进行解释):

     1  location.demo output = new location.demo();
     2             MWArray[] PO = output.main(3, year, month, day, hour, min1, sec,Xu,Yu,Zu);
     3             MWNumericArray po1 = (MWNumericArray)PO[0];
     4             MWNumericArray po2 = (MWNumericArray)PO[1];
     5             MWNumericArray po3 = (MWNumericArray)PO[2];
     6             po1_d = (double)po1;
     7             po2_d = (double)po2;
     8             po3_d = (double)po3;
     9 
    10             textBox3.Text = po1_d.ToString();
    11             textBox4.Text = po2_d.ToString();
    12             textBox5.Text = po3_d.ToString();

    下面按行号解释:

    第1行实力化命名空间location.demo,注意这里matlab函数所形成的命名空间不要与所编写界面的命名空间相同,可能会出现意外的错误,稍加留意。

    第2行为c#调用matlab函数进行求解的关键,其中main是我的定位程序的主函数,这里曾遇到过许多为题:

    问题之一:MWMCR::EvaluateFunction error ... Error using ==> main Too many output arguments,这个原因是困扰我最大的一个问题,之前理解的是main后面的第一个参数为输入参数的个数,填写的为6一直出现上述错误,经查找发现这里代表的意思为输出参数的个数,我的输出参数有3个,故这里应该填写3,而不是6。

    第3-5行为将所求参数赋值给变量

    第6-8行为对变量进行类型转换

    第10-12行为对数值进行显示,显示在相应的textbox中

    5.经上述所有的步骤之后即可运行程序,运行结果如下:

    PS:如有问题,欢迎交流,如需程序,qq:369274019。

  • 相关阅读:
    《C++ Primer》读书笔记—第十章 泛型算法
    悬浮在activity上的activity对话框
    android 双向滑动 稍加改进,可做成QQHD效果
    android String.format
    使用ttf字体
    UI界面设计准则
    scrollview gn gridview混合使用问题
    android Activity 之间传递复杂对象
    android程序获取手机imei方法
    android 自定义对话框
  • 原文地址:https://www.cnblogs.com/comeonboy/p/3754085.html
Copyright © 2011-2022 走看看