没有合适的资源?快使用搜索试试~ 我知道了~
Matlab与C_混合编程.pdf
需积分: 50 5 下载量 31 浏览量
2019-11-28
20:52:51
上传
评论
收藏 1.57MB PDF 举报
温馨提示
Matlab与C#混合编程的实现 关于matlab与c#之间一些数据类型的转换的方法,我也曾经写过。总结一下,最主要的是要完成下面几个步骤: 1、同时安装.netframwork与MCR(matlab compile runtime)。这个在装完vs.net与matlab以后,前面2个组件也就安装好了。 2、利用matlab自带的.nettool工具将.m文件转换成.net组件--->.dll文件为接口,它实际上不含任何实现,都是调用另一个.ctf文件来完成具体的功能。 3、在c#中,必须引入mwarray.dll才能拥有在.net中进行矩阵运算所需要的一切。虽然matlab help中只是说推荐,但一般的应用中,只是进行一部分函数的调用,而不是去取得整个运行结果。这个.dll是必须引入的。有时mclmcrrt74.dll这个文件也需要引入。根据具体的要求,需要引入的文件也有所差别。
资源推荐
资源详情
资源评论
Matlab 与 C#混合编程的实现
关于 matlab 与 c#之间一些数据类型的转换的方法,我也曾经写过。总结一下,
最主要的是要完成下面几个步骤:
1、同时安装.netframwork 与 MCR(matlab compile runtime)。这个在装完 vs.net
与 matlab 以后,前面 2 个组件也就安装好了。
2、利 用 matlab 自带的.nettool 工具将.m 文件转换成.net 组件--->.dll 文件为
接口,它实际上不含任何实现,都是调用另一个.ctf 文件来完成具体的功能。
3、在 c#中,必须引入 mwarray.dll 才能拥有在.net 中进行矩阵运算所需要的一
切。虽然 matlab help 中只是说推荐,但一般的应用中,只是进行一部分函数的
调用,而不是去取得整个运行结果。这个.dll 是必须引入的。有时
mclmcrrt74.dll 这个文件也需要引入。根据具体的要求,需要引入的文件也有
所差别。
4、生成一个实例,并对.net 组件所输出的结果进行数据类型的转换,以符合.net
编程环境中对数据类型的要求,这个在以前我已经讲过,这里就不再多说了。关
键是掌握如何把一个矩阵(在 matlab 中,一个 m*n 的矩阵对应.net 中的一个 1*
(m*n)的数组)转换成数据类型一致的数组。目前所有的 matlab 数据类型(无
论什么类型,都可以把它看成一个矩阵,这样就可以利用数组的思想来思考)都
可以进行转化,具体的可能需要经过实验才能符合各自的要求。
虽然 matab 对.net 的支持不如它对 c++支持的功能强大,但也已经满足了我们实
际应用的需求。如果我们可以把大部分的运算都放在 matlab 里面完成,数据转
换的数量又少,那么整个系统的运行速度与效率还是挺高的。
c#与 matlab 混合编程图解
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Program p = new Program();
p.MatlabTest();
Console.WriteLine("按任意键退出...");
Console.ReadKey();
}
/// <summary>
/// 测试 C# matlab 调用
/// </summary>
private void MatlabTest()
{
Console.WriteLine("正在载入 matlab for .NET
库......");
DotNetTest.DotNetTestclass dt = new
DotNetTest.DotNetTestclass();
Console.WriteLine("完成......");
Console.WriteLine("---------------------------
--------------------");
// 多项式
int demention = 3;
double[] dd = new double[demention];
dd[0] = 1;
dd[1] = 4;
dd[2] = 6;
//MathWorks.MATLAB.NET.Arrays.MWArray d =
// MathWorks.MATLAB.NET.Arrays.MWNumeric
Array.MakeSparse(
// 1, demention,
MathWorks.MATLAB.NET.Arrays.MWArrayComplexity.Real, demention);
MathWorks.MATLAB.NET.Arrays.MWNumericArray d =
(MathWorks.MATLAB.NET.Arrays.MWNumericArray)dd;
Console.WriteLine("开始计算多项
式:[{0}] ......", d.ToString());
// 存储计算结果
MathWorks.MATLAB.NET.Arrays.MWArray h;
// 调用 matlab 函数计算
h = dt.myroots(d);
// 取得实部
Array real =
((MathWorks.MATLAB.NET.Arrays.MWNumericArray)h).ToArray(MathWorks.MAT
LAB.NET.Arrays.MWArrayComponent.Real);
string realpart = "实部列表:";
foreach (double i in real)
{
realpart += i + "\t";
}
// 取得虚部
Array imaginary =
((MathWorks.MATLAB.NET.Arrays.MWNumericArray)h).ToArray(MathWorks.MAT
LAB.NET.Arrays.MWArrayComponent.Imaginary);
string imaginarypart = "虚部列表:";
foreach (double i in imaginary)
{
imaginarypart += i + "\t";
}
Console.WriteLine(realpart);
Console.WriteLine(imaginarypart);
// 打印结果
Console.WriteLine("计算结果:");
Console.WriteLine(h.ToString());
}
}
}
剩余34页未读,继续阅读
资源评论
gouyin2010
- 粉丝: 3
- 资源: 28
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 5G SRM815模组原理框图.jpg
- T型3电平逆变器,lcl滤波器滤波器参数计算,半导体损耗计算,逆变电感参数设计损耗计算 mathcad格式输出,方便修改 同时支持plecs损耗仿真,基于plecs的闭环仿真,电压外环,电流内环
- 毒舌(解锁版).apk
- 显示HEX、S19、Bin、VBF等其他汽车制造商特定的文件格式
- 操作系统实验 Ucore lab5
- 8bit逐次逼近型SAR ADC电路设计成品 入门时期的第三款sarADC,适合新手学习等 包括电路文件和详细设计文档 smic0.18工艺,单端结构,3.3V供电 整体采样率500k,可实现基
- 操作系统实验 ucorelab4内核线程管理
- 脉冲注入法,持续注入,启动低速运行过程中注入,电感法,ipd,力矩保持,无霍尔无感方案,媲美有霍尔效果 bldc控制器方案,无刷电机 提供源码,原理图
- Matlab Simulink#直驱永磁风电机组并网仿真模型 基于永磁直驱式风机并网仿真模型 采用背靠背双PWM变流器,先整流,再逆变 不仅实现电机侧的有功、无功功率的解耦控制和转速调节,而且能实
- 157389节奏盒子地狱模式第三阶段7.apk
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功