I can't answer your question directly, but a search on "getfullmatrix" +
"perl" revealed some Matlab examples that you might be able to borrow
from.
Regards,
Dan
···
-----Original Message-----
From: Ryan Hinton [mailto:iobass@email.com]
Sent: Wednesday, February 01, 2006 2:49 PM
To: ruby-talk ML
Subject: WIN32OLE extension using in/out SAFEARRAYs (Matlab interface)I am having trouble calling a COM object (Matlab) using the
excellent WIN32OLE Ruby extension. Several other calls have
worked fine, but this call involves some in/out SAFEARRAYs.
Here is the method signature.GetFullMatrix([in] BSTR varname, [in] BSTR workspace,
[in, out] SAFEARRAY(double) *pr,
[in, out] SAFEARRAY(double) *pi)The server uses the sizes of the arrays pr and pi to fill
them with the requested data--hence their dual in/out nature.
Does anyone know how to properly make a call like this? Is
it possible? My most successful attempts have given me the
following error.WIN32OLERuntimeError: GetFullMatrix
OLE error code:0 in <Unknown>
<No Description>
HRESULT error code:0x80020005
Type mismatch.
from (irb):30:in `method_missing'
from (irb):30
from :0In case you're running on Windows with Matlab installed, here
is the code I am using.require 'win32ole'
matlab = WIN32OLE.new('Matlab.Application')
matlab.Execute('bob = 1:5;')
t1 = Array.new(5, 0.0)
t2 = t1.dup
t3 = matlab.GetFullMatrix('bob', 'base', t1, t2)