Matlab讲义-第四章Matlab语言数据结构1-10.pdf
第四章第四章 Matlab语言基础语言基础 Matlab语言程序简洁、可语言程序简洁、可 读性很强而且调试十分容易。读性很强而且调试十分容易。 是是MALAB的重要组成部分。的重要组成部分。 MATLABMATLAB的数据类型的数据类型 各种数据类型的层次关系 4.1 Matlab语言的数据结构 每一种数据都以矩阵 或数组的形式存在 4.1 Matlab语言的数据结构 Matlab共有六种基本数据类型,每一种数据都以矩阵 的形式存在。包括 数值型双精度double,单精度single,整数型(integer) 字符型char 单元型cell 结构型struct 逻辑类logical 函数句柄型function handle 一般只在大型程序中使用 在MATLAB中,所有的 数据类型都用双精度类 型double来存储和运算 uint8类型数值范围从0255。在图像处理工具箱中,图 像中每个像素的灰度值均为uint类型。 一般用于存储图象数据 整数型 在MATLAB中,所有的数据类型都用双精度类型 double来存储和运算; 可对unit等类型数组进行基本操作,但不能对它 们执行任何数学运算,在执行数学运算之前必须 用double函数把这类数组转换成双精度型。 如对图像进行运算时,要将读入MATLAB的图像 数据转换为double类型,运算结束后,要显示图像 或保存图像,则必须将double类型转换成uint类型。 y2mat2graydetxdata; imshowy2 subimagey2; txdataimreadlena.bmp; double_txdatadoubletxdata; 对图像进行运算时,要将其转换为double类型, 运算结束后,要显示图像或保存图像,则必须将 double类型转换成uint类型。 本节侧重介绍MATLAB中的字符 Lenna/Lena是 一张数字化了 的1972年12月 份的美国花 花公子插页 clc,clear tpimreadlena.bmp; imshowtp double_tpdoubletp; outdouble_tpsqrt2000*randnsizedouble_tp; y2mat2grayout; figure2 imshowy2 subimagey2; 100200300400500 100 200 300 400 500 4.1.1字符 字符串变量是指字符向量或矩阵 下面介绍字符向量和字符矩阵的创建 sUniversity of Petroleum of China s University of Petroleum of China 1.字符向量的构造 一、字符向量和字符矩阵的创建 (1)直接赋值的方法加单引号 S10为字母y S15为P 可见s为33个元素的字符向量 sizes 查看变量的维数 ans 1 33 两种方法 2用构造字符串向量将多个串变为一个串 说明当在字符向量内出现单引号时,应改为两个 单引号(注意不是双引号),如 sChina, , University of Petroleum sChina, University of Petroleum ChinaUniversity of Petroleum sIts yours. 屏幕上显示内容为Its yours. 将多个字符串连接在一起,与数值矩阵结果一致 可人为加空格 2.字符矩阵的构造 字符矩阵的构造有三种方法 、char、str2mat 一般使用函数char及str2mat 函数char及str2mat 自动在较短的字符行向量后面补上 空格,以使每行的长度相同。 S1 Beijing ; Tianjin ; Shanghai; S2charBeijing, Tianjin, Shanghai S3str2matBeijing, Tianjin, Shanghai; S1 Beijing ; Tianjin ; Shanghai S2charBeijing, Tianjin, Shanghai S3str2matBeijing, Tianjin, Shanghai S1 Beijing Tianjin Shanghai S1,S2,S3相同, 均为 3行8列的 字符矩阵 char及 str2mat自动补空格,且各串中间必须使用,号, 不能用;分号,因函数参数之间要用,逗号 若用给字符矩阵赋值,需手动加空格 二.字符串函数(strfun库 abs 字符串到ASCII转换 setstr ASCII转换成字符串 dec2bin 十进制数到二进制字符串转换 bin2dec 二进制字符串转换成十进制数 hex2num 十六进制字符串转换成IEEE浮点数 num2str 数值转换成字符串 int2str 将数值取整后转换成字符串 upper 字符串转换成大写 lower 字符串转换成小写 sprintf 用格式控制,数字转换成字符串 sscanf 用格式控制,字符串转换成数字 str2num 字符串转换成数值,如0111111 str2mat 字符串转换成一个字符矩阵 下面介绍MATLAB中对字符串的几类常用操作方法。 absabcd ans 97 98 99 100 1.abs函数字符串到ASCII转换,即查看ASCII值 2. setstr函数ASCII转换 成字符串 u97 98 99 100 ysetstru y abcd 把数字按照ASCII码构造 为字符串向量 3.char97,98,99,100 【举例】 4.num2str函数 num2str97.7 98 99 100 ans 97.7 98 99 100 数值矩阵转换成字符串矩阵 【例】许多情况下,希望把一个数值嵌入到字符串中。 函数函数disp不显示变量名不显示变量名t,而直接显示变量所代而直接显示变量所代 表的字符串表的字符串 A circle of radius 2.5 has an area of 19.63. rad2.5; areapi*rad2; 字符串转换函数可完成这个任务 tA circle of radius , num2strrad,has an area of , num2strarea,.; dispt 5.bin2dec函数二进制字符串转换成为十进制数 6.str2num函数字符串转换成为数值 bin2dec 1111 ans 15 str2num4.2 ans 4.2000 7.int2str函数数值取整后转换成字符串 int2str97.7 98 99 100 ans 98 98 99 100 把数值取整后再转换为字符串 isstra 若变量a为字符串或字符矩阵时,输出为1;否则输 出为0 8.isstr函数判断一个变量是否为字符串 9.blanks函数用于定义空格符 s blanks10 s为字符串,其内容为10个空格 10.deblank函数用于去除字符串尾部的空格 1所有字符串都用单引号括起来。 2字符串中的每一个字符(不是单词)都是该字 符串变量(矩阵或向量)中的一个元素。每个字符 都用8个字节来存储。 3注意abs,bin2dec等字符串转换函数要求由字符串 转为其他。 总结MATLAB中的字符串使用基本规则 Xfram0 1 1 ; NumTransbin2decnum2strXfram_re; 例例1将已知二进制序列按将已知二进制序列按每每3位转为十进制数位转为十进制数 bin2dec要求对 字符串进行转换 【例2】要求把一个字符串转换成大写,不用upper 函数。 1函数find用来找出小写字母的下标值; 2小写元素减去32;得出一个数 3用setstr把求得的数按ASCII码转换成字符串表示 分析 sIf I have more time, ; setstr函数ASCII转换成字符串 如何找出小写字母 sIf I have more time, ; 定义字符向量 s IF I HAVE MORE TIME, i Columns 1 through 14 2 6 7 8 9 11 12 13 14 16 17 18 19 20 注意i为索引值 sisetstrsi-a-A; ASCII码转字符串 或sisetstrsi-32 s ifindsa sisetstrsi-a-A ASCII码转字符串码转字符串 sicharsi-a-A 或或pisetstrsi-32 i Columns 1 through 14 2 6 7 8 9 11 12 13 14 16 17 18 19 20 注意i为索引值 s IF I HAVE MORE TIME, Thank you for your cooperation