Matlab学习入门篇(二) 您所在的位置:网站首页 环形数组怎么定义数据类型 Matlab学习入门篇(二)

Matlab学习入门篇(二)

2024-07-05 16:39| 来源: 网络整理| 查看: 265

文章目录 一、数值型1.整数类型1.1 MATLAB中的整数类型1.2 取整函数 2.浮点数类型 二、逻辑型1.直接赋值2.根据表达式创建3.函数转化(logical)4.运算符的优先级 三、结构数组1.结构数组的创建1.1使用直接赋值法创建结构数组1.2 使用struct函数创建结构数组1.3 结构数组的访问1.4 结构数组域的增加1.5 结构数组域的删除1.6 数值运算操作和函数在结构数组中的应用

Matlab提供了多种数据类型,包括数值类型、逻辑类型、字符串、函数句柄、结构数组和单元数组类型等,且在matlab中任何一种数据类型都以矩阵或者是数组形式来表示。注:这里的矩阵或是数组,是指最小的0x0或N维任何大小的矩阵或者数组。

一、数值型

基本的数值类型主要有整数、单精度浮点数和双精度浮点数三种类型。默认情况下,Matlab在存储数据时使用的双精度浮点数,用户不可以更改默认的数据类型和精度,但是可以选择用非默认的整数或者单精度浮点数来存储来存储矩阵或者数组。

1.整数类型 1.1 MATLAB中的整数类型 整型类别取值范围函数有符号的8位整数-2的7次方至2^7 -1int8有符号的16位整数-2的15次方至2^15 -1int16有符号的32位整数-2的31次方至2^31 -1int32有符号的64位整数-2的63次方至2^63 -1int64无符号的8位整数0到2^8 -1uint8无符号的16位整数0至2^16 -1uint16无符号的32位整数0至2^32 -1uint32无符号的64位整数0到2^64 -1uint64

在实际应用中,应根据实际需求合理选择合适的整数类型。由于MATLAB中数值的默认存储类型是双精度浮点数,因此将变量设置为整数类型时,需要使用相应的转换函数,将双精度浮点数装换为指定的整数类型。 在转换过程中,MATLAB默认将待转换数值转换为与之最接近的整数值。例如:

>> a = 2.4 a = 2.4000 >> b = int8(a) b = int8 2 1.2 取整函数 函数运算法则备注floor(x)向下取整不大于其最大的整数ceil(x)向上取整右取整round(x)去最接近的整数,如果小数部分是0.5,则向绝对值大的方向取整正数四舍五入,负数四舍五入后填负号fix(x)向0取整距离0最近的整数 2.浮点数类型

单精度浮点型:single 双精度浮点型:double 单精度数组比双精度数组更能节省更多的内存空间,灵活运行可以更高效的利用内存。

二、逻辑型

逻辑数据类型,即仅有具有“true”和“false”两个数值的一种数据类型。true用1表示、false用0表示,在逻辑运算中,Matlab将所有的非零值作为逻辑true来进行计算,而将零值作为逻辑false来进行计算。 逻辑型数据一般可以通过直接赋值、根据表达式创建以及函数转化三种方式生成。

1.直接赋值

此方法是将true和false值直接赋值给变量。例如将true赋给a,false赋给b,最后通过whos查看变量的赋值情况。

>> a = true a = logical 1 >> b = false b = logical 0 >> whos Name Size Bytes Class Attributes a 1x1 1 logical b 1x1 1 logical 2.根据表达式创建

Matlab逻辑运算符或函数将会返回逻辑型的true或者false。以下是常见的运算符和函数及对应的说明。

运算符或函数说明&&具有短路作用的“与”操作,仅能处理标量||具有短路作用的“或”操作,仅能处理标量==关系运算符,等于~=关系运算符,不等于关系运算符,大于&元素“与”操作=关系运算符,大于等于any当向量中的元素有非零元素时,返回true(也就是1)all当向量中的元素都是非零元素时,返回truexor逻辑“异或”操作所有以is开头的函数判断操作

例如:将表达式1>0的值赋给变量c,表达式1>5的值赋给变量d

>> c = 1 > 0 c = logical 1 >> d = 1 > 5 d = logical 0 3.函数转化(logical)

函数的转化使用的是logical函数,可将任意类型的的数组转换为逻辑型。其中非零元素为true,零元素为false。

>> e = logical(6) e = logical 1 >> f = logical(0) f = logical 0 4.运算符的优先级

在遇到表达式中有较多运算符的时候,需要严格遵守以下的运算符计算优先级。 以下将matlab语言的优先级和计算优先级,按照从高到低的顺序进行排序。

括号()数组的转置、数组幂、复转置、矩阵幂代数正(+)、代数负(-)、逻辑非(~)数组乘法(.*)、数组除法(./)、矩阵乘法(*)、矩阵除法(/)、矩阵左除(\)加法(+)、减法(-)冒号运算符(:)小于(=)、等于(==)、不等于(~=)元素“与”(&)元素“或”(|)短路逻辑“与”(&&)短路逻辑“或”(||) 三、结构数组

结构是Matlab提供的一种将选择的数据存储到一个实体中的数据类型。结构可以由数据容器组成,容器叫做域,每个域中可以存储Matlab支持的数据类型。结构数组可以具有任何大小且是很重要的混合数据类型存储手段。

1.结构数组的创建 1.1使用直接赋值法创建结构数组

teacher就是以结构类型存储的数据,包含了4个元素。

>> teacher.name="Tom" teacher.sex="male" teacher.age=40 teacher.number=15689 teacher = 包含以下字段的 struct: name: "Tom" sex: "male" age: 40 number: 15689

在变量区可以清晰的看到teacher结构数组包含的4个元素以及对应的值

1.2 使用struct函数创建结构数组

struct函数可以根据指定的域及其相应的值创建结构体数组 这是基本的语法格式:

structure_array = struct('field1',{var1} 'field2', {var2}, ...) structure_array = struct('field1', var1, 'field2', val2, ...)

利用以上语法格式创建一个student结构数组,输入完后直接按下Enter键,显示student的具体内容:

>> student=struct('name','henry','age',26,'grade',uint16(1)) student = 包含以下字段的 struct: name: 'henry' age: 26 grade: 1 >> whos Name Size Bytes Class Attributes student 1x1 524 struct

同样的,在变量区显示出具体的变量名称及其对应的值

1.3 结构数组的访问

语法格式:structName.fileName(fRows,fCols,...) 紧接着上例中的student结构,访问其内部的元素

>> student.name ans = 'henry' >> student.age ans = 26 >> student.grade ans = uint16 1 1.4 结构数组域的增加

增加结构数组域最常用的方法就是对其直接赋值,且增添子域的操作只会影响被操作的具体结构,而不影响整个结构数组。例如给student结构再添加一个元素address并为其赋值。

>> student=struct('name','henry','age',26,'grade',uint16(1)) student = 包含以下字段的 struct: name: 'henry' age: 26 grade: 1 >> student.address="Beijing" student = 包含以下字段的 struct: name: 'henry' age: 26 grade: 1 address: "Beijing" 1.5 结构数组域的删除

结构数组的删除:需要使用rmfield函数,此时会得到一个新的结构数组。

>> student=struct('name','henry','age',26,'grade',uint16(2)) student = 包含以下字段的 struct: name: 'henry' age: 26 grade: 2 >> student_array = rmfield(student,'age') student_array = 包含以下字段的 struct: name: 'henry' grade: 2 1.6 数值运算操作和函数在结构数组中的应用

若结构数组域中的内容是数值型的一般矩阵,那么适用于一般矩阵的数值操作和函数也可以应用于结构数组。

>> A.a=magic(3) A = 包含以下字段的 struct: a: [3×3 double] >> A.a ans = 8 1 6 3 5 7 4 9 2 >> A.a.^2 ans = 64 1 36 9 25 49 16 81 4 >> sqrt(A.a) ans = 2.8284 1.0000 2.4495 1.7321 2.2361 2.6458 2.0000 3.0000 1.4142

未完待续。。。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有