[#41806] Win32OLE and MATLAB — Masaki Suketa <masaki.suketa@...>
助田です。
6 messages
2006/02/03
[#41812] "module private"な変数・メソッド — KURODA Hiraku <hiraku@...>
こんにちは、黒田です。
5 messages
2006/02/04
[#41825] RRSE 0.1 — OHBAYASHI Ippei <ohai@...>
こんにちは、大林です。
5 messages
2006/02/13
[#41854] rexml で doc.xml_decl.encoding = "shift-jis" は駄目ですか? — take_tk <ggb03124@...>
たけ(tk)です
5 messages
2006/02/24
[ruby-list:41806] Win32OLE and MATLAB
From:
Masaki Suketa <masaki.suketa@...>
Date:
2006-02-03 07:49:19 UTC
List:
ruby-list #41806
助田です。
どなたか、MATLABをWin32OLEから利用したことがある方はいらっしゃいますか?
最近、Win32OLEからMATLABが動かないというメールを頂戴したのですが、
MATLABを持ってないので、ちょっとだけ困ってます。
動かないスクリプトというのが、
| 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)
だそうです。
どなたか、
| matlab.Execute('bob = 1:5;')
と
| t3 = matlab.GetFullMatrix('bob', 'base', t1, t2)
が何をしているのか、t1とt2の配列は [0.0, 0.0, 0.0, 0.0, 0.0]
でいいのかどうか、わかる方がいらっしゃいましたら教えていただけない
でしょうか?
エラーが
| 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 :0
で、GetFullMatrixは
| GetFullMatrix([in] BSTR varname, [in] BSTR workspace,
| [in, out] SAFEARRAY(double) *pr,
| [in, out] SAFEARRAY(double) *pi)
となっているそうです。
多分、GetFullMatrixをコールするときに VT_VARIANT|VT_BYREF か、VT_ARRAY でしか
呼び出さないWin32OLEが駄目なんだと思ってます。
でも、万が一、t1 とか t2の配列が適切じゃないために、Type mismatch と言われて
いるのかもとちょっとだけ気になっているのです。
WIN32OLE_VARIANTクラスを充実させるしかないか...。
助田雅紀