Matlab作为一个强大的计算平台已经广为人知,但是人们往往注重Matlab的函数,工具箱,而忽视了其面向对象编程的能力,我上网google了一下,好像没有什么中文的介绍,偶有高手涉猎一下,也是言简意赅,不能尽兴。今天我就做一个小小教程,用最简单的例子说明一下Matlab编程中类的使用。这里假设诸位看官已经有了基本的Matlab知识,所有的介绍也建立在此基础上。

    Matlab中创建类的方法有两种:

    1、使用单一的m文件。把类的定义和类方法的实现都放在一个m文件中,用类的名字命名文件,即"类名.m"。这样的实现方法与C++、java等常用编程语言相似,我本人也倾向于这种方法。

    2、使用@文件夹。建立一个文件夹,命名的方式是“@类名”。所有的类定义及方法文件都放在这个目录下,类的方法可以使用单独的文件,用方法名来命名。这种方法是Matlab早期版本的类实现方法,现在新的版本下面也支持这种方式。

    当然,对于第2种方法,随着Matlab版本的更新,以7.6版本为分水岭,前后还是有所区别,当然也是后面的版本兼容以前的方式,下文会举例说明,没有兴趣了解的也可以跳过,毕竟掌握最新的东西就OK了,过去的就让他过去吧。

 

    一、首先看一下使用单一m文件的例子。

    查看更多精彩图片
    

    把这个文件保存为example1.m,放在Matlab的当前工作目录或者搜索路径里,就可以使用example1这个类了。

    查看更多精彩图片
    
    如果没有display函数的话,Matlab就会使用默认的类显示信息,如下图所示:

    查看更多精彩图片

    各位看官可能注意到了,我们定义类变量的时候还定义了一个常量z,调用z的时候直接使用“类名.变量名”的方式就行了。

    查看更多精彩图片

    好了,单一m文件的类构造方法就介绍到这里了,很简单是不是?

 

    二、下面我们来看看@文件夹方法实现类的过程和注意的要点。

    首先要新建一个目录,这里的例子类名是example2,所有文件夹的名字为@example2,当然也是放在Matlab的当前工作目录或者是搜索路基里面。

    在这个目录里,要有至少一个文件,即example2.m,这个文件包含了类定义和构造函数,当然也可以包含其他类函数,如果所有函数都写在这个文件里就是单一m文件的形式了。不过@文件夹方式下,其他的类函数是可以独立为一个普通的m文件的,就跟通常使用的函数文件一样,只是因为放在这个@文件夹下,就被Matlab认为是该类的类函数。这种方法适合有很多类函数的时候,便于管理。

    example2类跟example1类的内容是一样的,这里我们只是把prod这个类函数独立出来,单独作为一个m文件,就是将这个函数的部分剪切出去,保存成prod.m。其他的完全一样。需要的注意的是,在使用example2这个类的时候,不能在@example2这个目录里,必须在目录外,因为Matlab把整个目录看作一个整体。另外,只要是分成两个或两个以上的文件来实现一个类的情况,就必须用@文件夹方法,而且所有文件必须都放到该文件夹内。

    所以该目录的结构是:

    查看更多精彩图片

    现在我们来说说7.6版本之前的@文件夹方法和之后的方法有什么不同。现在再用7.6之前的方式实现一下example1,取名example3。

    主要的不同就在于类定义文件,即example2.m和我们example3.m,虽然都是以类名来命名,但是实现方法大不相同。

    example2.m的类实现跟example1.m是一样的,只是把prod函数分离出去了。

    查看更多精彩图片

    但是example3.m就完全是一个函数,没有classdef关键字,关键点是class函数。

    查看更多精彩图片

    其他的display和prod函数内容都完全一样,只是独立为一个m文件。

    目录结构如下:

    查看更多精彩图片

    三、最后我们聊聊包的概念。包的概念也就是命名空间的概念,把相关的类和函数通过一个包来组织起来,使之不予其他的同名类或者函数相混淆。

    在Matlab中,包的实现方法就是用“+包名”的形式来创建一个目录,也是要放到Matlab当前工作目录或者搜索路径中。使用包里面的类或者函数的时候,只要使用“包名.类名”或者“包名.函数名”即可。

    我们创建一个目录,取名+packageExample,然后将example1.m拷贝进去,然后在包目录外调用,结果如下:

    查看更多精彩图片
    
    目录结构如下:

    查看更多精彩图片

 

    是不是很简单,好吧,今天就写到这里,至于更加深入的类的应用,就需要各位看官在日后细细研究了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值