Matlab面向对象编程:设置和获取多个对象的属性

时间:2011-04-24 08:34:03

标签: oop class matlab get set

我有一个类似的课程:

classdef Vehicle < handle
    %Vehicle
    %   Vehicle superclass

    properties
        Is_Active  % Does the vehicle exist in the simualtion world?
        Speed      % [Km/Hour]
    end

    methods
        function this = Vehicle(varargin)
            this.Speed = varargin{1}; % The speed of the car
            this.Is_Active = true;
        end
    end
end

我以单元格形式创建我的Vehicle类对象(不要问我为什么 - 这是全局设置的外行解决方法):

Vehicles{1} = Vehicle(100);
Vehicles{2} = Vehicle(200);
Vehicles{3} = Vehicle(50);
Vehicles{1}.Is_Active = true;
Vehicles{2}.Is_Active = true;
Vehicles{3}.Is_Active = true;

我的问题: 1.有没有办法在一个命令中设置所有三个对象的活动状态? 2.有没有办法在一个命令中获得所有三个对象的速度? 3.有没有办法在一个命令中查询哪些车辆比X快?

由于 加布里埃尔

1 个答案:

答案 0 :(得分:8)

对于同一类的成员,您可以使用圆括号(常规数组):

Vehicles(1) = Vehicle(100);
Vehicles(2) = Vehicle(200);
Vehicles(3) = Vehicle(50);

要设置所有对象,请使用deal

[Vehicles(:).Is_Active] = deal( true );

您首先也可以initialize an array of objects

对于你的问题(2)和(3),语法与MATLAB结构的语法相同:

speedArray = [Vehicles.Speed];
fasterThanX = Vehicles( speedArray > X );

这种矢量化符号是strong point of MATLAB并且被广泛使用。