C# 调用 matlab两种方法实现
系统环境,Win7 32位+ VS2010 + MatlabR2012b
一、首先,在matlab中编辑函数。函数代码如下:
function [ V ] = cubic(L ) %一个输入参数L,一个输出参数V ,函数名cubic。
V=L^3
end
二、在matlab命令行中 执行mbuild –setup命令,选择VS2010 C++编译器。
三、在matlab命令行中,执行deploytool命令调出图形界面来编译对应的组件。这里主要用com组件和.net
四、编译步骤,新建工程名称,添加类,添加M文件的步骤来操作,添加好后build可以生成.dll文件。。
五、C#调用
1、把matlab中生成com组件的dll文件拷贝到当前项目文件目录下,添加引用,然后调用。
PRivate voidbutton1_Click(object sender, EventArgs e)
{
cub2.Class1 c1 = new cub2.Class1();
object v=0;
c1.cubic(1,ref v, int.Parse(this.textBox1.Text.Trim()));
MessageBox.Show(v.ToString());
}
2、matlab中生成.netassembly类型的dll拷贝到当前目录下,添加引用,然后调用。这里注意matlab中一个方法被重载为5个,特别是数据类型的转换存在问题。
private void button1_Click(object sender,EventArgs e)
{
int v=0;
MWNumericArray m_output = newMWNumericArray(v);
MWNumericArray m_input = newMWNumericArray(int.Parse(this.textBox1.Text.Trim()));
cub3.sgx sgx = new cub3.sgx();
m_output =(MWNumericArray)sgx.cubic(m_input);
double[,] result=(double[,])m_output.ToArray();
MessageBox.Show(result[0,0].ToString());
}
新闻热点
疑难解答