c#调用matlab生成的dll

c#调用matlab生成的dll,这个过程分为三步:

1、编写matlab代码

2、将.m文件编译成dll

3、在C#代码里调用dll

打算实现的功能:

       求x*y的二维数组的均方差

一、编写matlab代码

       matlab代码如下:

function result = CalculationVar(img_in, x, y)
    result_std2 = std2(img_in);
    result = [result_std2, x, y];
end

 保存的文件名称为: CalculationVar.m

 img_in 是二维数组,本文是 512*512的二维数组

  x:行数,本文是512

  y:列数,本文是512

二、将.m文件编译成dll

       1. 在matlab的命令行窗口,输入 deploytool

       2. 弹出如下的对话框:

选择Library Compiler,弹出如下对话框:

TYPE栏选择.NET Assembly, 点击 + 号,选择 CalculationVar.m文件,将Class Name 改成 CalculationVarClass,最后点击 Package 按钮, 提示是否保存 CalculationVar.prj,选择是,等待生成

生成完成后,如下所示:

三、在C#代码里调用dll

       新建c# winfrom的工程,界面上放个按钮,如下图

添加引用:CalculationVar.dll 和 MWArray.dll

在  MATLAB\CalculationVar\for_redistribution_files_only 找到 CalculationVar.dll

在  MATLAB\R2018b\toolbox\dotnetbuilder\bin\win64\v4.0 找到 MWArray.dll

点击事件代码如下:

 private void button3_Click(object sender, EventArgs e)
        {
            try
            {
                //构建512*512二维数组
                double[,] arr = new double[512, 512];
                for (int i = 0; i < 512; i++)
                {
                    for (int j = 0; j < 512; j++)
                    {
                        arr[i, j] = 27000 + i + j;
                    }
                }
                CalculationVarClass cvar = new CalculationVarClass();
                MWArray arrs = (MWNumericArray)arr;
                MWArray x = 512;
                MWArray y = 512;

                MWArray result = cvar.CalculationVar(arrs, x, y);
                string strResult = result.ToString();
            }
            catch (Exception ex)
            {
                string error = ex.Message;
            }
        }

最后得到的结果是  209.0231   512.0000   512.0000

 

 

  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

orangapple

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值