C#调用matlab编译的DLL 您所在的位置:网站首页 matlab的dll文件 C#调用matlab编译的DLL

C#调用matlab编译的DLL

2024-07-15 14:05| 来源: 网络整理| 查看: 265

本文介绍了如何将matlab中的函数封装成DLL,并在C#中调用。

1、准备打包的函数,将matlab中生成Butterworth滤波器系数的函数进行封装。

function out = getFilterCoe(N,wn) [num,den] = butter(N,wn); out = [num,den]; end

2、在matlab中输入"libraryCompiler"打开MATLAB Compiler (1) 第1步选择".NET Assembly"; (2) 第2步通过右侧的"加号"选择文件"getFilterCoe.m"; (3) 第3步修改输出的DLL的名称,此处DLL名称为"Butterworth"; (4) 第4步修改类的名称为"FilterCoe"; (5) 第5步点击"Package"开始打包。

3、打包完成后当前文件夹下生成了一个名为"getFilterCoe"的目录,该目录下有三个文件夹和一个文件。

(1) for_redistribution目录下是一个名为MyAppInstaller_web.exe的程序,该程序引导式的安装生成的DLL和MATLAB的runtime。 (2) for_redistribution_files_only目录包含了部署所需要的文件。 (3) for_testing除了部署所需文件之外,还提供了一些源码。 (4) PackagingLog.html是打包日志。

4、创建C#项目 项目中引用"MWArray.dll"和for_redistribution_files_only目录中的"Butterworth.dll",其中"MWArray.dll"位于C:\Program Files\MATLAB\R2018a\toolbox\dotnetbuilder\bin\win64\v4.0\MWArray.dll

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using MathWorks.MATLAB.NET.Arrays; using Butterworth; namespace Butterworth {     class Program     {         static void Main(string[] args)         {             double fs = 2048;             double cutoff = 512;             FilterCoe filter = new FilterCoe();             MWArray N = 4;             MWArray wn = cutoff / (fs / 2);             MWArray SOS = filter.getFilterCoe(N, wn);             double[,] coe = (double[,])SOS.ToArray();             Console.WriteLine(coe.Length);             Console.ReadKey();         }     } }

5、错误处理

FilterCoe filter = new FilterCoe(); 这一句可能会报下面的错误。

查看错误详细信息发现是由于找不到"mclmcrrt9_4.dll"导致的

解决方法:安装对应matlab版本的MCR(Matlab compiler runtime),重启VS即可。 MCR下载地址: https://ww2.mathworks.cn/products/compiler/matlab-runtime.html



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有