/ / MATLAB में कक्षा चर का उपयोग कैसे करें? - matlab, कक्षा, ओओपी

MATLAB में कक्षा चर का उपयोग कैसे करें? - matlab, कक्षा, ओओपी

मैं एक ही कक्षा में किसी फ़ंक्शन में कक्षा में घोषित चर का उपयोग करना चाहता हूं। उदाहरण के लिए, सी ++ में, कोड दिखेगा,

// Header
class Foo
{
public:
Foo(int input);
~Foo();
void bar();
int a, b;
}

// Implementation
Foo::Foo(int input)
{
a = input;
}

Foo::~Foo()
{
}

void Foo::bar()
{
b = a/2;
}

// Usage
#include <Foo.h>

int main()
{
int input = 6;
Foo test_class(input);

// Access class variable
std::cout << test_class.b << std::endl;

return EXIT_SUCCESS;
}

मैं उलझन में हूं कि MATLAB में समान कार्यक्षमता कैसे प्राप्त करें। अब तक, मैंने किया है:

% Class "m" file
classdef Foo

properties
a;
b;
output;
end

methods
% Class constructor
function obj = Foo(input)
obj.a = input;
obj.b = obj.a/2;
end

% Another function where I want access to "b"
function output = bar(obj)
output = ( obj.b + obj.a )/2;
end
end

end

% Usage
input = 6;
foo = Foo(input);

result = foo.bar(); %MATLAB complains here

मैंने डालने की भी कोशिश की है bar() के रूप में स्टेटिक विधि लेकिन कोई फायदा नहीं हुआ। किसी भी प्रकार के मदद की बहुत सराहना की जाएगी।!

चीयर्स।!

अद्यतन: उपरोक्त कोड वास्तव में अपेक्षित काम करता है और जो त्रुटि मैं प्राप्त कर रहा था वह यहां किसी भी चीज़ से पूरी तरह से असंबंधित नहीं था।

उत्तर:

जवाब के लिए 0 № 1

मेरे लिए, Matlab R2013a में, foo = Foo(input) पहले से ही एक त्रुटि है: Matlab कन्स्ट्रक्टर को बुलाया जाने की उम्मीद है Foo, नहीं constructor-और वह एक इनपुट पैरामीटर डिफ़ॉल्ट कन्स्ट्रक्टर के लिए बहुत अधिक है। अगर मैं आपकी विधि का नाम बदलता हूं constructor सेवा मेरे Foo तो यह काम करता है और मुझे मिलता है result के बराबर 4.5 जैसा सोचा वैसा।