matlab面向对象教程【0】初识matlab面向对象

(本教程适用于已有一定matlab基础及面向对象程序设计基础,但没有matlab面向对象基础的读者参考)

不同于面向过程的语言,面向对象语言的核心在于如何编写一个合适的类(class),从而将我们要处理的对象赋予明确的属性以及编写通用的处理方法.matlab已经为我们提供了许多设计好的类,便于我们借助相关工具去处理音频,视频等等,但这些类都是为了处理专门问题而被设计的,有时不能满足我们的需要,尤其涉及到工具箱开发问题时,我们往往不得不自己设计类.本系列教程旨在于使读者对matlab面向对象程序设计有一个初步的了解,值得警醒的是,matlab素以其迅速的数值处理能力著称,面向对象只是一种手段,切不可忽略matlab的核心优势.

$0.1 matlab类设计

在matlab主页中选择 新建-类 即可创建一个用于声明类的m文件,文件大致包括如下内容:

classdef ClassName
% description of this class
% will be shown when using 'help ClassName'
    properties
        property_1;
        % description, will be shown too.
        property_2;
        ...
    end

    methods
        function obj=ClassName(input)
            ...
        end
        function re=method_1(obj,input)
            ...
        end

    events
        ...
    end
end

可以看到的是,这个m文件大致分为四个部分:

·第一部分是类名,以关键词classdef起始,这行下面的注释会在help弹窗中显示出来,为了方便别人使用这个类,请务必写好注释.

·第二部分是属性,以关键词properties起始,以配对的end结束,描述属于该类的对象具有怎样的性质.与C++不同的是,private public protected并非matlab代码中高亮显示的关键字.每个属性下方的注释都会在help弹窗中显示.

·第三部分是方法,以关键词methods起始,以配对的end结束,其中可以包含多个函数,但我们总是将第一个函数作为构造函数,构造函数会创建一个属于该类的对象,与C++相同,构造函数名即类名.值得注意的是,如果方法中需要对对象进行分析,那么应该向这个方法的参数中加入一个对象的实例(可以理解为你对这个实例的操作会被当做例子,应用于你需要操作的对象).同样的,如果需要变更一个对象的某种属性,不仅需要传入这个对象(即告知matlab你需要变更的是什么),也应该把变更结果返回,格式为:

function obj=Change(obj,inputs)
    obj.property_1=f_1(inputs);
    obj.property_2=f_2(inputs);
    ...
end

·第四部分是事件,暂不作介绍.

$0.2 对象属性的访问及方法的调用

对象属性的访问和C++很类似,值得注意的是matlab也支持直接访问对象矩阵的属性(这将会返回一个等规模的矩阵),格式为:

a=ObjectName.PropertyN;
A=[ObjectArray.PropertyN];

方法的调用也遵循相似的格式,值得一提的是,我们不仅能够使用在类定义文件中的方法,其它文件中定义的方法也同样可以直接使用(而不需要在类定义中声明),一些常用的算符或函数也可以被重载(如plus 即+ 等),只需要在类定义的相同文件夹(通常取名为@ClassName)下,给出这些函数的定义即可.
之前提到过需要在函数定义的参数表中给出至少一个实例,但调用的时候可以不用写出,我们可以认为如下两种写法是等价的,至少从字数上来看是如此~:

function(ObjectName,inputs);
ObjectName.function(inputs);

$0.3 类矩阵的创建

矩阵的处理总是matlab的本职工作,类矩阵的创建显然是必要的,不难想象,如下循环可以创建一个长度为10的类向量:

for i=1:10
    vecA(i)=ClassName(inputs);
end

假使我们再进行如下循环,则不难得到一个10*10的方阵:

for j=1:10
    arrayA(j)=vecA;
end

这些处理与我们以前编写的代码无异,不再赘述.

下节预告: 迷宫生成的普利姆算法

matlab面向对象编程教程-A Guide to MATLAB Object-Oriented Programming - Register, CRC 2007.rar 最近想好好学学matlab面向对象编程的一些东西(以前也自学过,但现在想系统学一下,libsvm工具箱几乎已经没有什么可以更新的了。所以想学点新的东西,人总得往前走,多学点东西,过去的翻过去就好了。OO~)。 这一段除了在学习 matlab oop 还把 matlab并行计算的研究学习了一下。 现在想实际做点东西。呵呵~ 在网上一顿搜索,在科学网找到了一个不错的教程(当然matlab oop 的 help文件也是很好的教程) 所以分享一下 === 书籍介绍 A Guide to MATLAB Object-Oriented Programming is the first book to deliver broad coverage of the documented and undocumented object-oriented features of MATLAB®. Unlike the typical approach of other resources, this guide explains why each feature is important, demonstrates how each feature is used, and promotes an understanding of the interactions between features. Assuming an intermediate level of MATLAB programming knowledge, the book not only concentrates on MATLAB coding techniques but also discusses topics critical to general software development. It introduces fundamentals first before integrating these concepts into example applications. In the first section, the book discusses eight basic functions: constructor, subsref, subsasgn, display, struct, fieldnames, get, and set. Building on the previous section, it explores inheritance topics and presents the Class Wizard, a powerful MATLAB class generation tool. The final section delves into advanced strategies, including containers, static variables, and function fronts. With more than 20 years of experience designing and implementing object-oriented software, the expert author has developed an accessible and comprehensive book that aids readers in creating effective object-oriented software using MATLAB. MATLAB的对象指南导向程式的第一本书是提供广泛的覆盖面证件和无证件对象的MATLAB ®导向的功能。与其他资源的典型做法,本指南解释了为什么每一个功能很重要,每个功能演示如何使用,促进了功能之间的相互作用的理解。 假设MATLAB的编程知识的中级水平,这本书不仅集中在MATLAB的编码技术,并讨论重要议题一般的软件开发。它引入例如前申请纳入这些概念基本条件。在第一部分,这本书讨论了8个基本功能:构造,subsref,subsasgn,显示,结构,字段名,获得,并设置。在上一节为基础,它继承专题探讨,并提出了类向导,一个强大的MATLAB的类生成工具。最后一节将深入讨论先进的战略,包括集装箱,静态变量和功能方面。 拥有超过20年的经验,制定和实施面向对象的软件,专家作者已经开发出了方便和全面的书,用MATLAB建立有效的面向对象的软件辅助读
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值