[理学]matlab-lec2-matlab数据类型

上传人:tia****nde 文档编号:70528160 上传时间:2019-01-17 格式:PPT 页数:44 大小:494.38KB
返回 下载 相关 举报
[理学]matlab-lec2-matlab数据类型_第1页
第1页 / 共44页
[理学]matlab-lec2-matlab数据类型_第2页
第2页 / 共44页
[理学]matlab-lec2-matlab数据类型_第3页
第3页 / 共44页
[理学]matlab-lec2-matlab数据类型_第4页
第4页 / 共44页
[理学]matlab-lec2-matlab数据类型_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《[理学]matlab-lec2-matlab数据类型》由会员分享,可在线阅读,更多相关《[理学]matlab-lec2-matlab数据类型(44页珍藏版)》请在金锄头文库上搜索。

1、MATLAB 应用,主讲:苏菡 ,第2章 数据类型,常数和变量 数组和矩阵 字符串 多维数组 结构 单元数组 函数句柄,常数,下表列出了MATLAB提供的一些内部函数。,变量,变量名 MATLAB变量名的第1个字符必须是字母,后面可以跟字母、数字和下划线的任何组合。 注意:MATLAB中变量名有大小写区分,所以A和a是不同的变量。 创建变量 在MATLAB中创建变量很简单,不必声明变量的数据类型。例如在命令窗口键入下面的命令行就可以创建一个A变量。 A=9 A = 9 预留关键字不允许重载 用变量给变量赋值,等式右边变量必须有值 Isvarname ddd 判断合法性,变量的数据类型,数 组,

2、逻辑型,字符型,数值型,单元数组,结构数组,函数句柄,Java类,定制类,int8, uint8 int16, uint16 int32, uint32,Single,Double,Format设置变量的输出格式 A=1 Format long A ; format long pi single(pi) Format hex bank +,数组和矩阵,MATLAB中,所有数据都用数组或矩阵形式进行保存。数组、矩阵属于数据结构而非数据类型。 数组 矩阵,数组,构造数组的方法: 直接构造法 增量法 linspace函数法,直接构造数组,在MATLAB中构造数组,只需要用空格或逗号间隔数组元素,然后

3、用方括号括起来就行了。如 x=0 2 3 6 7 8 或 x=0,2,3,6,7,8 就构造了一个有6个元素的数组x。,用增量法构造数组,利用MATLAB提供的冒号运算符(first:step:last)可以生成数组。数组中的元素按顺序从first一直到last,增量为step。 如果不指定增量step,则按升序生成数组,后面的数比它前面第一个数大1。 如果要求生成降序排列的数组,指定一个负的增量。 增量可以是整数,也可以是小数。,first:step:last) 等间隔 A=1:2:20 B=-7:0.2:-3 C=9:1:0,用linspace函数构造数组,用linspace函数构造数组,

4、需要指定首尾值和元素总个数。基本形式是: x=linspace(first,last,num) 其中,first,last和num分别为x数组的首尾元素和元素个数。如 x=linspace(0,10,5) x = 0 2.5000 5.0000 7.5000 10.0000,矩阵,构造矩阵的方法: 简单的创建方法 构造特殊矩阵 聚合矩阵 组合不同类型的数据,用简单方法构造矩阵,MATLAB中创建矩阵最简单的方法是使用符号。在方括号内输入多个元素可以创建矩阵的一个行。用逗号或空格把每个元素间隔开。如果想开始一个新行,用分号终止当前行: A = row1; row2; .; rown 下面创建一个

5、3行5列的数值矩阵。 A = 12 62 93 -8 22; 16 2 87 43 91; -4 17 -72 95 6 A = 12 62 93 -8 22 16 2 87 43 91 -4 17 -72 95 6,构造特殊矩阵,MATLAB提供了多个创建不同矩阵的函数,如下表所示。,聚合矩阵,矩阵聚合是通过连接一个或多个矩阵来形成新的矩阵。符号 不仅是矩阵构造符,它还是MATLAB聚合运算符。表达式C=A B在水平方向上聚合矩阵A和B,表达式C=A;B在垂向上聚合它们。 本例通过在垂向上聚合矩阵A和B来构造新矩阵C: A = ones(2, 5) * 6; % 25的矩阵,元素为6 B =

6、 rand(3, 5); % 35的矩阵,元素为随机数 C = A; B % 垂向聚合A和B,组合不同类型的数据,构造矩阵时,如果矩阵的数据类型不同,则MATLAB会自动对某些元素进行类型转换,然后生成的矩阵具有相同的类型。 用一个高精度的矩阵和一个低精度的矩阵构造新矩阵时,新矩阵是低精度型的。例如,聚合double型和single型的矩阵时,总是生成single型的矩阵。MATLAB会先将double型元素转换为single型。 空矩阵被忽略,A=5.36;7.01;9.44 A = 5.36000000000000 7.01000000000000 9.44000000000000 X=s

7、ingle(4.6) single(-2) pi 5.73*1020 Class(x) P16,聚合矩阵的特殊函数,下表列出了聚合矩阵的一些特殊函数。,C=A B C=A;B 默认水平方向聚合,要求每个子矩阵具有相同的行数;垂直聚合要求子矩阵列数相同,X=blkdiag(A,B,C,.) A=magic(5); B=ones(3); C=zeros(2); x=blkdiag(A,B,C),获取矩阵的元素,使用编号索引 使用线性索引 使用冒号 使用end关键字,使用编号索引获取矩阵的元素,利用编号和索引,可以获取MATLAB矩阵的元素。 要引用矩阵中的特殊元素,用下面的语法指定它的行号和列号,

8、其中A是矩阵变量。按先行后列的顺序指定。 A(row, column),使用线性索引获取矩阵的元素,MATLAB保存矩阵中的数据时是作为一个元素列保存。这个元素列又是由矩阵中的所有列组成的,后一列元素按先后顺序添加到前一列元素的最后。所以,矩阵A A = 2 6 9; 4 2 8; 3 0 1 A = 2 6 9 4 2 8 3 5 1 在内存中是按下面的序列保存的: 2, 4, 3, 6, 2, 5, 9, 8, 1 矩阵A第3行第2列的元素可以看作实际保存序列中的第6个元素。要获取这个元素,可以使用标准语法A(3,2)或使用A(6)。,使用冒号获取矩阵的元素,利用冒号本身可以引用矩阵某行或

9、列的所有元素。使用下面的语法,可以计算44的魔方矩阵A中所有元素的和。 sum(A(:, 2) ans = 34 将冒号进行索引,可以引用整个矩阵中的所有元素。本例显示矩阵A中的所有元素,按列序返回它们: A(:),使用end关键字获取矩阵的元素,利用end关键字可以指定矩阵某维的最后一个元素。它适用于不知道矩阵有多少行或多少列的情况。例如,可以用下面的语句进行值的替换: B(1:3:end) = -10 每隔2个元素改值,获取与矩阵相关信息,length(X) 返回最长维的长度 等价于max(size(X) ndims(X) 返回维数 numel(X)返回元素个数 size (X)返回每一维

10、长度 X=ones(5,6,int8) P18,字符串(字符数组),字符串的创建 类型转换 字符串的比较 字符串的聚合 字符串的搜索和替换,创建字符串,通过把字符放到单引号中来指定字符数据。如,下面创建一个15的字符串country。 country = China; 创建一个二维字符串时,确定每行具有相同的长度,例如,下面两个字符串都有5个字符,用它们组合起来的二维字符串是合法的。 name = Li Yi ; Hu Xu name = Li Yi Hu Xu,长度问题 根据不同长度的字符串创建字符串时,将短的那些字符串后面用空格补齐,使所有字符串的长度相同。 char(,.) 函数 自动以

11、最长的输入字符串长度作为标准 串提取 deblank() 删除后面的空格 Trimname=deblank(name(2,:) Size(Trimname),类型转换,用char函数把单元数组转换为标准字符串数组。 char(A); str2double函数把一个字符串单元数组转换为字符串表示的双精度值。 A=3.2;-56.3,., str2double(A) int2str函数将整型数据转换为字符串型数据。 num2str函数对输出字符串的格式提供了更多控制,该函数的第2个变量是可选的,它设置输出字符串的位数,或指定一个实际的格式。 mat2str函数将数组转换为字符串。 mat2str函

12、数将返回一个包含文本的字符串,该文本在命令行中输入,用于创建矩阵。,字符串的比较,用strcmp函数比较字符串,字符串不相等时,返回false。 strcmp(A,B,n) 对A,B前n+1个字符分别比较 可以使用MATLAB的关系运算符,如,可以用()确定两个字符串中的相同字符。所有关系运算符(, =, , =, =, !=)比较对应字符的值。,字符串的聚合,字符串通常可以由更小的元素聚合而成。两个通用的聚合方法是使用MATLAB聚合运算符()或sprintf函数。 sprintf(格式,变量) sprintf(There are %d boys,a); 用strcat函数也可以把两个或更多

13、字符串组合在一起。 strcat(A,B,C,),字符分类,isletter(A) 逐个字符判断是否为字母 Isspace(A)逐个字符判断是否为空格 mystring=this is A 217 A =isletter(mystring) B=isspace(mystring),字符串的搜索和替换,strrep函数进行标准的搜索和替代操作。 strrep(s1,s2,s3) 在s1中用s3替代s2 s1=How are you s3=uo s2=ou findstr函数把子字符串的起始位置返回到一个更长的字符串中。 findstr(s1,s2) strtok函数在输入字符串中第一次发现间隔符

14、时返回间隔符前面的字符,可用该函数把句子分离成单词。 strtok() strmatch函数在字符串或字符串单元数组的整个行中进行查找,看有没有以给定字符序列打头的字符串,它返回以该字符串打头的行的行号。 strmatch(s1,s2),多维数组,用索引生成多维数组 用特殊函数生成多维数组 用cat函数生成多维数组,用索引生成多维数组,创建多维数组的方法之一是先创建一个二维数组,然后扩展它。如: A = 5 7 8; 0 1 9; 4 3 6; A是一个33的数值,即它的行维和列维都是3。给A添加第三维。 A(:,:,2) = 1 0 4; 3 5 6; 9 8 7,用特殊函数生成多维数组,可

15、以使用与生成二维数组相同的方式,用randn,ones和zeros函数等生成多维数组。提供的每个变量表示生成的数组中对应维的大小。如:要创建一个正态分布随机数的432的数组,可以输入: B = randn(4,3,2) 要生成一个元素均为同一常数的数组,使用repmat函数。如: B = repmat(5,3 4 2),用cat函数生成多维数组,cat函数是创建多维数组的一种简单方式,它按指定的维数将多个数组聚合到一起,其调用格式为: B = cat(dim,A1,A2.) 其中A1,A2等是进行聚合的数组,dim是维数。,结构,创建结构数组 获取结构数组中的数据 数组的大小 操作字段 结构的

16、嵌套,创建结构数组,使用赋值语句 可以通过将数据赋给单独的字段来生成一个简单的11结构数组。 使用struct函数 可以用struct函数预分配一个结构数组。其基本形式为: str_array = struct(field1,val1,field2,val2, .) 其中,变量为字段名和它们的对应值。,单元数组,创建单元数组 获取单元数组的数据 删除单元和重塑单元数组,创建单元数组,用赋值语句创建单元数组 可以使用单元索引和内容索引两种方式创建单元数组。 用cell函数创建单元数组 使用cell函数,可以预分配指定大小的空单元数组,如,下面的语句创建一个空的单元数组: B = cell(2,3); 然后可以用赋

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号