继续讲解上堂课留下的问题。
上堂课程序中的data数组的结果可不正确哦!
数组里面都是数字。
不是字符ABCDE。
为什么呢?
那么不正确的数组怎么最后输出的结果是正确的呢?
但文件里面确实是ABCDE。
再来回顾一下数据类型的知识!
Matlab中有15种基本数据类型,主要是整型、浮点、逻辑、字符、日期和时间、结构数组、单元格数组以及函数句柄等。
请同学们务必记住以下几个最常用的数据类型!
别的数据类型等到用到的时候再求助help。
整型:
(int8;uint8;int16;uint16;int32;uint32;int64;uint64)
通过intmax(class)
和intmin(class)
函数返回该类整型的最大值和最小值,例如 intmax(‘int8’)=127
;
int8():有符号,占用1个字节。向无穷大方向取整:正数向正无穷大方向,负数向负无穷大方向取整。
int16():有符号,占用2个字节。向无穷大方向取整:正数向正无穷大方向,负数向负无穷大方向取整。
int32():有符号,占用4个字节。向无穷大方向取整:正数向正无穷大方向,负数向负无穷大方向取整。
int64():有符号,占用8个字节。向无穷大方向取整:正数向正无穷大方向,负数向负无穷大方向取整。
uint8():无符号,占用1个字节。向0方向取整。
uint16():无符号,占用2个字节。向0方向取整。
uint32():无符号,占用4个字节。向0方向取整。
uint64():无符号,占用8个字节。向0方向取整。
浮点型:(single;double)
浮点数:REALMAX('double')和REALMAX('single')分别返回双精度浮点和单精度浮点的最大值,REALMIN('double')和REALMIN ('single')分别返回双精度浮点和单精度浮点的最小值。
Matlab中取整函数有: fix, floor, ceil, round。
fix:朝零方向取整。
比如:fix(-1.6)=-1; fix(2.3)=2;
floor:朝负无穷方向取整。
比如:floor(-1.3)=-2; floor(1.7)=1;
ceil:朝正无穷方向取整。
比如:ceil(-1.3)=-1; ceil(1.7)=2;
round:四舍五入到最近的整数。
比如:round(-1.4)=-1;round(-1.62)=-2;
字符型:(char)
在Matlab中,输入字符需使用单引号。字符串存储为字符数组,每个元素占用一个ASCII字符。如日期字符:DateString=’9/16/2001’实际上是一个1行9列的字符数组。构成矩阵或向量的行字符串长度必须相同。
可以使用char函数构建字符数组,使用strcat函数连接字符。
例如:name = ['abc' ; 'abcd'] 将触发错误警告,因为两个字符串的长度不等,此时可以通过空字符凑齐如:name = ['abc ' ; 'abcd'],更简单的办法是使用char函数:char(‘abc’,’abcd’),Matlab自动填充空字符以使长度相等,因此字符串矩阵的列纬总是等于最长字符串的字符数。
例如:size(char(‘abc’,’abcd’)) 返回结果[2,4],即字符串’abc’实际存在的是’abc ’,此时如需提取矩阵中的某一字符元素,需要使用deblank函数移除空格如name =char(‘abc’,’abcd’); deblank(name(1,:))。
这时候,同学们是不是有点明白了?
ASCII码本是二进制代码,ASCII码表的排列顺序是十进制数,包括英文小写字母、英文大写字母、各种标点符号及专用符号、功能符等。字符a的ASCII码是65 32=97。大写字母与小写字母相差32。
用fprintf语句做演示。
>> fprintf('%s\n ',65)
A
>> fprintf('%s\n ',65 32)
a
与C语言的差别!!!
matlab中的fprintf函数与C语言中的printf以及fprintf类似,可以用来格式化地输出结果,在功能上可以说是后两者的总和。
当matlab中的fprintf缺省参数fileID时,会直接在command window输出,类似C语言中的printf。当输入有效的fileID时,可以完成文件的输出,类似C语言中的fprintf。
此时,同学们是不是该明白了!
夸一下自己,70后的我做事就是这么细致!
未完,待续!