版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章 数据类型,概述 基本数据类型 逻辑类型 字符串 结构 元胞数组,3.1 概 述,早期版本:二维数组和字符类型, 目前:多达十几种的基本数据类型,在不同的专业工具箱中还有特殊的数据类型。 MATLAB支持的基本数据类型见图3-1。,图3-1 MATLAB的数据类型,note:获取MATLAB的数据类型列表可以在MATLAB命令行窗口中键入help datatypes命令。,note:1)MATLAB的M语言和其他高级编程语言不同的是,MATLAB没有具体的变量或对象声明和定义过程。(问题:c中是如何操作的?) 2)元胞数组是MATLAB中常用的一种独有的数据类型。 (评价如何?),3.2
2、 MATLAB基本数值类型,3.2.1 基本数值类型入门,表3-1 MATLAB的基本数值类型,复数数据类型 复数可以用表格中所示的各种数据类型创建,但是由于复数由实部数据和虚部数据组成,所以占用的字节数为构成复数的数据类型的两倍,例如复数z = 1+i,在MATLAB中占用了16个字节的内存。,例子3-1 使用不同的数据类型。 在MATLAB命令行窗口中,键入下面的指令: A = 1 2 3; class(A) (求对应的类型) ans = double, B = int16(A); (类型转换) class(B) ans = int16,note: 1)在MATLAB中,任何数据变量都不需
3、要预先的声明; 2)MATLAB将自动地将数据类型设置为双精度类型; 3)其他类型的数据,通过数据类型的转换完成; 4)MATLAB的数据类型名称同样就是数据类型转换的函数。,例子3-2 使用不同的数据类型。 在MATLAB命令行窗口中,键入下面的指令: a = 1 2 3; b = 3 4 5; c = a+b; int16(a)+int16(b) ? Error using = + Function + is not defined for values of class int16.,note:MATLAB系统默认的运算都是针对双精度类型,所以在进行两个int16类型的变量加法时,MAT
4、LAB报告了相应的错误(版本高时不提示出错)。(解决方法:计算前后进行类型转化。),3.2.2 整数类型数据运算 MATLAB运算的基本数据类型为双精度的数据类型,MATLAB还另外提供了一些函数可以进行整数类型数据的运算。,note: 1)在计算机中的任何数据都是由二进制数来保存的。对于整数可以使用原码、反码、补码来表示。 2)整数类型运算类似于c语言中的位运算。,3.2.3 MATLAB的常量,表3-3 MATLAB的常量,note: 1) eps、realmax和realmin三个常量具体的数值与运行MATLAB的计算机相关,不同的计算机系统可能具有不同的数值。 2) MATLAB的常量
5、数值是可以修改的。例如,pi=100,这样pi这个常量的数值就变成了100。但是,如果用clear指令清除变量后,pi将变成原有的常量数值。,3) Inf也可以写作inf,它为IEEE定义的算术数据无穷大数值,在MATLAB中进行诸如1.0/0.0或者exp(1000)的操作时都会得到这个数值。如果将inf应用于函数,则计算结果可能为inf或者NaN。 4) NaN也可以写作nan,它为IEEE规定的某种运算得到的结果,例如0/0的运算得到的结果就是NaN。NaN参与运算的结果也为NaN(关系运算除外)。(当计算结果出现NaN的时候,意味着麻烦就来了。),例子3-4 NaN和Inf运算示例。
6、在MATLAB命令行窗口中,键入下面的指令: a = inf; c = sin(a) c = NaN,3.2.4 空数组 所谓空数组,就是指那些某一个维或者某些维的长度为0的数组。它是为了完成某些MATLAB操作和运算而专门设计的一种数组。,例子3-6 创建空数组。 A = A = B = ones(2,3,0) B = Empty array: 2-by-3-by-0,note: 空数组并不意味着什么都没有( 空?相?),使用whos命令可以看到空数组类型的变量在MATLAB的工作空间中确实存在。,例子3-7 使用空数组的例子。 A (2,2,3) = 1 (多维数组,动态扩展)(结果?)
7、A(:,:,3) = ,A(:,:,1) = 0 0 0 0 A(:,:,2) = 0 0 0 0, B = reshape(1:24,4,6) B = 1 5 9 13 17 21 2 6 10 14 18 22 3 7 11 15 19 23 4 8 12 16 20 24 B(:,2 3 4) = (运行结果如何?),3.3 逻辑类型和关系运算,3.3.1 逻辑数据类型 1) 逻辑数据类型:仅具有两个数值的一种数据类型,其中,一个数值为TRUE,另外一个数值为FALSE。 2)MATLAB将所有非零值看作逻辑真,将零值看作逻辑假。一般地,1表示逻辑真,0表示逻辑假。 note:物理意义表
8、征一件事是真还是假; 一个例子分支语句(if (a5) B = logical(A) C = true(size(A) D = false(size(A),2) (结果如何?自己运行试试看),note: 逻辑类型=布尔类型(其他书籍上的叫法)。,3.3.2 逻辑运算(与、或、非、异或),表3-5 MATLAB的逻辑运算,note: 1)其他类型的数据也可进行逻辑运算,但是运算的结果一定是逻辑类型的数据。 2)短路作用:进行 b = a;b(3,1) =1; a B = magic(3); A B ans = 0 1 1 0 0 1 0 0 1 A = = B ans = 0 0 0 0 1 0
9、 0 0 0,例子3-13 复杂的关系运算。 在MATLAB命令行窗口中,键入下面的指令: A = reshape(-4:4,3,3) A = -4 -1 2 -3 0 3 -2 1 4 B = (A=0) (提问:输出的结果是什么?),1 1 0 1 0 0 1 0 0,3.3.4 运算符的优先级 M语言的运算符和普通的高级编程语言类似,也具有相应的计算优先级: (1) 括号( )。 (2) 数组转置(.),数组幂(.),复转置(),矩阵幂()。 (3) 一元加(+),一元减(?),逻辑非()。 (4) 数组乘法(.*),数组除法(./),数组左除(.),矩阵乘法(*),矩阵右除(/),矩阵
10、左除()。 (5) 加法(+),减法(?)。,(6) 冒号运算符(:)。 (7) 小于(),大于等于(=),等于(= =),不等于(=)。 (8) 元素与( b = MOTO!; length(a) = length(b) ans = 1 c = a, , b c = Hello MOTO!,3.4.3 字符串操作函数,表3-7 常用的字符串操作函数,例子3-19 组合字符串示例。 在MATLAB命令行窗口中,键入下面的指令: a = Hello; b = MOTO!; c = strcat(a,b) c = HelloMOTO!,例子3-20 字符串比较函数应用示例。 在MATLAB命令行窗
11、口中,键入如下的指令: a = The first string; b = The second string; c = strcmp(a,b) c = 0,例子3-21 findstr函数和strfind函数使用示例。 在MATLAB命令行窗口中,键入下面的指令: S1 = A friend in need is a friend indeed; S2 = friend; a = findstr(S2,S1) a = 3 23,3.4.4 字符串转换函数 在MATLAB中允许不同类型的数据和字符串类型的数据之间进行转换。在C语言中,printf函数通过相应的格式字符串就可以输出不同格式的数据
12、。而在MATLAB中,则直接提供了相应的函数完成数制的转换。,表3-8 数字和字符之间的转换函数,例子3-22 num2str函数和str2num函数的用法示例。 在MATLAB命令行窗口中,键入下面的指令: S = 1 2;2 3; A = str2num(S) A = 1 2 2 3 D = num2str(rand(2,2),5) (5代表了转换后小数点后的位数) D = 0.95013 0.60684 0.23114 0.48598,字符串数组、元胞数组与构架数组,字符串数组及处理 P32 (1)用单引号对 (注意:必须在英文状态下输入)来定义字符数组(C 语言中是双引号对 “”);如
13、果需要输入单引号,则必须用 2个个连续的单引号来表示。,(2)数值数组的一个元素(double 型)在内存中占据 8 个字节,字符数组的一个元素则占据 2 个字节。,备注:whos 命令可以列出当前工作区中变量的情况。,(3)字符数组定义后,其引用与赋值和数值数组是类似的。,(4)串数组的 ASCII 码的转换。 用 double 产生字符数组的 ASCII 码; 用 char 把 ASCII 码转换为字符。上述的操作支持中文,但注意中文字符的 ASCII 码大于 256. 中文编码 : 区位码 (5)串转换与串操作函数。 P31 表2.2 串转换函数 P32-33 表2.3 串操作函数,串数
14、组的 ASCII 码的转换,【例】字符串处理是所有程序设计语言的一个重要任务。Matlab拥有大量的字符串处理函数。使用Matlab的字符串处理函数统计字符串 “The 2008 Beijing Olympic Games is a great game” 中包含多少个“a”和多少个“e”。,(6)Matlab 中一个很有用的功能:执行字符串 eval (P32) 可以将字符串作为一个 Matlab 命令来运行。,元胞数组(单元型变量) P34 该数组的基本元素是元胞,每个元胞本身在数组中是平等的,它们只能以下标区分。元胞可以存放任何类型、任何大小的数组。而且,同一个元胞数组中的各元素的内容可
15、以不同。注意:元胞元素的引用用大括号“ ”。,【例】元胞数组是Matlab定义的另外一种强大的数据类型。同一个元胞 数组中不同的元胞可以存放不同类型和不同大小的数据。请使用Matlab 定义一个22大小的元胞数组,并给不同的元胞赋以不同类型的数据, 然后显示这些数据。,注意:元胞元素的引用用花括号“ ”。,【例】用元胞数组实现字符串数组(不是字符数组)的定义。,结构体(结构型变量、构架数组) P36,和元胞数组一样,结构体也能在一个数组里存放各类数据。它和 C 语言中的结构体是完全类似的。 【例】定义一个 2 x 3 学生信息的结构体。 Matlab 实现: StudentArray (2,3
16、)= struct(Name,Sex,Age,Score,); C 语言 实现: typedef struct char Name10; char Sex; short int Age; float Score; STUDENT; STUDENT StudentArray23;,结构体的赋值与引用和 C 语言也是类似的。,【例】结构体或记录体可以模拟自然世界中的一个独立客体的多种 数据。Matlab中的结构体即可实现这种功能。请用Matlab定义一 个包括5名学生的结构体并给其赋值。构架中的域为:姓名、性别、年龄、成绩。最后统计这些学生成绩的平均值。,注意:元胞数组的元素可以是结构体;结构体的元素也可以是元胞数组。如下面的例子: (1)元胞数组的一个元素是结构体;(演示),StudentArray(5, 1) = struct(Name, , Sex, , Age, , Score, , Data, ); A = cell(2, 2); A1, 1 = I love china!; A1, 2 = zeros(4, 4); A2, 1 =
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 豫南地区猪繁殖与呼吸综合征的血清学剖析及病毒溯源探究
- 谷红注射液对大鼠脑出血模型中NGB与IL-6表达影响及脑保护机制探究
- 谐波电能计量中FFT算法的改进与优化研究
- 2026中铁会展有限公司长春分公司招聘5人笔试备考题库及答案详解
- 语料库视角下英式英语词汇美国化的深度剖析与演进洞察
- 语境赋能:高中英语词汇教学的创新与实证探索
- 语域与语类理论:英语听力教学革新的关键钥匙
- 语义与交际翻译视角下英语新闻标题翻译的多维度解析
- 2026陕西西安交通大学大型仪器设备共享实验中心招聘4人考试参考题库及答案详解
- 2026陕西西安国际港务区陆港第七小学教师招聘15人笔试备考题库及答案详解
- 2026-2030中国运甲状腺素蛋白行业市场发展趋势与前景展望战略分析研究报告
- 2025年甘肃金昌市地理生物会考真题试卷(+答案)
- 2026届郑州市高三历史高考三模原创仿真模拟试卷(含参考答案解析)第847套
- 2026年【新教材】人教版(2024)七年级下册生物期末复习知识点背记提纲新版
- 24J113-1 内隔墙-轻质条板(一)
- 二手车鉴定评估表
- 危险化学品安全周知卡(碳酸氢钠 )
- 文档防汛值班表
- SB/T 10569-2010冷藏库门
- GB 14963-2003蜂蜜卫生标准
- 机械结构稳定与非线性分析
评论
0/150
提交评论