打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
技术帖 | 心理学MATLAB初学者教程--简单数据类型介绍(逻辑型数据,整型/浮点型数据,字符型)...
1.2.1 什么是变量和变量名
变量这个词似乎在许多地方都有出现,在计算机中变量是指是一段有名字的连续存储空间(摘自百度百科),而这个所谓的名字就叫做变量名。举个例子说现在我们再MATLAB的命令窗口中输入:
A = 1 然后按回车,我们会看到在屏幕中间显示
>>A = 1
A =
1
同时在Workspace当中也会出现一行,显示有关A的一些内容。
这段代码的意思就是将1这个数字存在了电脑里,并且给这个数字起了一个名字,名字为A。做一个对比就好像一个人,他有一个名字叫小明,这个人就好比是1,而小明就好比是A,后面当我们想讨论有关小明的事时,就直接使用小明这个名字。所以我们想用到这个1的时候,我们就可以直接用它的名字。
比如现在在matlab的命令窗口中输入A+1,按回车,这个时候就会出现ans = 2,这个过程就等同于输入 1+1。
在这里面1就是变量,A就是变量名。当然一个数字可以是变量,一个英文字母也可以是变量,同时一堆数字也可以是一个变量,一堆英文字母也可以一个变量。这就要去看如何定义了。
前面说过workspace是用来做什么的,这个东西就是用来显示当前变量的一些信息,比如这个变量的名字以及内容等等。
注意:
1、  这里在命令窗口当中我们输入的“=”并不叫它等于号,而称呼它为赋值号,它就是=后面的那个变量赋值给前面那个变量名中,好比给后面那堆东西起一个名字。而在程序中等于号的写法为“==”,这个时候就需要多注意一下。
2、变量名是唯一的,但区分大小写。比如我们在A = 1回车之后,又输入了A = 2 回车。这个时候我们发现在workspace当中只有一个A,并且它所对应的值是2。这个时候就会明白A被2抢去当名字了。但如果我们再A = 1回车之后输入了a = 2。这个时候会发现在workspace当中有两行,一行显示A,其对应的值是1,还有一行显示a,其对应的值是2。这也就说明了这变量名是区分大小写的。
3、起变量名是有一定“忌讳”的,比如变量名的第一个字母不能是数字,所以类似2B这类的变量名是不能用滴(话说这样称呼人也是不对滴- -),还有很多程序里面所专有的名字是不能用来当做变量名的,比如if,switch,otherwise等等。
4、对变量起名字也是有一些讲究的,这个也许在程序上没有什么正确错误之分,但在最开始就最好能养成一个习惯,就是采用一些有意义的英文单词作为变量名,而少去使用什么a,b,c这样的东西做变量名,虽然这样没任何错误,并且调用起来很简单,但如果当变量多的时候,自己就会发现a,b,c指的是什么东西你就已经分不清楚了。
从下面开始就正式讲解matlab了,在讲解之前先说明一下后面讲解程序的一些格式。比如我说在命令窗口中输入1+1 回车,得到的结果是
>>1+1
ans =
2
今后就简写成>>1+1    à   ans = 2。
1.2.2 逻辑型变量
1.2.2.1 逻辑型变量简单介绍
前面说变量的类型有好多种,我们就开始从最简单的变量开始讲起。
最简单的变量类型应该就是这个逻辑型变量,这种变量的值只有两种,一种是true,另外一种是false,当然名字可以有很多。比如
>>door= false   à   door = 0
>>gender= true  à   gender = 1
这个时候会很神奇的发现,为什么变量是false的时候,其显示为啥是0,而变量是true的时候,其显示的是1呢?
再输入
>>a= 0   à   a = 0
>>b= 1   à   b = 1
这个时候在workspace中就会有4个变量,仔细观察这些变量,会发现door和a的值都是0,但细心的同学会发现在door和a前面的图标不一样。一个是小对勾,一个方格。你说这两个东西是一样的么?怀着这个问题我们再输入
>>gender+ b   à   ans = 2
这个时候就彻底糊涂了。。。
我们来慢慢解释这个现象,在matlab中用false和true来表示两种逻辑型变量,其显示的值分别为0和1,但这个值和数值0和1还是不一样的,为啥不一样就是因为他存储的方式不一样,这个后面讲到整型的时候我会详细的解释。但这两个东西在做数值运算的时候,就会强制将逻辑型变量转换为数值来进行计算,false当成0,true当成1。所以就有gender + b = 2这样的写法。同样如果做逻辑运算的时候,数值也会强制转换为逻辑值来进行运算。这里转换的规则是任何非0的数当成true,而0当成false。至于什么是逻辑运算,接下来我们就要详细的说说。
1.2.2.2 逻辑运算
在心理学当中逻辑学应该算是一个方向。在逻辑学中不知道有没有讲过“且”,“或”,“非”这三个概念。比如P和Q是两个事件,如果P是真的,Q也是真的,那么P且Q这个事件也就是真的。这个就是一个逻辑运算,其运算的类型就是
“且”:规则是两者都为真时,运算结果才为真,而只要其中有一个是假时,其运算结果就是假。
“或”:规则是两者只要有一个是真时,运算结果就是真,只有两者都是假的时候,运算结果才是假
“非”:规则是一个真事件的非运算结果是假,假事件的非运算结果是真。
在matlab中“且”这个逻辑运算符号为&&,“或”的逻辑运算符号是||,“非”的逻辑运算符号是~
举例:
>>a= true   à   a = 1  %定义变量a,其值为逻辑型真
>>b= false   à   b = 0  %定义变量b,其值为逻辑型假
>>a&&b   à   ans = 0  %a是真,b是假 a且b为假
>>a||b   à   ans = 1  %a是真,b是假 a或b为真
>>~a   à   ans = 0  %a是真,非a为假
下面我们来看看前面我们说的数值强制转换为逻辑值的例子
>>a= 2   à   a = 2  % 定义变量a,其值为数值2
>>b= true   à   b = 1  % 定义变量b,其值为逻辑型真
>>a||b   à   ans = 1  %去看看workspace里面,ans前面是个小对勾,这也就是说ans是一个逻辑型数值,前面说1代表是真,也就是说a或b是真,b是逻辑型数据没问题,但a是一个数值,它进行了逻辑运算,根据前面说的规则,a转换为真,这样真或真结果就是真。
>>~a   à   ans = 0 %这个时候ans会将前面那个ans覆盖掉,这就是在变量中讲的变量名的唯一性。这时的ans前面也有小对勾,那么就说明这个结果是逻辑型数据,其值为假。这是因为a这个数值在做逻辑运算的时候被强制转换为逻辑型数据,根据规则其转换为真,非真的结果就是假,这个和给出的结果吻合。
当然如果有多个逻辑运算放在一起的时候,如果没括号,先运算非,然后按照从左往右运算。
比如
>>true&& ~true || true   à   ans = 1
%其先运行~true 结果是false,然后就是要运算true&&false||true 这个时候应该就理解从左往右运算,先运算true&&false 其值为 false  这时候将得到的结果和后面的true再运算就是  false||true 其结果是true,答案吻合。
注意:
1、 计算机在进行逻辑运算的时候,在有些情况下会采用一种截断式的运算算法,比如
0&&1&&1&&1,这个时候后面都是且运算,而且运算中只要有一个是false,那么结果就是false,所以它有可能不会去再运算后面的一些结果,这也是为了让运算更为快速。但无论怎么样,我们理解就按照从左往右的顺序就没啥错。
2、当我们不知道运算顺序的时候,就用小括号将先运算的那部分括起来就好。
为了更快的弄完这个教程,我希望如果有懂matlab并且希望和大家分享的同学能参加进来一起完善这个教程。大家可以写自己熟悉的那块,然后发到论坛上来,我可以加一个目录让后面的同学好找。
1.2.3 字符型
到了最为蛋疼的地方了,本来想后面再分开一节来介绍这个,但由于后面怕有事没法更新,就在这里先简单介绍一下吧。
字符型就是一些字符,使用方法是用单引号把所要引的字符放进去。比如
>> A = ‘a’   à   A = a
这个时候A这个变量就指代的是a这个字符。一个字符确实没太大用,毕竟我们很少用一个字符去做啥事,但一堆字符就能做很多事,比如一个存放数据的txt文件的文件名什么的,这个就要在后面讲字符串的时候来讲了。现在只是简单的介绍一下字符的用法。
前面我说过任何一个变量都是一段二进制码,你说一个数字还好,我可以用二进制来表示,但一个字符怎么用二进制来表示呢?这个就要牵扯到计算机里面编码的问题了。不知道有多少人知道ASCII码。这里我给大家贴个图
看到这个图说不定就有人明白了,其实我们所谓的一个字符只不过之前我们有个对应表来做对应罢了,从这个表当中可以发现比如字符a,其值就是97。所以我们可以演示一条命令
>>’a’+1   à   ans = 98
%我们发现字符竟然也可以做运算,看了上面的表,我相信大部分人知道为啥答案等于98了,a这个字符在运算中强制转换为97,然后再运算,得到的结果是98。除了对着这个表查看意外,如何在matlab当中转换这个字符?这个问题要放在后面讲函数的时候再说。 注意:字符和整型数可以相互转换,但要注意字符也可以表示数字,比如49就代表字符1,所以在matlab当中’1’和1是完全不同的两个东西,所以要看清变量的类型再去做运算,如果这个不注意,后面有可能会犯很大的错误。
为了激发大家的兴趣,说一些题外话,是关于这个ASCII码的,我差不多是在初三的时候就知道这东西,当时还不知道matlab是什么东东呢~那会在百度贴吧看帖,有个帖子是说谁能打出我这个帖子的内容,你就是一个大牛人。帖子的内容很短我爱你 楼主,就米有了~但看下面回帖的所有人都回复的是”我爱你楼主”,我尝试了一下,明明粘贴在上面那段东西,为啥一发帖就变成了”我爱你楼主”,最后才知道这个其实就是汉字的ASCII码,在发帖中&#这个符号就是讲后面那段数字转换成字符。所以为啥大家发出来的东西都变成了汉字。那楼主是如何发出这些东西的呢?其实他在之前就把这个在之前又加了一层ASCII码,也就是说&对应的是&,#对应的是#,以此类推,然后它把这些字符首先转换为ASCII码,然后发了出去,经过以此ASCII码转换,就正好成了贴中的内容,然而当大家粘贴发布的时候,就会进一步的转换成字符。
PS:所以如果哪天有个异性莫名其妙的给你发”073076079086069089079085”这么一段数字,那么不要错过了,请好好珍惜TA。
(编辑/陈锐   52brain公众号编辑部)
52brain,Connect Young Brains.
谈谈本文,如果想收获更多
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
MATLAB数据类型
【MQL4】MQ语言简单说明与教程
从Excel的数据类型说Python
【R分享|实战】 新手福利~认识数据集的内在
2016年计算机二级考试C语言备考模拟题库(1)
R语言笔记丨从零学起?环境安装、基础知识、运算法则、数据类型
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服