2012-08-31 6 views
7

से आमंत्रित किया है, मैंने एक विधि निर्देशिका में संग्रहीत विधियों के समूह के साथ एक वर्ग परिभाषित किया है। मैं कक्षा को तुरंत चालू कर सकता हूं और मैटलैब के भीतर अपनी विधियों का आह्वान कर सकता हूं। हालांकि, अगर मैं नेट/कॉम से भी ऐसा ही करने की कोशिश मैं इस त्रुटि संदेश मिलता है:ने मैटलैब ऑब्जेक्ट की (निर्देशिका) विधि को .Net

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

यहाँ परीक्षण तरीका है।

मेरी कक्षा संभाल से ली गई है और मैंने दोनों संभावनाओं की कोशिश की है: विधि फ़ाइल फ़ाइल और निर्देशिका विधि में परिभाषित विधि। न तो काम करता है!

कोई भी प्रतिक्रिया बहुत सराहना की जाएगी। बहुत धन्यवाद।

पुनश्च:

सी # कोड:

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

पी पी एस:

बस डबल जाँच की है कि काम कर रहे मैटलैब स्क्रिप्ट काम नहीं कर रहा है जब लागू सी # कोड से:

मैटलैब वर्ग परिभाषा:

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

मैटलैब स्क्रिप्ट:

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

सी # कोड:

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

काम करता है! गणित ने इसे एक त्रुटि उठाई (वे भविष्य में रिलीज में इसे ठीक कर सकते हैं)।

ईसाई