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());
}
新聞熱點
疑難解答