日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

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

發布時間:2025/3/21 C# 63 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c# 调matlab传字符串_C# Matlab 相互调用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

測試環境

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 相互调用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。