测试环境

VisualStudio2013 / .net4.0

Matlab2015b

高版本的matlab对外接其它语言做得很方便了,并不需要一堆的配置。

其它语言与matlab的交互操作也类似。

C#调用Matlab

基本思路:将matlab函数打包成DLL文件,联合matlab数据支持DLL(MWArray.dll),交付给其它语言程序使用。

1、Matlab端的操作

编写matlab函数:

function [result,m,n] = GetSelfMultiplyResult(list)

% 计算 矩阵与其转置矩阵的乘积

% 测试返回多个结果

result = list*list';

[m,n] = size(result);

end

function result = GetSelfSquareResult(list)

% 计算 矩阵各元素平方后的结果

result = list.^2;

end

打包函数:

找到库编译器(LibraryCompiler)

打包函数

如下图所示,

1)选择目标类型(TYPE);

2)添加需要打包的函数文件;

3)重命名库名称。

重命名类名称,或者添加类,分配函数所属类。完成打包操作。

在生成的文件中,找到“for_redistribution_files_only”文件夹,里面有

CalcMatResult.dll CalcMatResultNative.dll 两个dll文件,均可使用。

另外,MWArray.dll 在matlab安装目录中,参考路径:

X:\Program Files\MATLAB\R2015b\toolbox\dotnetbuilder\bin\win64\v2.0\

也可以直接使用Everything等软件直接搜索。

2、C#端的操作

C#端用到的就是 MWArray.dll 和 CalcMatResultNative.dll 这两个DLL文件。

添加DLL引用

演示代码

using System;

using CalcMatResultNative; //添加引用

using MathWorks.MATLAB.NET.Arrays; //添加引用

namespace CsharpMatlabDemo

{

class Program

{

static void Main(string[] args)

{

int[,] list ={{1},{2},{3},{4}}; //列向量

MWArray array = new MWNumericArray(list);

CalcMatResultNative.Multiply multi = new Multiply();

object resultObj = multi.GetSelfMultiplyResult(3, array);// 3 表示返回的结果数量,要小于等于matlab对应函数实际的返回值数量

object[] resultObjs = (object[]) resultObj;

double[,] calcResult = (double[,])resultObjs[0];

double[,] sizem = (double[,])resultObjs[1];

double[,] sizen = (double[,])resultObjs[2];

Console.ReadKey();

}

}

}

Matlab调用C#

matlab调用C#更加简单,先将C#代码编译成dll库,matlab中直接引用即可调用。

如果失败,注意检查使用的.net版本是否过高,平台(x64/86)是否匹配等问题。

注意选择Release版本的DLL(C#的Bebug版本也可以引用,但C++的不行)。

1、C#端操作

代码

namespace MatlabInterface

{

public class Dialog

{

public static bool ShowSelectMsg(string msg, string title)

{

DialogResult r = MessageBox.Show(msg, title, MessageBoxButtons.YesNo, MessageBoxIcon.Question);

return r == DialogResult.Yes;

}

public string Msg { get; set; }

public void ShowMsg()

{

MessageBox.Show(Msg, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

}

}

}

2、Matlab操作

% 调用C# dll

% 引用绝对路径

NET.addAssembly('R:\Users\GrassPhy\Desktop\MatlabCsharpDemo\MatlabInterface.dll');

% 静态方法调用

select = MatlabInterface.Dialog.ShowSelectMsg('请选择...','提示');

if select

disp('yes');

else

disp('no');

end

% 成员方法调用

dialog = MatlabInterface.Dialog();

dialog.Msg = '提示信息';

dialog.ShowMsg();

c# 调matlab传字符串_C# Matlab 相互调用相关推荐

  1. c# 调matlab传字符串_c#调用matlab函数(混合编程)

    第 2 部分 实战练习(自己做的) 2.1 c# 调用 matlab 函数 matlab 版本 2009b , c# 版本 vs2008. 2.1.1 matlab 函数编译成 dll 文件 ( 1 ...

  2. MATLAB 存放字符串(循环中调用字符串)

    MATLAB 存放字符串(循环中调用字符串) str=['asdfs';'sdadas';'qweqweqwe'];for i=1:3str(i,:) end 用分号隔开就可以调用了,比如在写图片标题 ...

  3. matlab 传字符串,在Simulink中将字符串传递给MATLAB函数

    Simulink不支持字符串 . 喜欢,任何地方 . 它真的很糟糕,我不知道为什么存在这种限制 - 对我来说这似乎是一个非常糟糕的设计选择 . 我找到了以下解决方法: 脏铸造 让 function y ...

  4. matlab输入字符串函数,MATLAB字符串函数

    MATLAB提供了大量的字符串函数,包括列在表6.3当中的. 表6.3 字 符 串 函 数 eval(string) 作为一个MATLAB命令求字符串的值 eval(try,catch) blanks ...

  5. matlab中字符串清空,matlab字符串处置(转)

    matlab字符串处理(转) matlab字符串处理 %字符串处理 a='  a';b='b  b';c='cccc';m='' %获取字符串长度 length(a) %连接两个字符串,每个字符串最右 ...

  6. matlab rand字符串,在MatLab中生成随机字符串

    所以这里有一个解决方案,它提供满足以下规则的所有字符串: 起始和结束字符必须来自字符串: start_end_char= 'jqvfxgbdz'; 长度必须在4到8个字符之间 该字符串必须顺序正确 . ...

  7. matlab 将字符串分割,matlab字符分割方法

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 以下是我编的,您给看一下,往下我就不会了.....希望您能帮帮我 clear all close all i=imread('C:\Users\lenov ...

  8. matlab 数组中查找字符串长度,Matlab 之 字符串数组查找

    Matlab的优势在于向量操作,字符串操作往往费时费力,但是如果能充分利用Matlab自带的一些函数,也可以取得不错的效果.下面就介绍一下字符串数组查找的小技巧. 字符串数组我通常会选择应用cell格 ...

  9. matlab与maple互联,Matlab,Maple和Mathematica三款主流科学计算软件的互操作

    本文根据网上零散的信息以及这三款软件自带的说明文档整理而成,为备忘而记录.记录了Matlab和Maple之间的相互调用,以及Matlab和Mathematica之间相互调用的安装配置方法. 为何需要互 ...

最新文章

  1. 将阿拉伯数字转换为其对应的中文数字
  2. python【蓝桥杯vip练习题库】BASIC-27 2n皇后问题(八皇后问题 搜索)
  3. themeleaf跳转锚链接
  4. WebPart(汇总)[转载]
  5. 0bjective-c 之 NSString 使用详解
  6. PHP-代码审计-ini配置文件
  7. 【转载】intellij idea如何将web项目打成war包
  8. 「协方差」与「相关系数」的概念
  9. 局域网内Windows允许其他电脑指定IP访问本地mysql-8.0.23数据库
  10. 代码合并工具_11个代码质量审核和管理工具,程序员必备!
  11. chmod 更改权限
  12. hashmap java 便利_java HashMap 循环遍历map的方法
  13. h3c服务器怎么更换无线密码,如何更换无线网密码_怎么更换无线网密码?-192路由网...
  14. 通信协议之IIC总线
  15. RecyclerView通用适配器
  16. android获取安卓版本,Android获取手机系统版本等信息的方法
  17. 用R语言开始量化投资
  18. Kubernetes实战吴龙辉
  19. 直流电机电压调速器设计
  20. 红色大气年终工作总结PPT模板

热门文章

  1. Pandas实战教程 | DataFrame连接 pd.concat()
  2. 基于外卖评论的舆情风控
  3. 微信QQ聊天记录分析工具-微Q
  4. Istio:一个用于微服务间通信的服务网格开源项目
  5. spring源码分析之@Conditional
  6. 跨域post请求实现方案小结--转
  7. Python数据结构与算法(第一天)
  8. 用sql统计vintage,滚动率,迁移率,逾期率
  9. ubuntu下安装vue-cli后输入vue提示无法找到vue命令解决办法
  10. 你有哪些deep learning(rnn、cnn)调参的经验