在MATLAB中操作一个类属性的结构

时间:2016-09-07 11:22:10

标签: arrays matlab class object struct

我一直在尝试使用MATLAB类和&结构,以发展交通模拟。我之前没有积极参与MATLAB课程,所以有时候会有点棘手。这个问题涉及操纵一个结构,这是一个类的属性。

顶级访问

vehicles_handle = VehiclesHandle;
vehicles_handle.CreateVehicles(InitialTrafficDensity);
vehicles_handle.vehicles(1)

班级定义

classdef VehiclesHandle
    %VEHICLESHANDLE Summary of this class goes here
    %   Detailed explanation goes here

    properties 
        active_vehicles_count
        vehicles
    end

    methods (Access = public)
        function obj = VehiclesHandle
            obj.active_vehicles_count = 0;
            obj.vehicles = struct('lane',0,'position',0,'velocity',0); 
        end
        function obj = CreateVehicles(obj,InitialTrafficDensity)
            obj.active_vehicles_count = obj.active_vehicles_count + 1;
            obj.vehicles(1).lane = 1;
            obj.vehicles(1).position = 3;
            obj.vehicles(1).velocity = 3;
            obj.vehicles(2).lane = 2;
            obj.vehicles(2).position = 3;
            obj.vehicles(2).velocity = 3;
        end

现在,我无法按预期看到输出(即veh_handle.vehicles(1)),我将车辆1的属性视为0。当然,当我把它放在VehicleHandle函数中时,情况会发生变化,但我想以这种方式处理车辆的创建。

我知道代码可能不是处理此问题的最有效方法,但我确实想学习如何在没有痛苦的情况下处理此类中的结构。感谢所有建设性意见和提前帮助。

1 个答案:

答案 0 :(得分:1)

摆脱这个问题非常简单:

classdef VehiclesHandle

必须是

classdef VehiclesHandle < handle

要理解原因,请阅读Comparison of Handle and Value Classes