C#(winform) 调用MATLAB函数

news2024/11/29 2:49:51

测试环境

VisualStudio2022 / .NET Framework 4.7.2
Matlab2021b
参考:C# Matlab 相互调用

Matlab

1、编写Matlab函数

可以没有任何参数单纯定义matlab处理的函数,输出的数据都存在TXT中用以后期读取数据

function [result,m,n] = TEST(list)
% 计算 矩阵与其转置矩阵的乘积
% 测试返回多个结果
result = list*list';
[m,n] = size(result);

% 文件名
filename = 'result.txt';
%  将矩阵存入TXT
writematrix(result,filename);
end

2、打包Matlab函数

  1. APP中找到库编译器 Library Compiler
    在这里插入图片描述
  2. 打包函数
    1)选择目标类型(TYPE)
    2)添加需要打包的函数文件
    3)重命名库名称
    4)重命名类名称,或者添加类,分配函数所属类
    5)打包操作
    如下图所示在这里插入图片描述
  3. 生成打包文件

在这里插入图片描述
 &emsp在生成的文件中,找到 “for_redistribution_files_only” 文件夹,里面有 TESTNative.dll 和TEST.dl l两个dll文件,均可使用。另外在c#还需要用格式进行转换,需要MWArray.dll。该文件在Matlab安装目录中,参考路径:
X:\Program Files\MATLAB\R2021b\toolbox\dotnetbuilder\bin\win64\vX.0\ x表示不同安装的不同路径
在这里插入图片描述

C#

1、效果演示

  1. 添加引用 TESTNative.dll 和 MWArray.dll
    在这里插入图片描述
  2. C#调用代码
    这里用一个按键控件做演示,在该按键的触发函数中调用Matlab函数
    在这里插入图片描述
//添加引用
using System;
using TESTNative;
using MathWorks.MATLAB.NET.Arrays; 

//触发代码
private void TEST_Click(object sender, EventArgs e)
        {
            int[,] list = { { 1 }, { 2 }, { 3 }, { 4 } }; //列向量
            MWArray array = new MWNumericArray(list); //转换list格式

            TESTNative.Cal ts = new Cal();//定义目标类
            object resultObj = ts.TEST(1, array);// 1表示返回的结果数量,要小于等于Matlab对应函数实际的返回值数量
            //转换返回值
            object[] resultObjs = (object[])resultObj;
            double[,] calcResult = (double[,])resultObjs[0];
        }

点击按键触发函数,生成的矩阵结果存入TXT中
在这里插入图片描述

2、遇到的问题记录

  1. 无法运行,提示下图错误
    在这里插入图片描述
    解决办法: 在项目属性中将生成的目标平台该为x64
    在这里插入图片描述
  2. 点击按键时,可能会出现串口分辨率变化的情况
    Matlab代码在运行过程中窗口大小改变了。
    解决方法: 首先确认.m代码中没有修改窗口大小的代码,然后屏幕设置里调整屏幕缩放大小为100%可以解决

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1559905.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据分析之Tebleau 的度量名称和度量值

度量名称 包含所有的维度 度量值 包含所有的度量 度量名称包含上面所有的维度,度量值包含上面所有的度量 当同时创建两个或两个以上度量或维度时,会自动创建度量名称和度量值 拖入省份为行(这会是还没有值的) 可以直接将销售金额拖到数值这里 或者将销售…

Kafka 学习之:基于 flask 框架通过具体案例详解生产消费者模型,这一篇文章就够了

文章目录 案例信息介绍后端异步处理请求和后端同步处理请求同步方式异步方式 环境文件目录配置.envrequirements.txt 完整代码ext.pyapp.pykafka_create_user.py 运行方式本地安装 kafka运行 app.py使用 postman 测试建立 http 长连接,等待后端处理结果发送 RAW DAT…

# 达梦数据库知识点

达梦数据库知识点 测试数据 -- SYSDBA.TABLE_CLASS_TEST definitionCREATE TABLE SYSDBA.TABLE_CLASS_TEST (ID VARCHAR(100) NOT NULL,NAME VARCHAR(100) NULL,CODE VARCHAR(100) NULL,TITLE VARCHAR(100) NULL,CREATETIME TIMESTAMP NULL,COLUMN1 VARCHAR(100) NULL,COLUMN…

ARP原理

解析原理 动态ARP通过广播ARP请求和单播ARP应答这两个过程完成地址解析 当需要通信的两台主机处于同一网段时,如上图中的Host_1和Host_3,Host_1要向Host_3发送数据。 首先,Host_1会查找自己本地缓存的ARP表,确定是否包含Host_3对…

精通Go语言文件上传:深入探讨r.FormFile函数的应用与优化

1. 介绍 1.1 概述 在 Web 开发中,文件上传是一项常见的功能需求,用于允许用户向服务器提交文件,如图像、文档、视频等。Go 语言作为一门强大的服务器端编程语言,提供了方便且高效的方式来处理文件上传操作。其中,r.F…

155 Linux C++ 通讯架构实战10,工具telent 和 wireshark的使用

telnet工具使用介绍 windows 上开启telnet linux 上开始telnet 使用telnet //是一款命令行方式运行的客户端TCP通讯工具,可以连接到服务器端,往服务器端发送数据,也可以接收从服务器端发送过来的信息; //类似nginx5_1_1_clie…

IO流c++

IO流类库 输入输出流 #include <iostream> using namespace std;class InCount { public:InCount(int a 0, int b 0){c1 a;c2 b;}void show(void){cout << "c1" << c1 << "\t" << "c2" << c2 << …

Go 语言学习一篇入门

Goloang的优缺点 Goloang的优点 极其简单的部署方式 可直接编译成机器码不依赖其他库直接运行即可部署 语言层面的并发 天生的基因支持充分的利用多核 强大的标准库 runtime 系统调度机制高效的GC垃圾回收丰富的标准库 Goloang的不足 包管理&#xff0c;大部分包都在g…

MultiPath HTTP:北大与华为合作部署FLEETY

当前的终端基本都能支持蜂窝网络和wifi网络&#xff0c;然而&#xff0c;不同的网络通路都不可避免的会出现信号不好或者其他因素引起的通路性能(吞吐量、时延等)下降。为了能够提升终端业务体验&#xff0c;很多不同的MultiPath方案被提出&#xff0c;其中&#xff0c;包括应用…

(文章复现)考虑分布式电源不确定性的配电网鲁棒动态重构

参考文献&#xff1a; [1]徐俊俊,吴在军,周力,等.考虑分布式电源不确定性的配电网鲁棒动态重构[J].中国电机工程学报,2018,38(16):4715-47254976. 1.摘要 间歇性分布式电源并网使得配电网网络重构过程需要考虑更多的不确定因素。在利用仿射数对分布式电源出力的不确定性进行合…

Decoupled Multimodal Distilling for Emotion Recognition 论文阅读

Decoupled Multimodal Distilling for Emotion Recognition 论文阅读 Abstract1. Introduction2. Related Works2.1. Multimodal emotion recognition2.2. Knowledge distillation3. The Proposed Method3.1. Multimodal feature decoupling3.2. GD with Decoupled Multimodal …

【Gd2O3】Gd2O3栅极电介质增强GaN器件的可靠性

【Effects of Gd2O3 Gate Dielectric on Proton-Irradiated AlGaN/GaN HEMTs】 概括总结&#xff1a; 该研究探讨了质子辐射对使用Gd2O3作为栅极电介质的AlGaN/GaN高电子迁移率晶体管&#xff08;HEMTs&#xff09;的影响。通过对比肖特基栅极HEMTs和MOS-HEMTs在2 MeV质子辐射…

SOC内部集成网络MAC外设+ PHY网络芯片方案:MII/RMII 接口与 MDIO 接口

一. 简介 本文来了解一下常用的一种网络硬件方案&#xff1a;SOC内部集成网络MAC外设 PHY网络芯片方案。 其中涉及的 MII接口&#xff0c;RMII接口&#xff08;MII接口与RMII接口二选一&#xff09;&#xff0c;MDIO接口&#xff0c;RJ45。 二. MII/RMII 接口&#xff0c;M…

数据挖掘|贝叶斯分类器及其Python实现

分类分析|贝叶斯分类器及其Python实现 0. 分类分析概述1. Logistics回归模型2. 贝叶斯分类器2.1 贝叶斯定理2.2 朴素贝叶斯分类器2.2.1 高斯朴素贝叶斯分类器2.2.2 多项式朴素贝叶斯分类器 2.3 朴素贝叶斯分类的主要优点2.4 朴素贝叶斯分类的主要缺点 3. 贝叶斯分类器在生产中的…

随便注【强网杯2019】

大佬的完整wp&#xff1a;buuctf-web-[强网杯 2019]随便注-wp_取材于某次真实环境渗透,只说一句话:开发和安全缺一不可-CSDN博客 知识点&#xff1a; 单引号字符型绕过堆叠注入 可以执行多条语句multi_query()&#xff1a;该函数可能引发堆叠注入handler用法 mysql专属&#…

面试题:JVM 调优

一、JVM 参数设置 1. tomcat 的设置 vm 参数 修改 TOMCAT_HOME/bin/catalina.sh 文件&#xff0c;如下图 JAVA_OPTS"-Xms512m -Xmx1024m" 2. springboot 项目 jar 文件启动 通常在linux系统下直接加参数启动springboot项目 nohup java -Xms512m -Xmx1024m -jar…

动态内存管理-错题合集讲解

空指针的解应用操作&#xff08;错误信息合集&#xff09; 越界访问 首先我们上一个代码&#xff0c;看看这个的代码的问题 这个代码的问题显而易见 &#xff0c;就是在循环里面&#xff0c;产生了越界访问的问题&#xff0c;这里你开辟了10个整形空间&#xff0c;但是从0-1…

谈谈MVCC机制

在MySQL中&#xff0c;MVCC&#xff08;多版本并发控制&#xff09;是InnoDB存储引擎使用的并发控制机制。它提供对数据的并发访问&#xff0c;并确保多用户环境中数据的一致性和隔离性。 InnoDB通过“Undo log”存储每条记录的多个版本&#xff0c;提供历史记录供读取&#x…

Python数据结构与算法——数据结构(链表、哈希表、树)

目录 链表 链表介绍 创建和遍历链表 链表节点插入和删除 双链表 链表总结——复杂度分析 哈希表(散列表) 哈希表介绍 哈希冲突 哈希表实现 哈希表应用 树 树 树的示例——模拟文件系统 二叉树 二叉树的链式存储 二叉树的遍历 二叉搜索树 插入 查询 删除 AVL树 …

后端SpringBoot+Mybatis 查询订单数据库奇怪报错加一

排错过程&#xff1a; 看报错意思是SQL语句存在错误&#xff0c;然后使用图形化工具运行这个SQL语句 其实这里稍微细心想一下就能发现问题&#xff0c;但是当时没深入想&#xff0c;就觉得order表前加了数据库名字影响不大&#xff0c;所以感觉SQL语句是没问题的&#xff0c;然…