2014-01-30 84 views
0

任何人都知道如何在VB.NET中完成MATLAB COM自動化?因爲我真的無法使用NE構建器讓我的程序工作。我嘗試使用這裏記錄的COM自動化:http://www.mathworks.com/help/matlab/matlab_external/call-a-matlab-function-from-visual-basic-net-client.htmlMATLAB COM自動化錯誤

同樣,我的程序非常簡單。這裏的MATLAB代碼:

function out = addMe(a,b) 
out = a + b; 
end 

這裏的VB代碼:

Public Class Form1 
    Dim a As Integer = 4 
    Dim b As Integer = 10 
    Dim result As String 
    Dim Matlab As Object 

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     Matlab = CreateObject("Matlab.Application") 
     result = Matlab.Execute("cd C:\Users\Elvin Gentiles\Desktop\Program") 
     result = Matlab.Execute("addMe(a,b)") 
     TextBox1.Text = result 
    End Sub 
End Class 

說我得到了在文本框中顯示的是結果:???未定義的函數或變量'a'。我已經確保COM參考已被添加。

但是,當我試圖改變代碼到這是工作。順便說一句,版本是一個matlab命令,用於顯示MATLAB的版本。

result = Matlab.Execute("version") 

我希望你能幫助我。我真的需要這個。謝謝

回答

2

Everythingings working perfect - COM-wise。

問問自己:你期望函數返回什麼?

如果上面的代碼是完整的,你定義在MATLAB會話既不a也不b,所以當然MATLAB抱怨a沒有被定義。

嘗試

result = Matlab.Execute("addMe(1,2)") 

代替。

+0

如果我想將一個變量的值從VB傳遞給MATLAB,該怎麼辦?順便說一下,我試過你的建議和返回的答案是**?未定義的函數'addMe'用於'double'類型的輸入參數。** – elvinguitar

+0

您以前使用過Matlab嗎?錯誤信息是不言自明的。你必須確保'addMe'函數在路徑上 - 我認爲'addMe.m'會出現在'cd'目錄中。你可以做'Matlab.Execute(「a = 2」)等等,或者查看http://www.mathworks.de/de/help/matlab/call-matlab-com-automation-server.html('PutFullMatrix' ,'PutWorkspaceData')兩個如何將矩陣更直接寫入matlab。 – sebastian