Calling an object's method that changes its property not doing what I want.

1 回表示 (過去 30 日間)
Evan
Evan 2011 年 12 月 16 日
Hello
An object has property MNL_beta and method train(input, output) that I want the object to update its MNL_beta property. What is actually happening is :
>> p1
p1 =
predictor_bundle
Properties:
MNL_beta: []
Methods
>> p1.train(input, output)
ans =
predictor_bundle
Properties:
MNL_beta: [3x1 double]
Methods
>> p1
p1 =
predictor_bundle
Properties:
MNL_beta: []
Methods
What has happened? The p1's value has not changed at all?!?
>> p1 = p1.train(input, output)
p1 =
predictor_bundle
Properties:
MNL_beta: [3x1 double]
Methods
>> p1
p1 =
predictor_bundle
Properties:
MNL_beta: [3x1 double]
Methods
But using the second syntax, it's done what I wanted. How do I accomplish the result of the second method, while using the syntax of the first method?
Thank you

採用された回答

Chirag Gupta
Chirag Gupta 2011 年 12 月 16 日
This would stem from the difference between Value classes and handle classes. Its explained here: http://www.mathworks.com/help/techdoc/matlab_oop/brfylwk-1.html
  1 件のコメント
Evan
Evan 2011 年 12 月 16 日
And so how would I exactly solve the problem?
My classdef is written as such :
classdef predictor_bundle
properties
MNL_beta
end
method
function obj = train(obj, input, output)
function here
end
end
end

サインインしてコメントする。

その他の回答 (1 件)

Evan
Evan 2011 年 12 月 16 日
Hello,
Here is my classdef code. What modifications would I need to make to solve the problem?
classdef predictor_bundle
properties
MNL_beta;
end
methods
function obj = predictor_bundle()
end
function obj = train(obj, input, output)
Function here.
end
end
end
  2 件のコメント
Chirag Gupta
Chirag Gupta 2011 年 12 月 16 日
classdef predictor_bundle < handle
....
end
Chirag Gupta
Chirag Gupta 2011 年 12 月 16 日
http://www.mathworks.com/matlabcentral/answers/12056-matlab-oop-question

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeHandle Classes についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by