Matlab的数据类型主要内容MATLAB基本数值类型逻辑类型字符串元胞数组结构.ppt_第1页
Matlab的数据类型主要内容MATLAB基本数值类型逻辑类型字符串元胞数组结构.ppt_第2页
Matlab的数据类型主要内容MATLAB基本数值类型逻辑类型字符串元胞数组结构.ppt_第3页
Matlab的数据类型主要内容MATLAB基本数值类型逻辑类型字符串元胞数组结构.ppt_第4页
Matlab的数据类型主要内容MATLAB基本数值类型逻辑类型字符串元胞数组结构.ppt_第5页
已阅读5页,还剩151页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三讲 Matlab的数据类型,主要内容: MATLAB基本数值类型 逻辑类型 字符串 元胞数组 结构,Matlab的数据类型(续),3.1 概述 3.2 MATLAB基本数值类型 3.3 逻辑类型和关系运算 3.4 字符串 3.5 元胞数组 3.6 结构 3.7 小结,3.1 概述,MATLAB支持的基本数据类型 MATLAB数据类型 基本数值类型 字符串 元胞数组 结构 函数句柄 Java对象 逻辑类型 双精度类型 单精度类型 整数类型 用户自定义类 内嵌对象 int8,uint8 int16,uint16 int32,uint32 int64,uint64,概述(续),MATLAB的基本数据类型是双精度数据类型和字符类型 MATLAB的不同数据类型的变量或对象占用的内存空间不同 不同的数据类型的变量或对象也具有不同的操作函数,第三讲,3.1 概述 3.2 MATLAB基本数值类型 3.3 逻辑类型和关系运算 3.4 字符串 3.5 元胞数组 3.6 结构 3.7 小结,MATLAB的基本数值类型,主要用来描述基本的数值对象 MATLAB还存在一些特定数据 常量数据 是指在使用MATLAB过程中由MATLAB提供的公共数据 数据可以通过数据类型转换的方法转换常量到不同的数据类型,还可以被赋予新的数值 空数组或空矩阵 在创建数组或者矩阵时,可以使用空数组或空矩阵辅助创建数组或者矩阵,3.2 Matlab 基本数值类型,3.2.1 基本数值类型,class函数 可以用来获取变量或对象的类型 可以用来创建用户自定义的数据类型,基本数值类型(续),例 A=1 2 3; class(A) ans = double whos Name Size Bytes Class A 1x3 24 double array ans 1x6 12 char array Grand total is 9 elements using 36 bytes B=int16(A); class(B) ans = int16 whos Name Size Bytes Class A 1x3 24 double array B 1x3 6 int16 array ans 1x5 10 char array Grand total is 11 elements using 40 bytes,基本数值类型(续),MATLAB和C语言在处理数据类型和变量时的区别 在C语言中,任何变量在使用之前必须声明,然后赋值,在声明变量时就指定了变量的数据类型 在MATLAB中,任何数据变量都不需要预先声明,MATLAB将自动地将数据类型设置为双精度类型 例 A=1 2 3; B=3 4 5; C=A+B; whos Name Size Bytes Class A 1x3 24 double array B 1x3 24 double array C 1x3 24 double array Grand total is 9 elements using 72 bytes int16(A)+int16(B) ? Error using = + Function + is not defined for values of class int16.,基本数值类型(续), C=int16(A+B) C = 4 6 8 class(C) ans = int16,MATLAB系统默认的运算都是针对双精度类型的数据或变量 稀疏矩阵的元素仅能使用双精度类型的变量 sparse类型的数据变量和整数类型数据、单精度数据类型变量之间的转换是非法的 在进行数据类型转换时,若输入参数的数据类型就是需要转换的数据类型,则MATLAB忽略转换,保持变量的原有特性,基本数值类型(续),整数类型数据的运算函数,3.2.2 整数类型数据运算,注意:参与整数运算的数据都必须大于0,例:数据位“与”操作 A=86;B=77; C=bitand(A,B) C = 68 a=uint16(A);b=uint16(B); c=bitand(a,b) c = 68 86的补码: 01010110 77的补码: 01001101 “与”运算的结果: 01000100,整数类型数据运算(续), whos Name Size Bytes Class A 1x1 8 double array B 1x1 8 double array C 1x1 8 double array a 1x1 2 uint16 array b 1x1 2 uint16 array c 1x1 2 uint16 array Grand total is 6 elements using 30 bytes,例:数据位操作( bitset函数) A=86; dec2bin(A) ans = 1010110 B=bitset(A,6) B = 118 dec2bin(B) ans = 1110110 C=bitset(A,7,0) C = 22 dec2bin(C) ans = 10110,整数类型数据运算(续),bitset(A,B,C)函数根据输入的第二个参数设置相应的数据位的数值,若不指定第三个参数,则将相应的数据位设置为“1”,否则根据输入的第三个参数设置相应的数据位。, A=86 A = 86 B=bitset(A,6) B = 118 C=bitset(A,7,0) C = 22,例:数据位操作( bitget函数) A=86; dec2bin(A) ans = 1010110 bitget(A,6) ans = 0 bitget(A,3) ans = 1,整数类型数据运算(续),bitget(A,B)函数根据输入的第二个参数获取指定的数据位的数值。, A=86; bitget(A,6) ans = 0 bitget(A,3) ans = 1,例:数据位操作( bitshift函数) A=86; dec2bin(A) ans = 1010110 D=bitshift(A,4); dec2bin(D) ans = 10101100000 E=bitshift(A,-4); dec2bin(E) ans = 101 (0000101),整数类型数据运算(续),Bitshift(A,B)函数 第二个参数为正,则左移 第二个参数为负,则右移, A=86; D=bitshift(A,4) D = 1376 E=bitshift(A,-4) E = 5,MATLB的常量,3.2.3 MATLAB的常量,eps、realmax、realmin三个常量具体的数值与运行MATLAB的计算机相关,不同的计算机系统可能具有不同的数值 eps ans = 2.2204e-016 realmax ans = 1.7977e+308 realmin ans = 2.2251e-308,MATLAB的常量(续),MATLAB的常量数值是可以修改的 pi=100 pi = 100 clear pi ans = 3.1416,MATLAB的常量(续),将inf应用于函数,计算结果可能为inf或NaN。 例:NaN和Inf运算示例 A=Inf; class(A) ans = Double B=int16(A) B = 32767 进行数据转换时,Inf将获取相 应数据类型的最大值,而NaN 返回相应整数数据类型的数值0, 浮点数类型则仍然为NaN,MATLAB的常量(续), C=sin(A) C = NaN sin(C) ans = NaN class(C) ans = double int64(C) ans = 0 int32(C) ans = 0,例:最小复数单位的使用 a=i a = 0 + 1.0000i i=1 i = 1 b=i+j b = 1.0000 + 1.0000i clear c=i+j c = 0 + 2.0000i,MATLAB的常量(续),MATLAB的常量是可以赋予性的数值的。一旦被赋予了新的数值,则常量代表的就是新值,而不是原有的值,只有执行clear命令后,常量才会代表原来的值,空数组是指某一个维或者某些维的长度为0的数组 为了完成某些MATLAB操作和运算而专门设计的一种数组 利用空数组可以修改数组的大小,一般不能修改数组的维数,3.2.4 空数组,创建空数组 例: A= A = B=ones(2,3,0) B = Empty array: 2-by-3-by-0 C=randn(2,3,4,0) C = Empty array: 2-by-3-by-4-by-0 whos Name Size Bytes Class A 0x0 0 double array B 2x3x0 0 double array C 4-D 0 double array Grand total is 0 elements using 0 bytes,空数组(续),空数组不意味着什么都没有,空数组类型的变量在MATLAB的工作空间中是存在的。,使用空数组 可以将大数组删除部分行或列 可以删除多维数组的某一页,空数组(续),例 A=reshape(1:24,4,6) A = 1 5 9 13 17 21 2 6 10 14 18 22 3 7 11 15 19 23 4 8 12 16 20 24 %删除第2、3、4列 A(:,2 3 4)= A = 1 17 21 2 18 22 3 19 23 4 20 24,空数组(续),思考:如何删除第2、3行? ? A = 1 5 9 13 17 21 4 8 12 16 20 24,例 A=reshape(1:24,4,6) A = 1 5 9 13 17 21 2 6 10 14 18 22 3 7 11 15 19 23 4 8 12 16 20 24 %删除第2、3、4列 A(:,2 3 4)= A = 1 17 21 2 18 22 3 19 23 4 20 24,空数组(续),思考:如何删除第2、3行? A(2 3,:)= A = 1 5 9 13 17 21 4 8 12 16 20 24,例 A(2,2,3)=1 A(:,:,1) = 0 0 0 0 A(:,:,2) = 0 0 0 0 A(:,:,3) = 0 0 0 1 whos Name Size Bytes Class A 2x2x3 96 double array Grand total is 12 elements using 96 bytes,空数组(续), A(:,:,3)= A(:,:,1) = 0 0 0 0 A(:,:,2) = 0 0 0 0 whos Name Size Bytes Class A 2x2x2 64 double array Grand total is 8 elements using 64 bytes,第三讲,3.1 概述 3.2 MATLAB基本数值类型 3.3 逻辑类型和关系运算 3.4 字符串 3.5 元胞数组 3.6 结构 3.7 小结,3.3 逻辑类型和关系运算,逻辑数据类型 逻辑运算 关系运算 运算符的优先级,3.3.1 逻辑数据类型,逻辑数据类型 逻辑数据类型就是仅具有两个数值的一种数据类型 True 用1表示 False 用0表示 任何数值都可以参与逻辑运算 非零值看作逻辑真 零值看作逻辑假 逻辑类型的数据只能通过数值类型转换,或者使用特殊的函数生成相应类型的数组或者矩阵,逻辑数据类型(续),创建逻辑类型数据的函数,逻辑数据类型(续),例: A=eye(3) A = 1 0 0 0 1 0 0 0 1 B=logical(A) B = 1 0 0 0 1 0 0 0 1 C=true(size(A) C = 1 1 1 1 1 1 1 1 1, D=false(size(A),2) ?, C=true(3,3),逻辑数据类型(续),例: A=eye(3) A = 1 0 0 0 1 0 0 0 1 B=logical(A) B = 1 0 0 0 1 0 0 0 1 C=true(size(A) C = 1 1 1 1 1 1 1 1 1, D=false(size(A),2) D(:,:,1) = 0 0 0 0 0 0 0 0 0 D(:,:,2) = 0 0 0 0 0 0 0 0 0, C=true(3,3),逻辑数据类型(续),例: A=eye(3) A = 1 0 0 0 1 0 0 0 1 B=logical(A) B = 1 0 0 0 1 0 0 0 1 C=true(size(A) C = 1 1 1 1 1 1 1 1 1, D=false(size(A),2) D(:,:,1) = 0 0 0 0 0 0 0 0 0 D(:,:,2) = 0 0 0 0 0 0 0 0 0 whos Name Size Bytes Class A 3x3 72 double array B 3x3 9 logical array C 3x3 9 logical array D 3x3x2 18 logical array Grand total is 45 elements using 108 bytes,逻辑类型的数组每一个元素仅占用一个字节的内存空间, C=true(3,3),逻辑数据类型(续),在使用true或者false函数创建逻辑类型数组时,若不指明参数,则创建一个逻辑类型的标量 例 a=true a = 1 b=false b = 0 c=1 c = 1 isnumeric(a) ans = 0, isnumeric(c) ans = 1 islogical(a) ans = 1 islogical(b) ans = 1 islogical(c) ans = 0,在MATLAB中有些函数以is 开头,这类函数是用来完成某种判断功能的函数。 isnumeric(*):判断输入的参数是否为数值类型islogical(*):判断输入的参数是否为逻辑类型,能够处理逻辑类型数据的运算叫作逻辑运算 MATLAB的逻辑运算,3.3.2 逻辑运算,参与逻辑运算的操作数不一定必须是逻辑类型的变量或常量,其他类型的数据也可以进行逻辑运算,但运算结果一定是逻辑类型的数据 例: a=eye(3) a = 1 0 0 0 1 0 0 0 1 b=a;b(3,1)=1 b = 1 0 0 0 1 0 1 0 1,逻辑运算(续), a&b ans = 1 0 0 0 1 0 0 0 1 whos Name Size Bytes Class a 3x3 72 double array ans 3x3 9 logical array b 3x3 72 double array Grand total is 27 elements using 153 bytes,具有短路作用的逻辑“与”操作(&)和“或”操作(|) 进行a & b & c & d运算时,若a为假(0),则后面的三个变量都不再被处理,运算结束,并返回运算结果逻辑假(0) 进行a | b | c | d运算时,若a为真(1),则后面的三个变量都不再被处理,运算结束,并返回运算结果逻辑真(1) 仅能处理标量,逻辑运算(续),例: a=eye(3) a = 1 0 0 0 1 0 0 0 1 b=a;b(3,1)=1 b = 1 0 0 0 1 0 1 0 1 a&b ? Operands to the | and & operators must be convertible to logical scalar values.,逻辑运算(续),例: a=0;b=1;c=2;d=3; a a|b|c|d ans = 1,逻辑运算(续), whos Name Size Bytes Class a 1x1 8 double array ans 1x1 1 logical array b 1x1 8 double array c 1x1 8 double array d 1x1 8 double array Grand total is 5 elements using 33 bytes,例:函数any和all的使用示例(对向量) a=1 2 3 0; any(a) ans = 1 all(a) ans = 0,逻辑运算(续), c=1 2 3 4; any(c) ans = 1 all(c) ans = 1, b=0 0 0 0; any(b) ans = 0 all(b) ans = 0,例:函数any和all的使用示例(对矩阵) a=1 0 2;3 0 0;1 3 0;1 1 1 a = 1 0 2 3 0 0 1 3 0 1 1 1 any(a) ans = 1 1 1 all(a) ans = 1 0 0,逻辑运算(续),函数any和all是针对矩阵中每一列进行处理。 any每列元素有非零值,则返回逻辑真 all每列元素均为非零值,则返回逻辑真,关系运算是用来判断两个操作数关系的运算 MATLAB的关系运算符,3.3.3 关系运算,参与关系运算的操作数可以是各种数据类型的变量或者常数 运算结果是逻辑类型的数据 标量可以和数组(或矩阵)进行比较,比较时自动扩展标量,返回的结果是和数组同维的逻辑类型数组 若比较的是两个数组,则数组必须是同维的,且每一维的尺寸必须一致,关系运算(续),例: A=reshape(1:9,3,3) A = 1 4 7 2 5 8 3 6 9 B=magic(3) B = 8 1 6 3 5 7 4 9 2 AB ans = 0 1 1 0 0 1 0 0 1,关系运算(续), whos Name Size Bytes Class A 3x3 72 double array B 3x3 72 double array ans 3x3 9 logical array Grand total is 27 elements using 153 bytes,例: a=4 a = 4 A=reshape(1:9,3,3) A = 1 4 7 2 5 8 3 6 9 aA ans = 1 0 0 1 0 0 1 0 0,关系运算(续),4 4 4 4 4 4 4 4 4, whos Name Size Bytes Class A 3x3 72 double array a 1x1 8 double array ans 3x3 9 logical array Grand total is 19 elements using 89 bytes,利用“()”和各种运算符相结合,可以完成复杂的关系运算 例: A=reshape(-4:4,3,3) A = -4 -1 2 -3 0 3 -2 1 4 A=0 ans = 0 0 1 0 1 1 0 1 1 B = (A=0) B = 1 1 0 1 0 0 1 0 0,关系运算(续), whos Name Size Bytes Class A 3x3 72 double array B 3x3 9 logical array ans 3x3 9 logical array Grand total is 27 elements using 90 bytes,例: C=(A0)&(A A0 ans = 0 0 1 0 0 1 0 1 1 A3 ans = 1 1 1 1 1 0 1 1 0,关系运算(续),A = -4 -1 2 -3 0 3 -2 1 4,逻辑索引:将逻辑类型的数据应用于索引就构成了逻辑索引 利用逻辑索引可以方便地从矩阵或者数组中找到某些符合条件的元素 例: A=-2 10 NaN 30 0 -11 -Inf 31; pos=AB=A(A B=A(pos) B = -2 -11 -Inf pos=(A=0)&(isfinite(A) pos = 0 1 0 1 1 0 0 1 C=A(pos) C = 10 30 0 31,关系运算(续),3.3.4 运算符的优先级,(1)括号() (2)数组转置(. ),数组幂(.),矩阵转置( ),矩阵幂() (3)一元加(+),一元减(-),逻辑非() (4)数组乘法(.*),数组右除(./),数组左除(.) 矩阵乘法(*),矩阵右除(/),矩阵左除() (5)加法(+),减法(-) (6)冒号运算符( :) (7)小于(),大于等于(=) 等于(=),不等于(=) (8)元素与(&) (9)元素或(|) (10)短路逻辑与(&) (11)短路逻辑或(|),第三讲,3.1 概述 3.2 MATLAB基本数值类型 3.3 逻辑类型和关系运算 3.4 字符串 3.5 元胞数组 3.6 结构 3.7 小结,3.4 字符串,字符串在数据的可视化、应用程序的交互方面起到非常重要的作用 创建字符串时需要使用单引号将字符串的内容包括起来 字符串一般以行向量形式存在,并且每一个字符占用两个字节的内存 主要内容 字符串入门 基本字符串操作 字符串操作函数 字符串转换函数 格式化输入输出,3.4.1 字符串入门,创建字符串的方法 创建字符串时,只要将字符串的内容用单引号包括起来即可 例: a=127 a = 127 class(a) ans = double size(a) ans = 1 1, b=127 b = 127 class(b) ans = char size(b) ans = 1 3,3.4.1 字符串入门,若需要在字符串内容中包含单引号,则在键入字符串内容时,连续键入两个单引号即可 例: C=Isnt it? C = Isnt it?,字符串入门(续),使用char函数创建一些无法通过键盘输入的字符 该函数的作用是将输入的整数参数转变为相应的字符 S1=char(This string array,has two rows.) S1 = This string array has two rows. S2=char(这,字符,串数组,由4行组成) S2 = 这 字符 串数组 由4行组成,3.4.2 基本字符串操作,字符串元素索引 字符串的拼接 字符串与数值之间的转换,1、字符串元素索引,字符串实际上也是一种MATLAB的向量或者数组,一般利用索引操作数组的方法都可以用来操作字符串 例: a=This is No.3-15 Example! a = This is No.3-15 Example! b=a(1:4) b = This c=a(12:15) c = 3-15 d=a(17:end) d = Example!, a=Hello MOTO! a = Hello MOTO! b=a(end:-1:1) b = !OTOM olleH,2、字符串的拼接,字符串可以利用“”运算符进行拼接 若使用“,”作为不同字符串之间的间隔,则相当于扩展字符串成为更长的字符串向量 若使用“;”作为不同字符串之间的间隔,则相当于扩展字符串成为二维或者多维的数组,这时不同行上的字符串必须具有同样的长度 例: a=Hello; b=MOTO!; length(a)=length(b) ans = 1 c=a, ,b c = Hello MOTO! d=a;b d = Hello MOTO!, size(c) ans = 1 11 size(d) ans = 2 5 e=MOTO; f=a;e ? Error using = vertcat All rows in the bracketed expression must have the same number of columns.,3、字符串和数值的转换,使用char函数可以将数值(ASCII码)转变为字符 使用double函数可以将字符转变成数值(ASCII码) 例: a=Hello MOTO!; b=double(a) b = 72 101 108 108 111 32 77 79 84 79 33 c=您好!; d=double(c) d = 50426 47811 41889 char(b) ans = Hello MOTO! char(d) ans = 您好!,3.4.3 字符串操作函数,字符串操作函数(续),例(blanks): a=blanks(4) a =,字符串操作函数(续),例(deblank): a=Hello! a = Hello! deblank(a) ans = Hello! whos Name Size Bytes Class a 1x9 18 char array ans 1x6 12 char array Grand total is 15 elements using 30 bytes,字符串操作函数(续),例(ischar): a=Hello! a = Hello! ischar(a) ans = 1 b=12; ischar(b) ans = 0,变量为字符型,则结果为1 变量不为字符型,则结果为0,字符串操作函数(续),例:组合字符串(strcat和strvcat) a=Hello; b=MOTO!; c=strcat(a,b) c = HelloMOTO! d=strvcat(a,b ,c) d = Hello MOTO! HelloMOTO!, whos Name Size Bytes Class a 1x5 10 char array b 1x5 10 char array c 1x10 20 char array d 3x10 60 char array Grand total is 50 elements using 100 bytes,Strvcat函数允许将不同长度的字符串组合成为字符矩阵,并且将短字符串扩充为与长字符串相同的长度,字符串操作函数(续),例:比较字符串( strcmp和strncmp ) a=The first string; b=The second string; c=strcmp(a,b) c = 0 d=strncmp(a,b,4) d = 1,字符串操作函数(续),例:查寻索引( findstr和strfind ) S1=A friend in need is a friend indeed; S2=friend; a=findstr(S2,S1) a = 3 23 b=strfind(S2,S1) b = c=strfind(S1,S2) c = 3 23,findstr: 结果与参数先后位置无关,仅与字符串长度有关。,strfind: 结果与参数先后位置有关。,字符串操作函数(续),例:对齐排列字符串( strjust) a=Hello; b=MOTO!; c=strcat(a,b) c = HelloMOTO! d=strvcat(a,b,c) d = Hello MOTO! HelloMOTO!, e=strjust(d) e = Hello MOTO! HelloMOTO!,strjust: 默认右对齐 相当于strjust(s,right),字符串操作函数(续),例:替换字符串中的子字符( strrep ) S1=A firend in need is a firend indeed S1 = A firend in need is a firend indeed S2=strrep(S1,firend,friend) S2 = A friend in need is a friend indeed,字符串操作函数(续),例:查寻匹配的字符串( strmatch )只对列元素 a=strmatch(max,strvcat(max,minimax,maximum) a = 1 3 b=strmatch(max,strvcat(max,minimax,maximum),exact) b = 1,只寻找以max开头的字符串,精确查寻:只寻找为max的字符串,字符串操作函数(续),例:改变字符串的字符的大小写( upper和lower ) S1=friend; S2=upper(S1) S2 = FRIEND S3=lower(S2) S3 = friend,3.4.4 字符串转换函数,在MATLAB中使用不同的函数可以允许不同类型的数据和字符串类型的数据之间进行转换 在MATLAB中直接提供了相应的函数对同样类型的数据进行数制的转换,字符串转换函数(续),数字和字符之间的转换函数,字符串转换函数(续),不同数值之间的转换函数(续),字符串转换函数(续),函数str2num在使用时需要注意: 被转换的字符串仅能包含数字、小数点、字符“e”或者“d”、数字的正号或者负号、复数的虚部字符“i”或者“j” 使用时要注意空格 例: A=str2num(1+2i) A = 1.0000 + 2.0000i B=str2num(1 +2i) B = 1.0000 0 + 2.0000i C=str2num(1 + 2i) C = 1.0000 + 2.0000i,可以使用str2double函数避免上述问题,但str2double函数只能转换标量,不能转换矩阵或者数组, whos Name Size Bytes Class A 1x1 16 double array (complex) B 1x2 32 double array (complex) C 1x1 16 double array (complex) Grand total is 4 elements using 64 bytes,字符串转换函数(续),例: S=1 2;2 3 S = 1 2 2 3 A=str2num(S) A = 1 2 2 3 whos Name Size Bytes Class A 2x2 32 double array S 2x3 12 char array Grand total is 10 elements using 44 bytes,字符串转换函数(续),使用函数num2str将数字转换成为字符串时,可以指定字符串所表示的有效数字位数 例 A=num2str(rand(2,2),4) A = 0.8913 0.4565 0.7621 0.0185 B=num2str(rand(2,2),6) B = 0.921813 0.176266 0.738207 0.405706,字符串转换函数(续),其他的转换函数示例 a=255; h=dec2hex(a) h = FF b=dec2bin(a) b = 11111111 c=dec2base(a,5) c = 2010 b(end)=0 b = 11111110, bin2dec(b) ans = 254 whos Name Size Bytes Class a 1x1 8 double array ans 1x1 8 double array b 1x8 16 char array c 1x4 8 char array h 1x2 4 char array Grand total is 16 elements using 44 bytes,MATLAB可以进行格式化的输入、输出 用于C语言的格式化字符串都可以用于MATLAB的格式化输入输出函数,3.4.5 格式化输入输出,格式化字符,格式化输入输出(续),在MATLAB中,有两个函数用来进行格式化的输入和输出 sscanf(读取格式化字符串) A=sscanf(s,format) A=sscanf(s,format,size) sprintf(格式化输出数据到命令行窗口) S=sprintf(format,A,),格式化输入输出(续),例:sscanf函数示例(A=sscanf(s,format)) S1=2.7183 3.1416; S2=2.7183e3 3.1416e3; S3=0 2 4 8 16 32 64 128; A=sscanf(S1,%f) A = 2.7183 3.1416 B=sscanf(S2,%e) B = 1.0e+003 * 2.7183 3.1416,格式化输入输出(续), C=sscanf(S3,%d) C = 0 2 4 8 16 32 64 128,例:sscanf函数示例(A=sscanf(s,format,size)) S1=0 2 4 8 16 32 64 128; A=sscanf(S3,%d) A = 0 2 4 8 16 32 64 128,格式化输入输出(续), B=sscanf(S3,%d,1) B = 0 C=sscanf(S3,%d,3) C = 0 2 4,例:sprintf函数示例( S=sprintf(format,A,)) A=1/eps;B=-eps; C=65,66,67,pi; D=pi,65,66,67; S1=sprintf(%+15.5f ,A) S1 = +4503599627370496.00000 S2=sprintf(%+.5e,B) S2 = -2.22045e-016,格式化输入输出(续),格式化字符串中若包含了“+”,则表示在输出的字符串中包含数据的符号,例:sprintf函数示例( S=sprintf(format,A,)) S3=sprintf(%s%f,C) S3 = ABC3.141593 S4=sprintf(%s%f%s,D) S4 = 3.141593e+00065.000000BC,格式化输入输出(续),对于整数数值进行格式化输出时,可以直接将向量转变成为字符串,如果输出的数据与相应的格式化字符串不匹配时,则输出数值最常见的一种形式,MATLAB提供了input函数来完成获取用户输入数据的功能,以满足能够和用户的输入进行交互的需要 A=input(prompt) A=input(prompt,s) 第一个参数prompt为提示用的字符串 第二个参数s 若有s,则输入的数据为字符串 没有s,则输入的数据为双精度数据,格式化输入输出(续),例: A=input(随便输入数字:) 随便输入数字:264 A = 264 B=input(随便输入数字:,s) 随便输入数字:264 B = 264 whos Name Size Bytes Class A 1x1 8 double array B 1x3 6 char array Grand total is 4 elements using 14 bytes,格式化输入输出(续),第三讲,3.1 概述 3.2 MATLAB基本数值类型 3.3 逻辑类型和关系运算 3.4 字符串 3.5 元胞数组 3.6 结构 3.7 小结,元胞数组是MATLAB的一种特殊数据类型 可以将元胞数组看作为一种无所不包的通用矩阵(广义矩阵) 组成元胞数组的元素可以是任何一种数据类型的常数或常量 数据类型可以是字符串、双精度数、稀疏矩阵、元胞数组、结构或其他MATLAB数据类型 每一个元胞数据可以是标量、向量、矩阵、N维数组 每一个元素可以具有不同的尺寸和内存空间 每一个元素的内容可以完全不同 元胞数组的元素叫作元胞 元胞数组的内存空间是动态分配的 元胞数组的维数不受限制 访问元胞数组的元素可以使用单下标方式或全下标方式,3.5 元胞数组,3.5.1 元胞数组的创建 3.5.2 元胞数组的基本操作 3.5.3 元胞数组的操作函数,元胞数组(续),1、使用运算符花括号 ,将不同类型和尺寸的数据组合在一起构成一个元胞数组 例: A=zeros(2,2,2),Hello;17.35,1:100 A = 2x2x2 double Hello 17.3500 1x100 double whos Name Size Bytes Class A 2x2 1122 cell array Grand total is 118 elements using 1122 bytes 对于内容较多的元胞,显示的内容为元胞的数据类型和尺寸,3.5.1 元胞数组的创建,2、将数组的每一个元素用 括起来,然后再用数组创建的符号将数组的元素括起来构成一个元胞数组 例: B=zeros(2,2,2),Hello;17.35,1:100 B = 2x2x2 double Hello 17.3500 1x100 double whos Name Size Bytes Class A 2x2 1122 cell array Grand total is 118 elements using 1122 bytes,元胞数组的创建(续),3、用创建一个元胞数组,MATLAB能够自动扩展数组的尺寸, 没有明确赋值的元素作为空元胞数组存在 例: C=1 C = 1 whos Name Size Bytes Class C 1x1 68 cell array Grand total is 2 elements using 68 bytes C(2,2)=3 C = 1 3 whos Name Size Bytes Class C 2x2 144 cell array Grand total is 6 elements using 144 bytes,元胞数组的创建(续),4、用函数cell创建元胞数组。该函数可以创建一维、二维或者多维 元胞数组,但创建的数组都为空元胞 例: A=cell(1) A = B=cell(2,3) B = C=cell(2,2,2) C(:,:,1) = C(:,:,2) = ,元胞数组的创建(续), whos Name Size Bytes Class A 1x1 4 cell array B 2x3 24 cell array C 2x2x2 32 cell array Grand total is 15 elements using 60

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论