2012-08-31 11 views
7

メソッドディレクトリに格納された一連のメソッドでクラスを定義しました。私は、クラスをインスタンス化し、そのメソッドをMATLAB内で呼び出すことができます。私は.NET/COMから同じことをしようとした場合しかし、私はこのエラーメッセージが出ます:は、.NETのMatlabオブジェクト(ディレクトリ)メソッドを呼び出す

"??? Reference to non-existent field 'test'.\n\n" 

ここテストは方法です。

私のクラスはハンドルから派生しています。私はクラスファイルとディレクトリメソッドで定義されたメソッドの両方を試しました。どちらもうまくいきません!

フィードバックは非常に高く評価されます。どうもありがとう。

PS:

C#コード:

MLApp.MLApp matlab = new MLApp.MLApp(); 

matlab.Execute("clear;"); 
matlab.Execute("Object = Class1();"); 
string test = matlab.Execute("Object.test()"); 

の作業MATLABコード:

clear; 
Object = Class1(); 
Object.test() 

PPS:

ただ、ダブルは、呼び出されたときに作業MATLABスクリプトが動作していないことを確認C#コード:

Matlabのクラス定義:

classdef Test < handle 
    methods   
     function [c, obj] = add(obj, a, b) 
      c = a + b; 
     end 
    end % methods 
end %classdef 

Matlabのスクリプト:

clear; 
Test = Test(); 
result = Test.add(1, 3); 

C#コード:

MLApp.MLApp matlab = new MLApp.MLApp(); 

object result; 

matlab.Execute("clear;"); 
matlab.Execute("Test = Test();"); 
matlab.Execute("result = Test.add(1, 3);"); 
matlab.GetWorkspaceData("result", "base", out result); 

答えて

5

それはあなたのクラスと同じ 'オブジェクトのインスタンス名を' を使用できないことが判明しました名。したがって:

MLApp.MLApp matlab = new MLApp.MLApp(); 

object result; 

matlab.Execute("clear;"); 
matlab.Execute("X = Test();"); 
matlab.Execute("result = X.add(1, 3);"); 
matlab.GetWorkspaceData("result", "base", out result); 

作品! Mathworksはこれをエラーとしました(将来のリリースでこれを修正する可能性があります)。

キリスト教

関連する問題