缘由:

今天偶然看了一个matlab的代码,然后发现自己都不清楚怎么运行,在运行主函数的时候会出现Undefined variable ***“”

不懂是怎么回事,就想尝试找源头一个一个的看关联函数,但是没有成功。

然后就看发现一个自己之前没见过的“classdef  ”

(1) help classdef

classdef classname begins the class definition and an end keyword terminates the classdef block. Only blank lines and comments can precede classdef. Enter a class definition in a file having the same name as the class, with a filename extension of .m.

Class definition files can be in folders on the MATLAB® path or in class folders whose parent folder is on the MATLAB path. Class folder names begin with the '@' character followed by the class name (for example,@MyClass). For more information on class folders, see Class Files and Folders .

For more information on classes, see Classdef Block and Class Definition .

properties begins a property definition block, an end keyword terminates the properties block. Class definitions can contain multiple property definition blocks, each specifying different attribute settings that apply to the properties in that particular block.

(2)百度

链接: Matlab编程中使用类_凤凰族_凤凰族的和讯博客 http://phenixfamily.blog.hexun.com/79855249_d.html

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

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

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

   自己动手-----New-->Class---> 定义

第一种使用:单个文件----classExample

类文件classExample.m 代码:

classdef classExample%UNTITLED Summary of this class goes here%   Detailed explanation goes here  详细解释如下properties               %定义属性---类变量xyendproperties (Constant)    % 定义类常量z =100endmethods                  % 定义类的方法function obj = classExample (a,b)   %构造函数,函数类名一致,完成类中变量的初始化obj.x = a;obj.y = b;endfunction display(obj)   % 自定义函数fprintf ('自定义类显示信息:\t ');fprintf('x+y = %d',obj.x + obj.y);endendend

运行结果: 

对于常量不同调用方法

第二种方法: 使用@文件夹形式

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

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

需要的注意的是,在使用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拷贝进去,然后在包目录外调用,结果如下:


    
    目录结构如下:

13,matlab中的 classdef定义类的使用相关推荐

  1. python 中三种定义类的方式

    在Python中方,有三种定义类的方法: 常规方式.@classmethod修饰方式.@staticmethod修饰方式 class类定义 In [1]: class A:...: def commo ...

  2. MPC模型预测控制及在Matlab中实现函数定义

    基于b站DR_CAN老师的MPC控制视频[MPC模型预测控制器]4_数学建模推导--Matlab代码详解_哔哩哔哩_bilibili的学习分享如下: 一.研究目的 在约束条件(物理限制)下达到最优的系 ...

  3. matlab 中数据未定义,matlab总是出现参数未定义

    matlab 曲线拟合参数 1.你给的数据有问题,t有11个点,而R只有10个点.暂按照删去t的最后一个点考虑.2.拟合和很多因素有关,比如初值.拟合函数的选择.算法设置等.3.按现有程序拟合的结果: ...

  4. java中随机数怎么定义类_浅析Java中的随机数类

    Java中的随机数是否可以重复?Java中产生的随机数能否可以用来产生数据库主键?带着这个问题,我们做了一系列测试. 1.测试一: 使用不带参数的Random()构造函数 * @author Carl ...

  5. matlab中opc没有注册类,电脑中出现没有注册类别的错误提示的多种解决方法

    有不少用户在电脑系统中发现弹出一个警告窗口,提示"没有注册类别"或"没有注册类"的提示,但出现这样的问题又有些不同,因为有的是在不同情况下发生的,所以我们必须根 ...

  6. matlab中的sjy定义,sjy(sjy是什么缩写)

    sjy液压升降平台升起后,自己下降,是长期没更换液压油,出现杂质,回油阀堵塞,造成的.可更换液压油,清洗回油阀 你好!沈佳宜..仅代表个人观点,不喜勿喷,谢谢. 我的意思 我在别人论文的matlab程 ...

  7. matlab中函数的定义和使用

    在matlab的选择框中的的新建中选择新建函数,一般是以.m的文本文件,新建后我们可以在里面写入我们的实现函数,现在我们给出两个实例看一下,分别是简单的求和和Fibonacci sequence. 1 ...

  8. matlab 声明变量范围,matlab中syms如何定义变量范围

    符号运算太慢! 把表达式写出来有太占地方!不过运行快啊! >> zhouch ans = 76.4040 >> function zhouch quad(@zhchjf,0,2 ...

  9. matlab定义字母常数,在matlab中,如何定义函数式子中的未知常数。

    新建一个.m文件,第一行输入下面的格式function [y,m] = abc(x)其中... 定义未知数:syms xx是变量 .syms是定义符号变量.补充:syms是... 这不是解方程,这是曲 ...

最新文章

  1. 终于,「最近邻搜索」有通用方法了
  2. 汤家凤高等数学2020年强化笔记-第三模块-积分学
  3. CSS DIV Shadow
  4. julia 调用python库_Julia调用Python实现超像素分割SLIC算法
  5. LeetCode 142环形链表||-中等
  6. 如何赋值hook定义的变量
  7. php怎样创建csv文件,如何使用PHP创建CSV文件?(代码示例)
  8. 作业6--四则运算APP之Sprint计划
  9. 从汇编的眼光看C++(之泛型编程)
  10. mysql主从延迟设置
  11. 高清电视开播:大多用户仍难跨入
  12. 考研南邮和杨大计算机,江苏省这4所“非211”低调有实力,从不争名次,毕业生颇受欢迎...
  13. JavaScript正则表达式学习笔记之一 - 理论基础
  14. Jib快速打包Docker镜像
  15. 带孩子们做环球旅行的读后感_天天带孩子的宝妈有多辛苦,男人们就不能温柔一点吗...
  16. 思维模型丨看先辈是如何学习的?
  17. 计算机会计技术特点,会计电算化系统的特点
  18. 被删除的pip,重新安装
  19. 一些我平常用到的软件
  20. 整车下线流程(EOL)测试解决方案介绍

热门文章

  1. 云计算重构渠道商的价值基础,推动渠道商向服务商转型
  2. 总结:如何使用redis缓存加索引处理数据库百万级并发
  3. linux tc打造ip流量限制
  4. IT规划的企业应用实践(6)研究背景 之 企业信息化建设的诉求
  5. 通过xmanager远程连接redhat linux as 5
  6. AJAX范例大搜罗(转载)
  7. 计算机审计 pdf,计算机审计第三章作业.pdf
  8. 安装Android SDK需要选择哪些,开始为Android开发,我应该选择安装哪些SDK?
  9. php 依赖注入框架,通过实现依赖注入和路由,构建一个自己的现代化PHP框架
  10. 观察内核linux行为,Linux 学习:基于proc观察Linux行为