当前位置: 首页 > 编程日记 > 正文

matlab整型和浮点的区别,技术帖 | 心理学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码。这里我给大家贴个图

98771923_1

看到这个图说不定就有人明白了,其实我们所谓的一个字符只不过之前我们有个对应表来做对应罢了,从这个表当中可以发现比如字符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。

相关文章:

为窗口添加滚动条事件

为窗口添加滚动条事件其实非常的简单, window.οnscrοllfunction(){};注意在获取滚动条距离的时候谷歌不识别document.documentElement.scrollTop,必须要加上document.body.scrollTop;即var scrolltopdocument.documentElement.scrollTop||d…

当远程桌面到Windows终端服务器,出现终端服务器超出了最大允许连接数,怎么办...

如果是老版本的MSTSC则使用 MSTSC /console /v:ip如果是新版本 MSTSC /admin /v:ip转载于:https://www.cnblogs.com/SharkXu/archive/2012/10/08/MSTSC.html

连续地址数据(数组或者malloc的内存)作为函数参数

在编程时,一簇连续的内存单元,比如数组或者malloc的内存块,如下的数组a 或者指针p. int a[4]; int *p malloc(4 * sizeof(int)); 我们要想修改上述连续的内存块,可以写一个函数(一维指针做参数传入起始地址即可)来搞定。 If …

Linux 文件系统及 ext2 文件系统

linux 支持的文件系统类型 Ext2:有点像 UNIX 文件系统。有 blocks,inodes,directories 的概念。Ext3:Ext2 的加强版,添加了日志的功能。支持 POSIX ACL(Access control Lists,访问控制列表) 。Isofs(iso9660):CDROM 文件系统。Sysfs:基于 ram 的文件系统&#xff0c…

php每分钟刷新一次的验证码,php如何在进入页面的时候自动刷新一次验证码

页面直接进入login页面的时候无法获取到$_SESSION["auth"]值,只能刷新一次验证码才能获取到值,怎么才能在用户访问的时候自动刷新一次验证码,求大神支招。。。验证码回复讨论(解决方案)哪里获取到$_SESSION["auth"]值&am…

vs2010快捷方式

【窗口快捷键】 CtrlW,W: 浏览器窗口 CtrlW,S: 解决方案管理器 CtrlW,C: 类视图 CtrlW,E: 错误列表 CtrlW,O: 输出视图 trlW,P: 属性窗口 CtrlW,T: 任务列表 CtrlW,X: 工具箱 CtrlW,B: 书签窗口 CtrlW,U: 文档大纲 CtrlD,B: 断点窗口 CtrlD,I: 即时窗口 CtrlTab: 活…

移动端rem屏幕设置

//修改页面title var pageTitledocument.getElementsByTagName("title")[0].innerHTML; if(location.href.indexOf("index.html")>-1 || location.href.indexOf("html")-1){document.getElementsByTagName("title")[0].innerHTML&q…

二维指针操作链表

背景 Linus slashdot: https://meta.slashdot.org/story/12/10/11/0030249 Linus大婶在slashdot上回答一些编程爱好者的提问,其中一个人问他什么样的代码是他所喜好的,大婶表述了自己一些观点之后,举了一个指针的例子,解释了…

php多选框怎么传值,tp3.2如何处理多选框传参和判断状态

创建多选框:(1)普通的多选:123(2)在数据库中遍历出来的多选框,value和data-id都要赋值(大家都懂,我就不说啦):{$vo.title} 2.我是用jq做的异步,我是使用英文“,”分割字段存储的。我们的前端是自己封装过的,大家根据自…

UIWebView和UIActivityIndicatorView的结合使用

环境:Xcode6.1 UIWebView是iOS开发中常用的一个控件,是内置的浏览器控件,我们可以用它来浏览网页,加载文档等。这篇文件将结合UIActivityIndicatorView控件制作一个小实例(加载apple的官网)。效果如下: 一.建立一个Sin…

Python对象类型——字符串、列表、元组

字符串Python连接多个字符串可用“”号,但这个操作不如把所有子字符串放到一个列表或可迭代对象中,然后调用一个join方法来把所有内容连接在一起节约内存。原始字符串操作符(R/r):相当于取消“\”转义,在使…

leetcode--1:(python)Two Sum

2019.5.25: #1 Given an array of integers, return indices of the two numbers such that they add up to a specific target. You may assume that each input would have exactly one solution, and you may not use the same element twice. Example: 我的解法&#xff1…

memset初始化内存

在suse 9,运行man memset 查看memset的解释如下&#xff1a; “NAME memset - fill memory with a constant byte SYNOPSIS #include <string.h> void *memset(void *s, int c, size_t n); DESCRIPTION The memset() function fills the fir…

php 数字变量,php入门变量之数字_PHP教程

在介绍变量时&#xff0c;我明确指出PHP具有整型和浮点型(小数)数字类型。但是&#xff0c;依据我的经验&#xff0c;这两种类型都可以归类到一般的数字之下(在极大程度上是这样的)。下面列举下PHP中有效的数字类型的变量&#xff1a;83.1410980843985-4.23985084.4e2注意&…

BZOJ 1597: [Usaco2008 Mar]土地购买( dp + 斜率优化 )

既然每块都要买, 那么一块土地被另一块包含就可以不考虑. 先按长排序, 去掉不考虑的土地, 剩下的土地长x递增, 宽y递减dp(v) min{ dp(p)xv*yp1 }假设dp(v)由i转移比由j转移优(i>j), 那么dp(i)xv*yi1 < dp(j)xv*yj1化简得 (dp(i) - dp(j))/(yi1-yj1) > -xv然后就斜率优…

雨季来临 对车辆涉水说“NO”

七月的上海开始进入暴雨频发的季节。在城市排水系统受到考验的同时&#xff0c;车主们的车辆也同样经受着雨水的考验。而每年都会有相当一部分车辆因为“水害”&#xff0c;使车辆自身的价值受到很大的影响。为此开新通过以下案例为大家做个分析。并推荐几个实用的技巧以备不时…

C#编写dll进行sql server数据库扩展储存过程

一、编写C#函数文件 1、新建一个类库文件 备注&#xff1a;sqlserver 2008只能用.net3.5版本。 2、如有想加入强命名的话可如下步骤&#xff1a; 参考博文&#xff1a;https://blog.csdn.net/donnie88888888/article/details/52743064 1、运行在“开始菜单”-“程序”-“Micros…

malloc(0)-malloc 0 字节

C17中有如下描述&#xff1a; 7.22.3 Memory management functions 1 The order and contiguity of storage allocated by successive calls to the aligned_alloc, calloc, malloc, and realloc functions is unspecified. The pointer returned if the allocation succeeds …

php常见排序算去,PHP兑现常见排序算法

PHP实现常见排序算法//插入排序(一维数组)function insert_sort($arr){$count count($arr);for($i1; $i$tmp $arr[$i];$j $i - 1;while($arr[$j] > $tmp){$arr[$j1] $arr[$j];$arr[$j] $tmp;$j--;}}return $arr;}//选择排序(一维数组)function select_sort($arr){$coun…

C#中 int.TryParse 的用法

int i -1;bool b int.TryParse(null, out i);执行完毕后&#xff0c;b等于false&#xff0c;i等于0&#xff0c;而不是等于-1&#xff0c;切记。 int i -1;bool b int.TryParse("123", out i); 执行完毕后&#xff0c;b等于true&#xff0c;i等于123&#xff1b;…

2022-2028年中国综艺节目市场深度调研及投资前景预测报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新&#xff08;交付时间约3个工作日&#xff09; 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国综艺节目行业市场行业相关概述、中国综艺节目行业市场行业运行环境、分析了中国综艺节目行…

cocos2d-js 自定义事件监听派发

熟悉js的dom事件或者flash事件的&#xff0c;基本都能立马明白cc.eventManager的用法。 cc.eventManager有两种注册监听器的方式&#xff0c;一种是原生事件&#xff0c;例如 cc.eventManager.addListener({ event: cc.EventListener.KEYBOARD, onKeyReleased: function(keyCod…

URL编码转义,冒号和/不转,否则导致http链接失效

URL含有中文需要转义 参考 https://blog.csdn.net/benbenxiongyuan/article/details/10608095 自己写一个 1 public boolean checkURLFileIsExist(String stringURL){2 boolean isExist false;3 String sEncodeURL;4 5 try{6 // URL内中文…

C面向对象之透明指针的运用

不透明指针(opaque pointer)可以用来在C中实现封装。 什么是不透明指针(opaque pointer) 从字面意思来看&#xff0c;“不透明”意味着看不到内部&#xff0c;因此“不透明指针”即看不到内部定义的指针。这样说有些抽象&#xff0c;我们来看个例子&#xff1a; #include &l…

支付宝 php rsa算法,:PHP支付宝接口RSA验证

这两天一直困扰的PHP RSA签名验证问题终于解决了&#xff0c;由于之前RSA接触的不多&#xff0c;再加上官方至今还未有PHP的SDK可供参考&#xff0c;因此走了一些弯路&#xff0c;写在这里和大家分享。虽然支付宝官方还未提供相关SDK&#xff0c;PHP确实可以实现RSA方式的签名&…

int与string转换

参考&#xff1a; http://greatverve.cnblogs.com/archive/2012/10/24/cpp-int-string.html 转载于:https://www.cnblogs.com/predator-wang/p/4789775.html

更改Jenkins升级站点

更新地址&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json 【图示】&#xff1a;

Android 模仿微信启动动画(转)

本文内容 环境项目结构演示微信启动动画本文演示微信启动动画。请点击此处下载&#xff0c;自行调试。 顺便抱怨一下&#xff0c;实践性&#xff08;与研究性质的相对&#xff09;技术博的“七宗罪”&#xff1a; 第一宗罪&#xff0c;错字连篇&#xff0c;逻辑不清&#xff1b…

navicat for mysql收藏夹

navicat for mysql如果库表非常多的化&#xff0c;每次输入表名比较繁琐。 可以进入收藏夹便于快速打开经常使用的库表。 打开要入收藏夹的表&#xff0c;文件-添加收藏夹。 也可以快捷键shiftctrl1 如果已经有3个占用了&#xff0c;则自动跳到第4个栏位 也可以快捷键shiftctrl…

C 变量的作用域

下面的程序输出什么&#xff1f;思考一下 #include <stdio.h>// Driver Code int main() {{int x 10, y 20;{// The outer block contains// declaration of x and// y, so following statement// is valid and prints// 10 and 20printf("x %d, y %d\n",…