VB.net 调用matlab引擎计算

1、新建VB.net工程,添加按钮控件;

2、VS中,项目->添加引用,打开“添加引用对话框”。在COM标签中选择“Matlab Application (Version 7.11) Type Library“,点击“确定”;

3、matlab中编写m文件,保存为EngineTest.m文件('E:\储层伤害项目\matlab program\matlabcodesEngine')

这里有输入、输出、绘图

function y=EngineTest(xmax)
x=[0:1:xmax]
y=sin(x)
plot(y)
end

 

3、按钮的click事件中填写如下代码

注意PutFullMatrix、GetFullMatrix连个函数分别有四个参数,含义分别为:

Name(String):Matlab函数名

WorkSpace(String):有三种取值:"base"       默认工作空间输出name的mxArray结构体
                                                      "global"     全局工作空间
                                                      "caller"       MEX中使用,该取值已无意义

Pr:输入或输出参数的实部

Pi:输入或输出参数的虚部

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim a As MLApp.MLApp = New MLApp.MLApp ‘定义a为matlab对象
        Dim xmaxreal As Double = {100}                       '定义输入数据的实部
        Dim xmaximag() As Double = {100}                   ’定义输入数据的虚部
        a.PutFullMatrix("xmax", "base", xmaxreal , xmaximag) ‘想matlab发送输入数据xmax(实部xmaxreal,虚部xmaximag)

        a.Execute("path(path,'E:\储层伤害项目\matlab program\matlabcodesEngine')")’设置matlab当前工作路径,否则可能找不到自定义的matlab函数
        a.Execute("Result = EngineTest(xmax)")‘调用matlab函数EngineTest(保存在EngineTestm中)。

       ’第一种输入参数定义方法(这里的100是根据matlab函数中实际大小定的)

        Dim prResult(100) As Double   'OK too
        Dim piResult(100) As Double

       ’第二种输入参数定义方法(这里的100是根据matlab函数中实际大小定的)

        'Dim prResult As Array = Array.CreateInstance(GetType(Double), 11) 'OK
        'Dim piResult As Array = Array.CreateInstance(GetType(Double), 11)
        Call a.GetFullMatrix("Result", "base", prResult, piResult)‘从Result中得到matlab的计算结果

         a.Quit()
    End Sub


原文网址:点击打开链接

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值