Sending data to MatLab using PutWorkspaceData

10 Ansichten (letzte 30 Tage)
Craig
Craig am 20 Dez. 2011
I am having trouble getting the correct syntax for passing data into MatLab using Excel/VBA.
I have copied the example from the help document http://www.mathworks.com/help/techdoc/ref/putworkspacedata.html but receive the following error:
Dim Matlab As Object
Dim data(6) As Double
Dim i As Integer
MatLab = CreateObject("matlab.application")
For i = 0 To 6
data(i) = i * 15
Next i
MatLab.PutWorkspaceData("A","base",data)
MsgBox("In MATLAB, type" & vbCrLf & "A")
"Compile Error: Syntax Error" around the following line of code:
Matlab.PutWorkspaceData("A", "base", data)
What is the correct syntax for this call?
Thank You, Craig
PS. I'm using Excel 2007 with VB 6.5 and Matlab R2010a

Akzeptierte Antwort

Craig
Craig am 20 Dez. 2011
Solution ID: 1-8M7ZNR found here <http://www.mathworks.com/support/solutions/en/data/1-8M7ZNR/index.html?product=EL&solution=1-8M7ZNR> provides a working example of sending and getting data to Matlab. I unfortunately cannot figure out how I ran across this help document but the solution works for my environment.
Two points to make:
1) Essentially the data in excel is an array of doubles but a variant is used to eventually send the data to MatLab. The MatLab help mentions that a variant should be used but skips this conversion step in example provided within.
2) The solution uses the "Call" command in excel to remove any syntax errors. I used "Result =" which seems to also be acceptable.
Cheers,
Craig

Weitere Antworten (1)

Sean de Wolski
Sean de Wolski am 20 Dez. 2011
Try single quotes:
Matlab.PutWorkspaceData('A', 'base', data)
MATLAB uses single quotes to denote strings.
  2 Kommentare
Craig
Craig am 20 Dez. 2011
The single quotes didn't help. It returned the same error. I was however able to resolve the syntax error by placing a String variable in front of the expression. The prototype definition found in the help file does not have this documented.
Result = Matlab.PutWorkspaceData("A", "base", A)
The compiler now states "Compiler Error: Type mismatch" and highlights _.PutWorkspaceData_ when the error occurs.
Dushyant Dhundara
Dushyant Dhundara am 29 Mai 2016
Hi, I am trying to mimic your code but for C#. it almost works, but in matlab it window when I type A, it only outputs the very last value. Did that happen with you ?

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Write COM Applications to Work with MATLAB finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by