[转载] C# matlab联合编程简介
原作者 文月
主要操作说明:
1. 找到matlab安装目录下的MCRInstaller.exe安装
MCRInstaller.exe 在安装目录下的 ..\MATLAB7\toolbox\compiler\deploy\win32\中;
2. 将写好的matlab的.m文件转换为动态链接库
2.1 编辑M文件
比如写了.m文件 f.m。其中的function C=f(A,B)实现的是C=A+B
function C=f(A,B)
C=A+B;
end
2.2 在matlab的命令窗口中输入deploytool
2.3 选择file-NewDeployment Project
2.4 选择MATLAVB Builder NE, .NET Component
然后OK
2.5 添加一个类
按‘添加类’,之后弹出对话框,输入类名,确认后,按‘添加m文件’,添加.m文件。
确认后。按”链接“。即可在matlab的工作目录中看到新建的对应这个工程名的文件夹,打开其中的distrib文件夹,可以看到f.ctf和f.dll两个文件,将这两个文件拷贝到c#工程的工作目录中。
3 C#中添加引用
在c#工程右侧的解决方案资源管理器中,鼠标右击“引用”,选择“添加引用”,然后选择浏览,找到刚才放到C#工程中的.dll文件。选中确定。引用部分则会显示f。并且引用C:\Program Files\MATLAB\R2008a\toolbox\dotnetbuilder\bin\win32\v2.0中的MWArray.dll。然后引用中出线MWArray的引用。
在c#文件起始部位添加如下代码
using MathWorks.MATLAB.NET.Arrays;
using MathWorks.MATLAB.NET.Utility;
using f;
4 数据格式转换与使用
4.1 数据格式转换
fclass mfuntion = newfclass();
double[]a={1,2,3,4,5,6};
double[]b={2,4,6,8,10,12};
double[,] c;
MWNumericArray mA = newMWNumericArray(3, 2, a); MWNumericArray mB = newMWNumericArray(3, 2, b);
MWNumericArray mC=(MWNumericArray)mfuntion.f(mA, mB); c=(double[,])mC.ToArray(MWArrayComponent.Real);
4.2 为按钮click事件添加完整的代码
fclass mfuntion = new fclass();
double[] a = { 1, 2, 3, 4, 5, 6 };
double[] b = { 2, 4, 6, 8, 10, 12 };
double[,] c;
MWNumericArray mA = new MWNumericArray(3, 2, a);
MWNumericArray mB = new MWNumericArray(3, 2, b);
MWNumericArray mC = (MWNumericArray)mfuntion.f(mA, mB);
c = (double[,])mC.ToArray(MWArrayComponent.Real);
int row = c.GetLength(0);
int col = c.GetLength(1);
string text = "\r\n";
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
text += Convert.ToString(c[i, j]) + ' ';
text += "\r\n";
}
textBox1.Text = text;
5. 备注
更多的数据格式转换,请用matlab的help索引MWArray。
比如,MWNumericArray的构造函数页。关键是构造函数实现了两种数据格式的转换。
相关文章
- matlab 求矩阵秩,用MATLAB编程求矩阵的秩
- matlab逆变器仿真程序,PWM逆变器Matlab仿真「建议收藏」
- matlab中错误使用fmincon,MATLAB中fmincon 函数问题
- matlab 插值出错,MATLAB插值问题
- matlab fir带通滤波,基于Matlab的FIR带通滤波器设计与实现
- matlab支持向量回归,支持向量回归 MATLAB代码
- c#数组赋初值_C#数组初始化
- matlab保存所有图,Matlab中图片保存的5种方法
- matlab 行 读取文件 跳过_Matlab读取TXT文件并跳过中间几行的问题!!
- butterworth matlab,Matlab实现Butterworth滤波器
- MATLAB的循环_matlab循环输出
- C# RulesEngine 规则引擎:从入门到看懵
- matlab循环语句for_MATLAB以下选择语句错误的是
- matlab 汽车振动,基于MatLab的车辆振动响应幅频特性分析
- c# 多线程并发-金三银四面试:C#.NET面试题高级篇2-多线程
- 【MATLAB】matlab 文档使用 ( 文档查询 | 文档层次 | 自带搜索工具 | 帮助命令 | 学习导引 )
- 开心档之C# 匿名方法
- Matlab与MySQL:极具价值的组合(matlab与mysql)
- c#所有类型都从Object类型派生
- C#生成验证码取随机数字加字母(改进版)
- C#去除首尾字符或字符串的方法
- C#加密算法汇总(推荐)
- C#正则表达式分解和转换IP地址实例(C#正则表达式大全c#正则表达式语法)
- c#显示当前在线人数示例
- C#判断ip地址是否可以ping的通
- C#实现动态显示及动态移除图片方法