2012-08-31 16 views
7

'dan çağırır. Bir yöntem dizininde saklanan bir grup yöntemle bir sınıfı tanımlarım. Sınıfı anlatabilir ve yöntemlerini matlab içinde kullanabilirim. Ben .NET/COM den aynı şeyi denerseniz Ancak, bu hata iletileri alıyorum:, Matlab nesnesinin (dizin) yöntemini .Net

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

İşte testi yöntemdir.

Sınıfım, tanıtıcıdan türetilmiş ve iki olasılığı da denedim: sınıf dosyası ve dizin yönteminde tanımlanan yöntem. Ne işe yaramıyor!

Herhangi bir geri bildirim çok takdir edilecektir. Çok teşekkürler.

PS:

C# kodu:

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

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

Çalışma matlab kodu:

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

PPS:

Sadece çift çağrıldığında çalışma Matlab komut çalışmadığını kontrol C# kodundan:

Matlab sınıf tanımı:

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

Matlab komut dosyası:

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

C# kodu:

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); 

cevap

5

Bu sınıfla aynı 'nesne örnek adı' kullanamaz çıkıyor ad. Bu nedenle:

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); 

Çalışıyor! Mathworks bunu bir hatayla karşıladı (bunu gelecek sürümlerde de çözebilir).

Christian