寻址从Matlab中的类get函数返回的数据数组

时间:2012-01-30 12:27:05

标签: oop class matlab

我正在尝试为以下情况找到一个很好的解决方案:

我有一个班级:

classdef SomeClass < handle

    properties (Access = private)
        x
    end

    methods
        function x = getX(this)
            x = this.x;
        end
    end
end

x - 一些数据数组。 我是否有可能解决数组中的某些元素,就像我在struct中所做的那样:

struct.x(5)

或者我是否总是这样做?:

myClassObj = SomeClass();
x = myClassObj.getX();
x(5)

或创建一些func getXAt?

2 个答案:

答案 0 :(得分:2)

是。像这样的寻址是Matlab对象中属性的正常行为。您可以公开该属性进行阅读,而不是将其完全private

classdef SomeClass < handle

    properties (SetAccess=private)
        x
    end

    methods
        function obj = SomeClass(x)
            obj.x = x;
        end
    end
end

然后你可以像结构上的字段一样解决它。

>> sc = SomeClass(1:7);
>> sc.x(5)
ans =
     5
>> 

Matlab中没有必要像在Java中一样创建自己的访问器函数。您可以使用属性独立控制属性的读写访问权限。如果您想要更复杂的属性访问逻辑,可以使用特殊的function out = get.x(obj)语法定义getter和setter,它们的行为将应用于使用obj.x语法完成的属性访问。

答案 1 :(得分:1)

在Matlab中,任何类都是类的数组

因此,您可以这样编写课程:

classdef SomeClass < handle

    properties (Access = private)
        x
    end

    methods (Access=public)        
        function this = SomeClass(x)
            this.x = x;
        end
    end

    methods
        function x = getX(this)                
            x = [this.x];
        end
    end
end

并像这样访问:

  

s(1)= SomeClass(1);
  s(2)= SomeClass(5);
  s(3)= SomeClass(6);

     

s.getX()

     

ans =

1     5     6
     

S(2).getX()

     

ans =

5