精华内容
下载资源
问答
  • MATLAB 面向对象编程(OOP)在MATLAB 设计用户类 在设计MATLAB类时应包括一组标准的方法以使类的行为与MATLAB环境 协调一致并合乎逻辑根据所设计的类的特点你不一定要包含所有这些方法 并且你可能会包含一些其它方法...
  • 的方法(Method)一般用来查询(Query)对象的状态,或者向对象发出一个命令(Command),比如操作对象的数据。在MATLAB面向对象编程,类方法的定义要放在method block,和一般函数定义类似,方法的定义以...

    本系列内容为《MATLAB面向对象编程–从入门到设计模式》学习笔记,特此说明。

    定义类的方法

    类的方法(Method)一般用来查询(Query)对象的状态,或者向对象发出一个命令(Command),比如操作对象中的数据。在MATLAB面向对象编程中,类方法的定义要放在method block中,和一般函数定义类似,方法的定义以关键词function开始,以关键词end结束。

    ......
    methods
        function [returnValue]=functionName(arguments)
            ......
        end
    end

    若成员方法代码量比较大,可以在类定义中仅给出函数的声明,把函数实现放到一个独立的文件中。

    说明:

    1. 这种方法需要创建一个@classname的文件夹,然后把类的定义和方法的实现都放到该文件夹中,然后在@classname的外部调用该类的构造函数。
    2. 某些函数不能采用这种方式,比如类的Constructor和Destructor(析构函数),以及Static方法,都必须在类的定义中实现。

    调用类的方法

    点调用方式:obj.memberFunction(arg1,arg2)

    函数调用方式:memberFunction(obj,arg1,arg2)

    点调用和函数调用类方法的区别

    虽然两种方法基本等价,但仍有一些细微的区别:

    1. 使用点调用方式符合面向对象的风格,程序的可读性高,这是施加在对象上的一种操作。使用函数调用方式满足传统的面向过程的编程习惯,在某些情况下,兼容旧的MATLAB代码。
    2. 使用点调用可以清楚的表示MATLAB调用的时成员方法还是函数。

    类的构造函数

    构造函数(Constructor)是一种特殊的成员方法:

    1. Constructor和类的名称相同,用来创造类的实例。
    2. MATLAB类定义中只能有1个Constructor·。
    3. Constructor有且只能有一个返回值,且必须是新创建的对象,这是唯一创建一个新的对象的方式。
    classdef Point2D < handle
        properties
            x
            y
        end
        methods
            function obj = Point2D(x0,y0) %返回值必须是一个obj
                obj.x=x0;
                obj.y=y0;
            end
        end
    end
    
    
    >> clear classes;
    >> p1=Point2D(1.0,2.0);  %使用构造函数创建对象

    在构造函数中给属性赋值

    在Constructor中也可以给对象的属性赋值。即使在property block中已经提供了默认值,Constructor中赋的新值也将取代property block中的默认值。

    classdef Point2D < handle
        properties
            x=cos(pi/2); %Constructor被调用之前x的默认值
            y=sin(pi/3); %Constructor被调用之前y的默认值
        end
        methods
            function obj = Point2D(x0,y0) %返回值必须是一个obj
                obj.x=x0;   %新的x0,y0将会取代初值
                obj.y=y0;
            end
        end
    end

    MATLAB在声明一个对象时的工作顺序是:先装载类的定义,然后再调用构造函数,这时属性被重新赋值

    如何让构造函数接受不同数目的参数

    由于MATLAB是弱类型检查的解释性语言,不能通过函数函数重载的方式找到相匹配的函数,但是可以通过参数数目(nargin)的不同来选择不同的代码。

    classdef Point2D < handle
        properties
            x=cos(pi/2); %Constructor被调用之前x的默认值
            y=sin(pi/3); %Constructor被调用之前y的默认值
        end
        methods
            function obj = Point2D(x0,y0) 
                if nargin == 0  % 如果没有提供参数
                    obj.x=cos(pi/2);
                    obj.y=sin(pi/3);
                else if nargin == 2 %如果提供了参数
                    obj.x=x0;
                    obj.y=y0;
                end
            end
        end
    end

    默认构造函数

    默认构造函数(Default Constructor)一般性定义:不带任何参数的构造函数

    可以把默认构造函数理解成构造函数内部可以处理nargin==0的情况,并且返回新构建的对象的那部分代码。

    展开全文
  • MATLAB 面向对象编程(OOP)在 MATLAB 设计用户类 在设计 MATLAB 类时应包括一组标准的方法以使类的行为与 MATLAB 环境 协调一致并合乎逻辑根据所设计的类的特点你不一定要包含所有这些方法 并且你可能会包含一些...
  • MATLAB面向对象编程属性初始化方法

    千次阅读 2017-05-19 00:38:46
    MATLAB面向对象编程类构建,属性初始化一般有两种方法:一种是使用构造函数,另一种则是在定义属性时候初始化。  使用构造函数例子: classdef DemoClass  properties  age;  hight;  end ...

          在MATLAB面向对象编程的类构建中,属性的初始化一般有两种方法:一种是使用构造函数,另一种则是在定义属性的时候初始化。

          使用构造函数的例子:

    classdef DemoClass

        properties

            age;

            hight;

        end

        methods

            function obj = DemoClass(a,h)

                obj.age = a;

                obj.hight = h;

            end

        end

    end

          创建对象:

    >> D = DemoClass(1,2)

     

    D =

     

      DemoClass withproperties:

     

          age: 1

    hight: 2

    对象的两个属性数值根据对象创建时传入的参数而进行相应的数值初始化。

          在属性创建时初始化例子:

    classdef DemoClass

        properties

            age = 123;

            hight = 456;

        end

    end

          对象创建操作如下:

    >> D = DemoClass()

     

    D =

     

      DemoClass withproperties:

     

          age: 123

    hight: 456

    通过这种方法实现的类进行实例化创建对象的时候,不需要指定属性的初始化数值。属性的初始化数值会在对象创建的同时自动按照属性中的数值产生。

    展开全文
  • MATLAB的方法

    2019-06-26 16:33:52
    MATLAB 构造函数格式是 obj = 类名(参数) 其中,obj 表示对象,可以用其他符号表示,通常习惯用 obj classdef Point2D < handle properties x = 0; y = 0; end methods function obj ...

    构造函数

    • 在 MATLAB 中,构造函数的格式是 obj = 类名(参数)
    • 其中,obj 表示对象,可以用其他符号表示,通常习惯用 obj
    classdef Point2D < handle
        properties
            x = 0;
            y = 0;
        end   
        methods       
            function obj = Point2D(x,y)
                obj.x = x;
                obj.y = y;
            end
    end
    

    调用对象的方法

    • 和C++一样,创建了对象以后,可以用 对象名.方法名(参数) 调用
    • 在 MATLAB 中还有一种调用格式, 方法名(对象名,参数),但这种方法与调用普通函数相同,易读性差。

    普通方法

    • 在构造函数的例子中,我们发现了 obj 和 this 指针十分相近,其实 obj 就相当于 C++ 中的 this 指针
    • 在 MATLAB 中,obj 不是系统自带的,而是要作为参数传入方法中的,所以构造函数必须要返回一个 obj 对象,而其他的函数也要将 obj 作为第一个参数。
    • 从对象的调用方法中,我们可以看出来,用 对象名.方法名(参数) 这种方式调用,不需要加上第一个 obj 参数,因为在函数名前已经有对象名了。要注意 obj 必须是第一个参数
    classdef Point2D < handle
        properties
            x = 0;
            y = 0;
        end   
        methods       
            function obj = Point2D(x0,y0)
                obj.x = x0;
                obj.y = y0;
            end
            function moveTo(obj,x,y)
                obj.x = x;
                obj.y = y;
            end
        end
    end
    

    在这里插入图片描述

    类的 disp 方法

    • 我们知道,在我们不写分号时,会在命令行输出结果,其实这就是调用了 disp 函数。
    • 在类中,如果我们自己写了一个 disp 函数,会优先调用我们自己写的 disp 函数,使输出变成我们想要的样子。
    • 比如在上面的的例子中加入一个 disp 函数
    classdef Point2D < handle
        properties
            x = 0;
            y = 0;
        end   
        methods       
            function obj = Point2D(x0,y0)
                obj.x = x0;
                obj.y = y0;
            end
            function moveTo(obj,x,y)
                obj.x = x;
                obj.y = y;
            end
            function disp(obj)
                fprintf('点的坐标为(%f,%f)\n',obj.x,obj.y)
            end
        end
    end
    

    在这里插入图片描述

    类的静态方法

    • 在 methods 后面的括号里加 Static 就声明为静态方法
    • 静态方法可以访问类的 Constant 属性

    类的静态属性

    • MATLAB 中没有 C++ 中的静态属性,可以通过一下两种方式实现
    • 如果是常量,则设置为 Constant 属性
    • 如果是变量,则将其在静态函数中设置为 persistent 变量
    classdef A < handle
    	methodes(Static)
    		function increase()
    			persistent counter;
    			if isempty(counter)
    				counter = 1;
    			else
    				counter = counter + 1;
    			end
    		end
    	end
    	methods
    		function obj = A()
    			A.increase();
    		end
    	end
    end
    
    展开全文
  • matlab面向对象

    千次阅读 2018-10-20 21:57:02
    constructor构造方法:负责产生并且返回类的对象,通常还可以用来初始化对象的属性 classdef Point2D&lt;handle properties end methods end end 创建对象 创建对象的方式是直接调用类的constructor 类的...

    定义类

    举例

    下例中包含一个属性block 和一个方法block

    • constructor构造方法:负责产生并且返回类的对象,通常还可以用来初始化对象的属性
    classdef Point2D<handle
        properties 
        end
        methods
        end
    end
    

    创建对象

    创建对象的方式是直接调用类的constructor

    类的属性

    访问对象的属性

    使用dot 运算符

    对象属性的初始化

    1. 使用constructor
    2. 使用属性默认值初始化

    常量(Constant)属性

    定义:在对象生存周期中值保持不变的属性,如果对该属性进行修改都将报错。
    constant property不用创建对象就可以直接使用类中的常量

    classdef A<handle
        properties(Constant)
            R=pi/180
        end
    end
    

    非独立(Dependent)属性

    定义:其值依赖于其他的属性,一旦其他的属性改变,该属性也做响应的变化,在概念上可以理解为数学中的因变量。
    计算该属性的方法由get提供。

    classdef Point2D<handle  
        properties
            x
            y
        end
        properties(Dependent)
            r
        end
        methods
            function obj=Point2D(x0,y0)
                obj.x=x0;
                obj.y=y0;
            end
            function r=get.r(obj)%dependent属性要放在get方法中
                r=sqrt(obj.x^2+obj.y^2);
                disp('get.r called');
            end            
        end    
    end
    

    参考链接

    https://www.zybuluo.com/hainingwyx/note/609905

    展开全文
  • 在一般情况下,定义类属性和方法的时候,方法需要在类体定义。但是当函数体过长会使得类定义显得十分臃肿,所以需要将一些方法单独拿出来,而且在一个程序可能需要很多类,不应该将所有类都放在当前路径上,...
  • 假设我们有了二维点Point类为基类,这是我们想拓展其成为三维点 Point2类,此时并不需要全部重新构造一个新类,而是在Point基础上添加需要属性和方法。 子类会继承所有非私有属性和方法,可以直接访问和使用...
  • matlab面向对象编程

    2019-07-16 14:37:35
    网上搜到都是些零零散散知识点,只有官方手册才是最全面,直接在帮助文件搜索:“Class Definition”, 点开上面方法(函数)...上图红框部分讲解了,普通函数、构造函数、静态函数等写法。 ...
  • 构造方法,初始化 设置函数和获取函数 继承 多态(同一个函数传递不同的对象) 基本模板,点击MATLAB中新建+类 classdef untitled %驼峰式命名 CamelCase 定义一个类 %UNTITLED 此处显示有关此类摘要 % 此处...
  •  内联(inline)函数是MATLAB 7以前经常使用的一种构造函数对象的方法。在命令窗口、程序或函数创建局部函数时,通过使用inline构造函数,而不用将其储存为一个M文件,同时又可以像使用一般函数那样调用它。 ...
  • MATLAB中AR模型功率谱估计中AR阶次估计实现-psd_my.rar (最近看了几个关于功率谱问题,有关AR模型谱估计,在此分享一下,希望大家不吝指正) (声明:本文内容摘自我毕业论文——心率变异信号预处理...
  • 创建一个Mat对象有多种方法,本文将列举最为常用五种: 1.使用Mat()构造函数, 2.利用create()函数创建,用来为已有矩阵开辟内存,不能用来初始化 3.类似于Matlab初始化方式eye,zeros,ones, 4.对小型...
  • 2、C\C++中构造函数进行初始化 3、为已经存在IplImage指针创建信息头 4、利用Create()函数 5、Matlab方式初始化 6、对小矩阵使用逗号分隔式初始化函数 7、为已经存在的对象穿件新信息头 Mat不但是一个非常...
  • MOORA(Multi Objective Optimization on the basis of Ratio Analysis)及matlab应用 一、方法介绍 ...比率法的数学计算过程,第一,要求构造备选对象的决策矩阵。对于融资企业的选择问题,可以构建备
  • 在信息系统动态变化客观环境下,以矩阵作为表达和运算工具从一个全新视角研究信息系统论域随时间变化时,变精度粗糙集模型概念上、下近似集增量式更新方法,并构造出近似集增量式更新矩阵算法,随后分析了...
  • 2、在C/C++通过构造函数进行初始化 3、为已存在IplImage指针创建信息头 4、利用create()函数 5、采用matlab初始化方式: zeros(), ones(), eyes() 6、对小矩阵使用逗号分隔式初始化函数 7、为已存在的的...
  • MATLAB继承

    2019-06-26 21:02:12
    继承 在 MATLAB 继承用 < 表示 多重继承在 < 后面的各个类之间用 & 连接 ...和其他语言一样,可以继承基类的属性和方法 ...构造函数 ...子类的构造函数必须要先调用...我们知道在子类可以覆盖父类的方法...
  • 语音识别的MATLAB实现

    热门讨论 2009-03-03 21:39:18
    语音识别程序的核心部分即采用合适的算法来识别不同的语音信号,在特定人语音识别算法,对于孤立词语语音识别而言,最为简单的方法是采用DTW(Dynamic Time Warping,动态时间弯折)算法,该算法基于动态规划)...
  • 创建 Python® 对象 pyObj 语法如下:pyObj = py.modulename.ClassName(varargin)其中 varargin 是由 ClassName 中的 __init__ 方法指定的构造函数参数列表。在 MATLAB® ,Python 对象是引用类型(句柄对象),...
  • 7.2.4 符号对象的类别识别函数 7.2.5 符号表达式的变量确定 7.2.6 符号精度计算 7.3 符号表达式操作 7.3.1 符号表达式显示 7.3.2 符号表达式合并 7.3.3 符号表达式展开 7.3.4 符号表达式嵌套 ...
  • 为了使用户能够更好地操作MATLAB,本书示例命令已记录在M 文件及其他相关文件,用户可以将相关目录设置为工作目录,直接使用M 文件进行操作,以便快速掌握MATLAB 使用方法。 1.3.3 工作区 1.4 MATLAB R...
  • 在OpenCV创建Mat对象

    2019-11-07 10:07:32
    下面两种方法是我自己比较常用两种方法 采用MATLAB方式初始化矩阵 Mat E = Mat::eye(4, 4, CV_64F); Mat O = Mat::ones(2, 2, cv_32F); Mat Z = Mat::zeros(3, 3, CV_8UC1);CV_8UC3 使用Mat()构造矩阵 Mat M(2,...
  • 图与网络可视化实战(matlab实现)

    千次阅读 多人点赞 2020-03-02 14:56:04
    首先根据输入数据构造邻接矩阵,然后调用matlab中的graph(无向图)或digraph(有向图)函数进行构图。 构图函数有两种常见使用方法: (1)G = digraph(A) %其中A是图邻接矩阵表示,该函数返回digraph对象G ...
  • 本章主要介绍了GUI对象的概念及其操作函数,各种GUI对象的纯代码创建方法、属性及含义。之后以专题形式,全面讲解了超文本标记语言(HTML)在MATLAB中的应用、表格设计及坐标轴设计。本章是GUI设计的重点内容,需要...
  • Matlab基础及应用教程

    2018-09-03 19:54:43
    .....................................132 5.2.1 符号对象的加减.....................132 5.2.2 符号对象的乘除.....................133 5.3 独立变量与表达式化简......................134 5.3.1 表达式的...
  • 理想解法(TOPSIS)法 一基本原理 TOPSIS法是一种综合评价方法其基本原理是 (1) 将n个评价指标看成n条坐标轴由此可以构造出一个n维空间则每个待评价的对象依照其各项指标数据就对应n维空间一个坐标点 (2) 针对...
  • 本节将介绍常微分方程初值问题数值求解,主要内容分为三个部分:常微分方程数值...常微分方程数值求解,指研究求解初值问题各类数值方法的构造、理论分析与数值实现问题。研究主要对象为一阶方程组初值问题: 其中
  • 第1章MATLAB7.0简介 1.1MATLAB的特点 1.1.1MATLAB的基本特点 ...MATLAB的帮助系统 1.3.1帮助浏览器 1.3.2help函数和doc函数 第2章数组和矩阵 2.1表达式 2.1.1变量 2.1.2数值表示 2.1.3...

空空如也

空空如也

1 2 3
收藏数 54
精华内容 21
关键字:

matlab中构造对象的方法

matlab 订阅