C#(winform) 调用MATLAB函数

测试环境

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%可以解决

相关推荐

  1. Matlab调试bug常用函数try和catch

    2024-04-01 11:16:04       44 阅读
  2. 拷贝函数调用时机

    2024-04-01 11:16:04       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-01 11:16:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-01 11:16:04       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-01 11:16:04       82 阅读
  4. Python语言-面向对象

    2024-04-01 11:16:04       91 阅读

热门阅读

  1. 微信小程序 - 用promise封装wx.request

    2024-04-01 11:16:04       41 阅读
  2. leetcode - 2444. Count Subarrays With Fixed Bounds

    2024-04-01 11:16:04       32 阅读
  3. rust - windows下实现捕获ctrlc信号

    2024-04-01 11:16:04       30 阅读
  4. windows本地访问局域网tensorboard

    2024-04-01 11:16:04       33 阅读
  5. 理解vue2中的响应式数据

    2024-04-01 11:16:04       39 阅读
  6. 普中51单片机学习笔记——点亮第一个LED

    2024-04-01 11:16:04       40 阅读
  7. postgresql wal 源码核心模块概述

    2024-04-01 11:16:04       29 阅读