首页/文章/ 详情

MATLAB基础课程 第六章 走进算法之门(13)

3年前浏览4775

继续讲解上堂课留下的问题。

上堂课程序中的data数组的结果可不正确哦!

数组里面都是数字。

不是字符ABCDE。

为什么呢?
那么不正确的数组怎么最后输出的结果是正确的呢?

但文件里面确实是ABCDE。

再来回顾一下数据类型的知识!

Matlab中有15种基本数据类型,主要是整型、浮点、逻辑、字符、日期和时间、结构数组、单元格数组以及函数句柄等。

请同学们务必记住以下几个最常用的数据类型!

别的数据类型等到用到的时候再求助help。

  1. 整型:

    (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方向取整。

  2. 浮点型:(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;

  3. 字符型:(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后的我做事就是这么细致!

图片

未完,待续!

800-400-1.jpg-revHEAD.svn004.tmp.jpg

通信消费电子电子航空航天通用MATLAB
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2021-04-15
最近编辑:3年前
算法工匠
博士后 | 高级工程师 诚信做事 认真讲课 传播知识
获赞 395粉丝 2581文章 335课程 40
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈