Matlab 对具有子类的超类属性进行操作

Matlab 对具有子类的超类属性进行操作,matlab,class,oop,inheritance,Matlab,Class,Oop,Inheritance,对所有人来说 我是一个新手程序员(我没有参加过结构化课程),试图学习MATLAB。目前,我正在努力理解MATLAB的面向对象编程工具。我想在下面的步骤中清晰地划分我的项目。我想继承经证实的数据,并在验证中处理它。我遇到此错误您无法设置验证的只读属性“data”。 我该怎么做呢?这是在MATLAB中组织自己的适当方式吗 classdef formatData.m properties data = [] end methods functi

对所有人来说

我是一个新手程序员(我没有参加过结构化课程),试图学习MATLAB。目前,我正在努力理解MATLAB的面向对象编程工具。我想在下面的步骤中清晰地划分我的项目。我想继承经证实的
数据
,并在
验证
中处理它。我遇到此错误
您无法设置验证的只读属性“data”。

我该怎么做呢?这是在MATLAB中组织自己的适当方式吗

classdef formatData.m 
    properties
        data = []
    end
    methods
        function formatData(data)
        % This should initialize the data
        end
        function columnShift(data)
        % Simple changes
        end
    end
end


classdef validateData.m < formatData
    properties
        error = logical(false)
    end
    methods
        function validateData(data)
            if nargin > 0
                obj.data = obj@formatData;
            end
        end
        function checkValues()
        % check values on data from formatData
        end
    end
end
classdef formatData.m
性质
数据=[]
结束
方法
函数格式化数据(数据)
%这将初始化数据
结束
函数列移位(数据)
%简单的改变
结束
结束
结束
classdef validateData.m0
对象数据=obj@formatData;
结束
结束
函数checkValues()
%检查formatData中数据的值
结束
结束
结束

令人悲哀的是,MATLAB经常更改面向对象的代码。我发布的代码是从最新文档中引用的。这似乎与我拥有一年的书完全不同

classdef formatData

    properties
        data = [];
    end

    methods
        function obj = formatData(DataIn)
            %formatData This should initialize the data
            obj.data = DataIn;
        end

        function [DataOut] = columnShift(obj)
            %columnShift ? How to shift the column?
            DataOut = (obj.data)';
        end
    end
end


classdef validateData < formatData
    %validateData 

    properties
        error = false;
    end

    methods
        function obj = validateData(DataIn)
            %validateData 
            obj@formatData(DataIn);
        end

        function [] = checkValues(obj)
            %checkValues 

        end
    end
end
classdef格式数据
性质
数据=[];
结束
方法
函数obj=格式化数据(数据输入)
%formatData这应该初始化数据
obj.data=数据输入;
结束
函数[DataOut]=列移位(obj)
%换班?如何移动列?
数据输出=(对象数据)';
结束
结束
结束
classdef validateData
除了构造函数之外,任何(非静态)方法的第一个参数都应该是对象实例(通常是
obj
self
),您可能会混淆传递给方法的变量,如
数据
数据
属性。尝试更改参数变量,使其与属性名称不匹配,然后编码和错误消息可能会变得更清晰?最后,您给出了代码,但没有给出生成错误的调用,这会有所帮助。