如何自建网站入口,佛山网站推广seo,wordpress+外网无法访问,网站 运营工作如何做工作中遇到一个需求#xff0c;有一部分算法的代码需要MATLAB来进行处理#xff0c;而最后需要集成到C#中的wpf项目中去#xff0c;选择灵活性更高的dll#xff0c;去进行集成。#xff08;可以简单理解为#xff1a;将MATLAB的函数#xff0c;变为C#中类的函数成员有一部分算法的代码需要MATLAB来进行处理而最后需要集成到C#中的wpf项目中去选择灵活性更高的dll去进行集成。可以简单理解为将MATLAB的函数变为C#中类的函数成员进行相关调用和函数编写 对于MATLAB的程序部分不需要知道里面的MATLAB具体语法逻辑它提供一个函数函数可能需要传入参数或许会有输出。 接下来我将通过一个示例来讲解一下将MATLAB接入wpf项目中并且测试其效果。
1. 原始MATLAB程序一个后缀为.m的文件 用MATLAB软件打开可以看到也就是这个.m文件具体能够实现什么功能点为了保密原则我将无关信息打码。内容主要就是一个函数函数输入一个需要处理的数据所在的路径最后输出处理的结果。MATLAB中用 function end 来定义函数 在原始软件中调用也很简单和普通的函数调用一样在命令行窗口输入函数名加上参数回车即可运行会输出函数调用结果。 2.将MATLAB程序转为dll
1 下载MCR
命令行窗口输入mcrversion 看是否有下载MCR 如果提示没有就 输入命令下载 mcrinstaller 或者自己去官网找相关的版本下载 等待下载完成后再次输入指令 mcrinstaller 有路径则说明下载成功 2MATLAB程序打包为dll
命令行输入deploytool选择library complier选择指定项、添加自己的.m文件如果有多个.m文件在第二步全部添加即可、修改类名可改可不改c#中调用时会用 设置好后点击packet 打包等待打包完成 会生成如下的文件结构 生成的dll文件在for_redistribution_files_only里 3) 将dll引入wpf程序
1. 将readUSBData.dllMATLAB程序生成的dll文件复制到C#文件目录bin\Debug文件夹下
2.将MWArray.dll文件也复制到C#文件目录bin\Debug文件夹下自行去安装位置寻找 3. 项目中添加引用 添加using引用
using MathWorks.MATLAB.NET.Arrays; using MathWorks.MATLAB.NET.Utility;
调用如下 或者也可以在右边打开对象浏览器来查看该dll的结构 4修改运行的目标平台为 x64 修改后如下 运行效果如下和MATLAB中输出保持一致 3. 文档看不明白的话强推视频跟着操作即可
链接
https://www.bilibili.com/video/BV1Z54y157qz/?spm_id_from333.337.search-card.all.clickvd_source2d0578bc27bdc3553296e35d0c76de2d
参考文章 https://www.cnblogs.com/eniac12/p/4390845.html
https://www.cnblogs.com/straight/p/14612246.html
https://blog.csdn.net/yty2545340913/article/details/123127784
附代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;using MathWorks.MATLAB.NET.Arrays;
using MathWorks.MATLAB.NET.Utility;namespace CSDNT
{/// summary/// MainWindow.xaml 的交互逻辑/// /summarypublic partial class MainWindow : Window{public MainWindow(){InitializeComponent();}/// summary/// 测试dll的button 后台代码逻辑/// /summary/// param namesender/param/// param namee/paramprivate void test_click(object sender, RoutedEventArgs e){readUSBdata.Test test new readUSBdata.Test();var result test.readUSBdata(C:\Users\rangu\Desktop\test\11);Console.WriteLine(result);}}
}xaml