数据类型与流程控制语句

上传人:正** 文档编号:57125808 上传时间:2018-10-19 格式:PPT 页数:34 大小:1.24MB
返回 下载 相关 举报
数据类型与流程控制语句_第1页
第1页 / 共34页
数据类型与流程控制语句_第2页
第2页 / 共34页
数据类型与流程控制语句_第3页
第3页 / 共34页
数据类型与流程控制语句_第4页
第4页 / 共34页
数据类型与流程控制语句_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《数据类型与流程控制语句》由会员分享,可在线阅读,更多相关《数据类型与流程控制语句(34页珍藏版)》请在金锄头文库上搜索。

1、1.3 MATLAB的数据类型 Matlab把每种类型的数据都作为数组来处理,在默认情况下MATLAB将数据当成双精度的浮点型来处理, 当数组较大时会占用太多的内存空间。比如我2G的内存,当我执行randn(10000,10000);时,会报错Out of memory。因此在某些情况下,将数据强制约束成某些数据类型非常有用。 我们这里分成基本类型、字符串、元胞数组和结构体四部分来陈述。 1.3.1 基本类型 主要包括整型、浮点型和逻辑型。按数据类型的字节数,整型又分为8位、16位、32位和64位。浮点型变量包括单精度浮点型和双精度浮点型, single和,double常用于定义,分别为32位

2、和64位,比如X = pi * ones(5,6,single) 。逻辑类型仅包括两个值:“0“和“1“,分别代表“假”和“真”,主要用于关系和逻辑运算。,ab=3; bb=(ab0) 此时bb的逻辑值为1。,ab=3.14; bb=isinteger(ab) 此时bb的逻辑值为0。,1.3.2 字符串 字符串一般以行向量形式存在,并且每一个字符占用两个字节的内存。 字符串必须用单引号括起来。字符串是由多个字符组成的字符行向量。字符数组必须是方的,即每行的字符个数必须相等。,str1=Matrix Laboratory,str2=M,a,t,r,i,x,str3=M,a,t; r,i,x,字符

3、串中的每个字符(包括空格)都是字符串的一个元素。Matlab中字符是以ASCII码存储的,因而区分大小写,可用 double函数查看一个字符的ASCII码。直接赋值。,str=Mat rix; str(3) ans =t size(str) ans =1 7,str=Matrix; double(str(3); ans =116 double(str); ans = 77 97 116 114 105 120,str1=Matrix; str2=Laboratory; str=str1, ,str2;,char 函数ASCII码字符串。注意:char 的输入参数范围为0,65535,当输入参数

4、中有小数时,直接将小数部分舍去。 char(97.8) 结果为a 直接将转换数值数组转换成字符数组。数值矩阵到字符数组:num2str、int2str、mat2str字符数组到数值数组:str2num,ans = Matrix Laboratory,str = char(77,97,116,108,97,98) str = Matlab,点击查看char(0:500)结果,!“#$%?ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz|?,大部分问号代表无定义,返回,a=97,97.3;97.8,98;aa = 123 bb = 2*aa

5、 ans = 98 100 102 cc = abcd dd = 2*cc ans = 194 196 198 200 ee = 2*str2num(aa) ans= 246 ff = 2*str2num(cc) ans= ,点击查看num2str、int2str、mat2str运行结果,double、char 是按 ASCII码 进行转换,num2str、int2str、mat2str、str2num 是直接进行转换,注意:str1中17个字符包括11个空格,返回,字符串的合并。 1)直接使用中括号str1=hello ,world!str1=hello world!str3=Matrix

6、; Laboratorystr3=Matrix Laboratory在中括号中用分号实现垂直合并,必须保证每个字符串的长度相等(短的用空格补齐),否则出错。 2)使用 strcat 和strvcat函数 str2=strcat(hello ,world !)str2=helloworld !,水平合并,垂直合并,str4=strvcat(Matrix,Laboratory) str4=Matrix Laboratory 注意:使用 strcat 时,自动去除原字符串结尾处的空格。用 strvcat 合并,自动为较短的字符串补充空格,垂直合并得到的是一个字符数组 。eval函数运行字符串所表示的

7、表达式或命令,eval()函数的功能就是将括号内的字符串视为语句并运行。 比如:eval(y=sin(2t)和语句y=sin(2t)等价,str=1+2; str =1+2 a=eval(str) a =3,将15这5个数分别赋值给student1student5的5个变量,用eval( )函数实现。 for ii=1:5eval(strcat(student,num2str(ii),=,num2str(ii),;); end 运行结果等效为:student1=1;student2=2;student3=3;student4=4;student5=5; 注意:如果去掉分号,即写成eval(st

8、rcat(student,num2str(ii),=,num2str(ii); 那么结果会直接显示在命令窗口。,字符串的其他相关函数,1.3.3 元胞数组 元胞数组是MATLAB的一种特殊数据类型,可以将元胞数组看作为一种无所不包的通用矩阵(广义矩阵),元胞数组的内存空间是动态分配的,元胞数组的维数不受限制,访问元胞数组的元素可以使用单下标方式或全下标方式,组成元胞数组的元素可以是任何一种数据类型的常数或常量。数据类型可以是字符串、双精度数、稀疏矩阵、元胞数组、结构或其他MATLAB数据类型每一个元胞数据可以是标量、向量、矩阵、N维数组每一个元素可以具有不同的尺寸和内存空间每一个元素的内容可以

9、完全不同元胞数组的元素叫作元胞,点击查看实例,元胞数组的创建 1)使用运算符花括号 ,将不同类型和尺寸的数据组合在一起构成一个元胞数组。 A=zeros(2,2,2),Hello;17.35,1:10 A = 2x2x2 double Hello 17.3500 1x10 double aa=A1,1 即aa为一个2x2x2的三维矩阵 aa(:,:,1)=0 0 0 0 A2,2=1 2 3 4 5 6 7 8 9 10,aa(:,:,2)=0 0 0 0,2)将数组的每一个元素用 括起来,然后再用数组创建的符号 将数组的元素括起来构成一个元胞数组。B=zeros(2,2,2),Hello;1

10、7.35,1:100,B = 2x2x2 double Hello 17.3500 1x100 double C1=B(1,2)= C2=B1,2=Hello Hello,使用小括号访问元胞数组的元胞也是一个元胞数组 class(C1) ans=cell,使用花括号访问元胞数组的元胞class(C2) ans=char,3)用 创建一个元胞数组,MATLAB能够自动扩展数组的尺寸,没有明确赋值的元素作为空元胞数组存在。, C(2,2)=3C=1 3, C=1C = 1,点击查看 元胞数组的操作函数,1.3.4 结构体数组,Student = name: haoage: 26grade: 2,

11、Student.name=hao; Student.age=26; Student.grade=2; Student,元胞数组的操作函数,返回,Struct函数的基本用法 StructName = struct(field1,val1,field2,val2,) StructName = struct(field1,val1,field2,val2,) 用法实例: Student1=struct(name,Hao,age,26,grade,2) Student2=struct(name, Hao,Li, age, 22,24,grade, 2,3),Student1 = name: Haoag

12、e: 26grade: 2,Student2(1,1) = name: Haoage: 22grade: 2,Student2(1,2) = name: Liage: 24grade: 3,disp函数 在命令窗口显示内容。 disp(包邮呦,亲!);包邮呦,亲! aa=1:5; disp(aa);1 2 3 4 5 x = 1 2 3; disp(The values of x are: , num2str(x);The values of x are: 1 2 3,load函数 导入数据。假设应用实例当前处在d:myfilezhang,其中myfile文件夹下有数据mydata1.mat,

13、zhang文件夹下有数据mydata2.mat。 load mydata2.mat; 将mydata2.mat导入到 workspace。 等效于load d:myfilezhangmydata2.mat; 注意:路径中带空格是错误的,比如 load d:my filezhangmydata2.mat; load mydata1.mat; 表示导入上一级目录中的数据。 如果当前处在zhang文件夹下的hao文件夹,那么 load mydata1.mat;,save函数 保存数据。使用形式: save(FileName, VariableName); save(d:hao.mat, mydata1); input函数 R = input(What is your name: ,s)What is your name: haoR = hao R = input(What is your name: ),其中s表示输入为字符型数据,此时表示输入数据类型为双精度,sscanf函数 格式化读取字符串。使用形式: A=sscanf(s,format) A=sscanf(s,format,size),

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

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