5 Matlab 的变量与数据类型
计算机本质上是一个能够处理数据的机器。Matlab 可以处理很多类型的数据,我们功利一点,先只了解最常用的几种数据类型。其他的数据类型,随用随查。
从这一次教程开始,大家要勤在命令行窗口中练习。
可以把它理解为数学意义的数字。Matlab 默认把数值型数据按照双精度浮点型存储。咱们先不管什么是双精度浮点型,最直观的了解就是咱们在Matlab 中做数值计算时,它的精度是小数点后4位。
你可以试着在命令行窗口中输入以下命令,看看这样的数值计算(输入完命令后要按回车。在 >> 符号后面是输入的内容, ans = 之类的内容,是 matlab 在执行命令后的输出,后文不再解释类似的输入与输出)。
以单引号 ' 或双引号 " 括起来的任意文本,如 'abc' 就是一个字符串,它包含 a , b , c 三个字符,也可以写成 "abc" 。
请注意,单引号或双引号只是字符串的边界,它并不包含在字符串当中。那如果字符串本身包含有单引号或双引号时怎么办?
这里存在两类情况,我们用写字符串 I'm OK 和 I"m OK 来举例.
大家可以思考一下,如果字符串里面既包含 ' 也包含 " 怎么办?
在 matlab 中用不同的方法试试:
字符串是文本,而计算机只能处理数字。所以需要先将文本转换为数字才能执行进一步的操作。这就涉及到编码,所有的文本先通过编码计算方案转换为数字再存储到计算机里。
最早的编码方案是美国人搞出来的,只负责127个字符(大小写英文字母加上一些符号和数字)的编码。这种编码方案被称为 ASCII 编码。比如,在这个编码方案里, a 对应的数字是 97 , b 对应的是 98 . 所以,大家应该能理解下面的计算结果。
编码方案还有很多种,比如中国的汉字编码采用的是 GBK 编码,也有采用 GB2312 的,有兴趣的小伙伴们,可以自己去查一下。
逻辑型数据,很多人都习惯上把它称为布尔值。在 Matlab 中,它只有 true 和 false 这两个值,请注意大小写。Matlab 用 1 表示 true ,而用 0 表示 false .
我们在命令行窗口中看看这一特性:
布尔值可以通过关系操作符计算得到,关系操作符主要有以下几种(如果对以下的判断回答为“是”,则结果为 true,否则结果为 false.):
请看例子:
多个关系计算式可以通过逻辑运算符连接得到更复杂的逻辑表达式。逻辑运算符主要有以下三种:
结合例子进一步理解:
这里可能有小伙伴比较懵,几个意思?前面说过,true 被 Matlab 存储为 1 ,而false被存储为 0 . 更进一步,在逻辑运算过程中,Matlab 将所有的 非零 数据都当作是 true.
继续看例子:
这里用了括号,以提高某些块的运算优先级(跟数学里做的一样,都是先算括号里的,然后才算其他的)。可以想一想,如果我写成这样: ~ 2 > 3 & 3 <= 4 | 5 > 3 ,大家能一眼看出先算哪个,后算哪个吗?
为了避免歧义,勤用括号就没错。 & , | , ~ 这三种运算符的运算的规则是从左至右,其他的优先级关系我们就不管了,留着脑容量处理更重要的事情。
逻辑运算常常用于循环或条件判断中。比如:
如果 5 > 3 ,就显示 OK .
这是一个循环操作,只要 3 < 5 就一直显示 3 smaller than 5 . 这个例子,是一个死循环,也就是说它会一直这么执行下去,除非强制终止(在Matlab中是按 ctrl + c 键)。实际工作中,很少这么写。
变量的概念与初中代数中变量概念几乎是相同的。只是在计算机程序中,变量可以是任意的数据类型。在程序中,使用变量名来表示变量。顾名思义,变量名就是变量的名称。变量名不能乱取,在 Matlab 中,变量的命名必须遵守以下规则:
可以通过赋值操作符 = 将数据赋值给变量。
注意,这里的 = 与数学里的 = 不一样。
本质上,变量是一个指针,通过指针的指向我们可以获取变量的值。赋值操作只是改变了这个指针的指向。
我们试着用以上知识来理解下面的结果:
第一次,Matlab 创建了一个变量 a 和数据 5 ,并且通过赋值操作,将变量 a 指向数据 5 ;
第二次,先将 a 指向的数据 5 加上 3 ,得到 8 ,通过赋值操作,将变量 a 指向了新的数据 8 ;
第三次,Matlab 创建了一个新的变量 b ,通过赋值操作,变量 b 与变量 a 指向同一个数据 8 . 注意了,这里两个变量指向了同一个数据。
第四次,Matlab 创建了一个字符串数据 Hello world! ,通过赋值操作,将变量 a 指向了这个字符串数据。注意了,虽然变量 a 的指向发生了变化,但是 b 仍然是指向数据 8 的。
最后,用 disp 命令查看下 b 的值是什么。
2023-08-15 广告