Matlab 数据类型.ppt
数学软件实习Matlab 数据类型q 文文件件操操作作是是一一种种重重要要的的输输入入输输出出方方式式,Matlab 提提供了一系列输入输出函数,专门用于文件操作。供了一系列输入输出函数,专门用于文件操作。q Matlab文文件件操操作作主主要要有有三三个个步步骤骤:首首先先打打开开文文件,然后对文件进行件,然后对文件进行读写读写操作,最后要操作,最后要关闭关闭文件。文件。q Matlab中中的的输输入入输输出出函函数数是是以以C语语言言标标准准库库函函数数中中的的输输入入输输出出函函数数为为基基础础开开发发的的,所所以以这这些些函函数数与与C语言的输入输出函数相类似。语言的输入输出函数相类似。例:例:ex4file1.mMatlab 文件操作介绍文件操作介绍q 变量变量u 变量是任何程序设计语言的变量是任何程序设计语言的基本元素基本元素之一。之一。u Matlab 并不要求对所使用的变量进行事先声明,并不要求对所使用的变量进行事先声明,也不需要指定变量类型,也不需要指定变量类型,Matlab 会自动根据所赋予变会自动根据所赋予变量的值或对变量所进行的操作来确定变量的类型。量的值或对变量所进行的操作来确定变量的类型。u 在赋值过程中,如果变量已经存在,在赋值过程中,如果变量已经存在,Matlab 会用会用新值代替旧值,并以新值代替旧值,并以新的变量类型代替旧的变量类新的变量类型代替旧的变量类型型。变量与常量变量与常量n 变量名长度变量名长度不超过不超过 65 (Matlab6.5.1 版本以上版本以上)n 变量名必须变量名必须以字母开头以字母开头,可包含字母(大小写)、,可包含字母(大小写)、数字和下划线数字和下划线变量的命名规则变量的命名规则n 变量名变量名区分大小写区分大小写常量名常量名常量值常量值常量名常量名常量值常量值i,j虚数单位虚数单位realmin最小的正浮点数最小的正浮点数pi圆周率圆周率realmax最大的正浮点数最大的正浮点数eps浮点运算相对精度浮点运算相对精度NaN不定值不定值Inf无穷大无穷大Matlab中经常使用的一些常量中经常使用的一些常量Matlab 常量常量q Matlab 中有一些预定义的变量,这些特殊变量称中有一些预定义的变量,这些特殊变量称为常量。为常量。数据类型数据类型l numeric:数值:数值l char:字符:字符l logical:逻辑逻辑l cell:单元、细胞、元胞:单元、细胞、元胞l struct:结构结构q Matlab 数据类型的最大特点是每一种类型都是以数据类型的最大特点是每一种类型都是以数组为基础数组为基础,Matlab 事实上把每种类型的数据都作为事实上把每种类型的数据都作为数组来处理。数组来处理。q Matlab 常用的数据类型有:常用的数据类型有:Matlab7.1 中的数据类型表中的数据类型表逻辑逻辑字符字符细胞细胞函函数数句句柄柄q 在缺省(默认)状态下,在缺省(默认)状态下,Matlab 将所有的数都将所有的数都看作是双精度的浮点数。看作是双精度的浮点数。q 使用整型变量和单精度变量可以节约内存空间。使用整型变量和单精度变量可以节约内存空间。数值型数值型q 数值型数据包括数值型数据包括l 整数:整数:带符号带符号和和无符号无符号l 浮点数:浮点数:单精度单精度和和双精度双精度数据类型数据类型取值范围取值范围转换函数转换函数带符号带符号 8 位整型位整型-27,27 1int8带符号带符号 16 位整型位整型-215,215 1 int16带符号带符号 32 位整型位整型-231,231 1int32带符号带符号 64 位整型位整型-263,263 1 int64无符号无符号 8 位整型位整型0,28 1uint8无符号无符号 16 位整型位整型0,216 1uint16无符号无符号 32 位整型位整型0,232 1uint32无符号无符号 64 位整型位整型0,264 1uint64整数整数q Matlab 提供四种带符号整型和四种无符号整型提供四种带符号整型和四种无符号整型x1=11x2=15x3=16x4=127x5=255x6=255x7=0举例举例x1=int8(11);x2=int8(15.49);x3=int8(15.5);x4=int8(130);x5=uint8(255);x6=uint8(256);x7=uint8(-1);u 相同整型数据之间的运算,结果为同类型的整数。相同整型数据之间的运算,结果为同类型的整数。例:例:int8(12)*int16(3)Xu 整型数据可以和整型数据可以和双精度标量双精度标量进行数值运算,进行数值运算,结果为整数结果为整数。在运算过程中在运算过程中保持浮点运算精度保持浮点运算精度,最后将结果转换成整型。,最后将结果转换成整型。整型数据不能与不是标量的双精度整型数据不能与不是标量的双精度数组数组进行运算进行运算整型数据的运算整型数据的运算q 整型数据可以参与的运算有下面两种:整型数据可以参与的运算有下面两种:不同的整型数据之间不能进行运算不同的整型数据之间不能进行运算q 可以用可以用 intmax 和和 intmin 函数来查询不同整型所能函数来查询不同整型所能表示的最大整数和最小整数。表示的最大整数和最小整数。例:例:最大整数与最小整数最大整数与最小整数intmax(int8);intmin(int8);intmax(uint8);intmin(uint8);intmax;intmin;intmax(int32);intmin(int32);l single:将数据转换成单精度浮点数将数据转换成单精度浮点数l double:将数据转换成双精度浮点数:将数据转换成双精度浮点数operandsingledoubleint/uintcharlogicalsinglesinglesinglesinglesingledoublesingledoubleint/uintdoubledouble浮点数与其它类型数据运算表浮点数与其它类型数据运算表浮点数浮点数q 浮点数包括浮点数包括单精度单精度(占(占 4 个字节)和个字节)和双精度双精度(占(占 8 个字节),缺省为双精度。个字节),缺省为双精度。q 浮点数转换函数浮点数转换函数X最大和最小浮点数最大和最小浮点数q 可以用可以用 realmax 和和 realmin 函数来查询单精度和函数来查询单精度和双精度所能表示的最大浮点数和最小浮点数。双精度所能表示的最大浮点数和最小浮点数。例:例:realmax(single);realmin(single);realmax(double);realmin(double);realmax;realmin;realmax(double);realmin(double);u 直接输入:直接输入:u 使用使用 complex 函数函数复数复数q 可以通过以下方式定义复数可以通过以下方式定义复数z=3+4iz=complex(3,4)z=complex(3)z=complex(3,0)虚部与虚数单位之间不能留空格虚部与虚数单位之间不能留空格整型数据相关函数整型数据相关函数浮点数相关函数浮点数相关函数复数相关函数复数相关函数其它相关函数其它相关函数判断数据类型相关函数判断数据类型相关函数q 字符串和字符数组字符串和字符数组n 字符串必须用字符串必须用单引号单引号括起来括起来n 字符串是由多个字符组成的字符串是由多个字符组成的字符行向量字符行向量字符与字符串字符与字符串q 字符与字符串运算是各种高级语言不可缺少的字符与字符串运算是各种高级语言不可缺少的部分,部分,Matlab具有强大的字符处理能力。具有强大的字符处理能力。str1=Matrix Laboratorystr2=M,a,t,r,i,xn 字符数组必须是方的,即每行的字符个数必须相等字符数组必须是方的,即每行的字符个数必须相等str3=M,a,t;r,i,xq 字符串中的每个字符(包括空格)都是字符串的字符串中的每个字符(包括空格)都是字符串的一个元素一个元素字符与字符串字符与字符串str=Matrix;str(3)%从从 1 开始数起开始数起size(str)str=Matrix;double(str(3);double(str);%查看每一个字符的查看每一个字符的ASCII码码q Matlab中字符是以中字符是以 ASCII 码存储的,因而码存储的,因而区分大区分大小写小写,可用,可用 double 函数查看一个字符的函数查看一个字符的 ASCII 码码q 使用使用 char 函数函数ASCII 码码 字符串字符串字符串的生成字符串的生成q 直接赋值直接赋值str1=Matrix;str2=Laboratory;str=str1,str2;str=char(77,97,116,108,97,98)str=char(str1,str2)l 生成一个字符数组,第一行为生成一个字符数组,第一行为 str1,第二行为,第二行为 str2l 数值矩阵到字符数组:数值矩阵到字符数组:num2str、int2str、mat2strl 字符数组到数值数组:字符数组到数值数组:str2num字符串与数值数组字符串与数值数组q 字符串、字符数组与数值数组之间的转换字符串、字符数组与数值数组之间的转换u 按按 ASCII 码转换码转换l 字符数组到数值数组:字符数组到数值数组:doublel 数值数组到字符串:数值数组到字符串:charu 直接将转换数值数组转换成字符数组直接将转换数值数组转换成字符数组举例举例a=97,97.3;97.8,98;str1=char(a);str2=num2str(a);str3=int2str(a);str4=mat2str(a);l char 的输入参数范围为的输入参数范围为 0,65535,当输入参数中,当输入参数中有小数时,直接将小数部分舍去。有小数时,直接将小数部分舍去。l num2str 直接将每个数字转换成字符直接将每个数字转换成字符l mat2str 把整个矩阵转换成字符把整个矩阵转换成字符行向量行向量,包括矩阵,包括矩阵中的中的方括号方括号、空格空格 和和 分号分号(逗号自动去除)(逗号自动去除)举例举例str5=mat2str(97,97.3;97.8,98);l 数值数组转换为字符数组后,表面上看数值数组转换为字符数组后,表面上看象一个数值数象一个数值数组组,但此时的元素是字符而不是数字!,但此时的元素是字符而不是数字!a=1,2,3b=num2str(a)c=2*ad=2*be=2*str2num(b)double、char 是按是按 ASCII码码 进行转换进行转换num2str、int2str、mat2str、str2num 是直接进行转换是直接进行转换字符串的合并字符串的合并q 水平水平合并合并u 直接使用中括号直接使用中括号u 使用使用 strcat 函数函数 str1=hello,world!str2=strcat(hello,world!)l 使用使用 strcat 时,自动去除时,自动去除原字符串原字符串结尾处的空格结尾处的空格l 水平水平合并合并得到的是一个更长的字符串得到的是一个更长的字符串 字符串的合并字符串的合并q 垂直垂直合并合并u 直接使用中括号直接使用中括号u 使用使用 strvcat 函数函数 str3=Matrix ;Laboratorystr4=strvcat(Matrix,Laboratory)l 在中括号中用在中括号中用分号分号实现垂直实现垂直合并合并,必须保证每个字符串,必须保证每个字符串的的长度相等,否则需用空格补齐长度相等,否则需用空格补齐l 用用 strvcat 合并合并,自动为较短的字符串,自动为较短的字符串补充补充空格空格l 垂直合并垂直合并得到的是一个字符得到的是一个字符数组数组 运行字符串运行字符串q 运行字符串所表示的表达式或命令:运行字符串所表示的表达式或命令:evalstr=1+2;a=eval(str)str=A=magic(3);eval(str)str1=figure(1);mesh(peaks(60);str2=figure(2);waterfall(peaks(60);eval(str1)eval(str2)函函 数数功功 能能函函 数数功功 能能strcmp比较字符串比较字符串strrep替换字符串替换字符串strcmpi忽略大小写比较忽略大小写比较字符串字符串strncmp比较字符串的前比较字符串的前n个字个字符符upper转换为大写转换为大写lower转换为小写转换为小写blanks产生空字符串产生空字符串deblank删除字符串中的空格删除字符串中的空格strmatch 查找匹配的字符查找匹配的字符串串findstr在一个字符串中查找另在一个字符串中查找另一字符串一字符串strjust对齐字符数组,对齐字符数组,包括左对齐,右包括左对齐,右对齐和居中对齐和居中strtok返回字符串中第一个分返回字符串中第一个分隔符隔符(空格,回车和空格,回车和Tab键键)前的部分前的部分字符串相关函数字符串相关函数q 细胞变量的表示方法类似于带有下标的数组,但细胞变量的表示方法类似于带有下标的数组,但这些下标不是用圆括号括起来,而是使用这些下标不是用圆括号括起来,而是使用大括号大括号。q 普通数组中的每个元素都必须具有相同的数据类普通数组中的每个元素都必须具有相同的数据类型,而细胞则没有此要求。型,而细胞则没有此要求。细胞数组细胞数组q Matlab 从从 5.0 版开始引入了一种新的数据类型版开始引入了一种新的数据类型 细胞细胞(cell),该结构可以该结构可以把不同类型的数据纳入把不同类型的数据纳入到一个变量到一个变量中。中。细胞数组举例细胞数组举例u 用赋值语句直接定义用赋值语句直接定义 u 用用 cell 函数预先分配存储空间,然后对细胞的每个函数预先分配存储空间,然后对细胞的每个元素逐个赋值。元素逐个赋值。细胞变量的定义细胞变量的定义A=1 2;3 4;str=Matlab;M=1:4,A,str;celldisp(M)cell(m,n)l 生成一个生成一个 m 行行 n 列列 的细胞数组。的细胞数组。q 可以通过以下两种方式定义一个细胞变量可以通过以下两种方式定义一个细胞变量举例举例A=1 2;3 4;str=Matlab;M=1:4,A,str;N=hello,M;celldisp(N);A=1 2;3 4;str=Matlab;M=cell(1,3);M1,1=1:4;M1,2=A;M1,3=str;celldisp(M)细胞变量元素的引用细胞变量元素的引用A=1 2;3 4;str=Matlab;M=1:4,A,str;N=hello,M;eye(2),magic(3);N1,1N1,2N1,21,2N1,21,2(2,1)l 细胞变量的引用必须使用细胞变量的引用必须使用大括号大括号。相关函数相关函数celldispl 输出细胞变量的内容。输出细胞变量的内容。cellplotl 用图形方式显示细胞变量的内容。用图形方式显示细胞变量的内容。iscelll 判别一个变量是否为细胞变量。判别一个变量是否为细胞变量。举例举例A=1 2;3 4;str=Matlab;M=1:4,A,str;celldisp(M);cellplot(M);iscell(A)iscell(M)