matlab建立5变量关系,5 Matlab 的变量与数据类型

计算机本质上是一个能够处理数据的机器。Matlab 可以处理很多类型的数据,我们功利一点,先只了解最常用的几种数据类型。其他的数据类型,随用随查。

从这一次教程开始,大家要勤在命令行窗口中练习。

数值数据(Numeric)

可以把它理解为数学意义的数字。Matlab 默认把数值型数据按照双精度浮点型存储。咱们先不管什么是双精度浮点型,最直观的了解就是咱们在Matlab 中做数值计算时,它的精度是小数点后4位。

你可以试着在命令行窗口中输入以下命令,看看这样的数值计算(输入完命令后要按回车。在>>符号后面是输入的内容,ans = 之类的内容,是 matlab 在执行命令后的输出,后文不再解释类似的输入与输出)。

>> 3 + 4

ans =

7

>> 3 / 4

ans =

0.7500

字符串(string)

以单引号'或双引号"括起来的任意文本,如'abc'就是一个字符串,它包含a, b, c三个字符,也可以写成"abc"。

请注意,单引号或双引号只是字符串的边界,它并不包含在字符串当中。那如果字符串本身包含有单引号或双引号时怎么办?

这里存在两类情况,我们用写字符串I'm OK和I"m OK来举例.

如果字符串本身的引号与字符串边界的引号不同,则上述例子在程序中应该写成'I"m OK' 和 "I'm OK".

字符串本身的引号与字符串边界的引号相同,则上述例子的写法就是这样的:'I''m OK'和"I""m OK". 注意字符I后面的引号写了两次。

大家可以思考一下,如果字符串里面既包含'也包含"怎么办?

在 matlab 中用不同的方法试试:

>>'I"m OK'

ans =

'I'm OK'

>>"I'm OK"

ans =

"I'm OK"

>>"I""m OK"

ans =

"I"m OK"

>> 'I''m OK'

ans =

'I'm OK'

>> 'I''m "God"!'

ans =

'I'm "God"!'

字符串是文本,而计算机只能处理数字。所以需要先将文本转换为数字才能执行进一步的操作。这就涉及到编码,所有的文本先通过编码计算方案转换为数字再存储到计算机里。

最早的编码方案是美国人搞出来的,只负责127个字符(大小写英文字母加上一些符号和数字)的编码。这种编码方案被称为ASCII编码。比如,在这个编码方案里,a对应的数字是97, b对应的是98. 所以,大家应该能理解下面的计算结果。

>> 'a' + 'b'

ans =

195

编码方案还有很多种,比如中国的汉字编码采用的是 GBK 编码,也有采用 GB2312 的,有兴趣的小伙伴们,可以自己去查一下。

逻辑型数据(bool)

逻辑型数据,很多人都习惯上把它称为布尔值。在 Matlab 中,它只有true和false这两个值,请注意大小写。Matlab 用1表示true,而用0表示false.

我们在命令行窗口中看看这一特性:

>> true

ans =

logical

1

>> false

ans =

logical

0

布尔值可以通过关系操作符计算得到,关系操作符主要有以下几种(如果对以下的判断回答为“是”,则结果为 true,否则结果为 false.):

== 判断两边的值是否相等;

~= 判断两边的值是否不等;

> 判断左边的值是否大于右边的值;

< 判断左边的值是否小于右边的值;

>= 判断左边的值是否大于等于右边的值;

<= 判断左边的值是否小于等于右边的值。

请看例子:

>> 3 == 5

ans =

logical

0

>> 3 ~= 5

ans =

logical

1

>> 3 > 5

ans =

logical

0

>> 3 <= 5

ans =

logical

1

多个关系计算式可以通过逻辑运算符连接得到更复杂的逻辑表达式。逻辑运算符主要有以下三种:

& 逻辑与(AND),只有当&两边的值都为 true 时,结果才为 true.

| 逻辑或(OR),当|两边的值中至少有一个为 true时,结果为 true.

~ 逻辑非(NOT),它是单目操作符,也就是~A的形式。如果A为true,则~A为 false. 反之则为 true.

结合例子进一步理解:

>> 3 | 5

ans =

logical

1

>> -1 & 0

ans =

logical

0

>> 'a' | 0

ans =

logical

1

>> ~'c'

ans =

logical

0

>> ~0

ans =

logical

1

这里可能有小伙伴比较懵,几个意思?前面说过,true 被 Matlab 存储为1,而false被存储为0. 更进一步,在逻辑运算过程中,Matlab 将所有的非零数据都当作是 true.

继续看例子:

>> (~ (2 > 3)) & (3 <= 4) | (5 > 3)

ans =

logical

1

这里用了括号,以提高某些块的运算优先级(跟数学里做的一样,都是先算括号里的,然后才算其他的)。可以想一想,如果我写成这样:~ 2 > 3 & 3 <= 4 | 5 > 3,大家能一眼看出先算哪个,后算哪个吗?

为了避免歧义,勤用括号就没错。&, |, ~这三种运算符的运算的规则是从左至右,其他的优先级关系我们就不管了,留着脑容量处理更重要的事情。

逻辑运算常常用于循环或条件判断中。比如:

if 5 > 3

disp ('OK')

end

如果5 > 3,就显示OK.

while 3 < 5

disp ('x smaller than y')

end

这是一个循环操作,只要3 < 5 就一直显示3 smaller than 5. 这个例子,是一个死循环,也就是说它会一直这么执行下去,除非强制终止(在Matlab中是按ctrl + c键)。实际工作中,很少这么写。

变量

变量的概念与初中代数中变量概念几乎是相同的。只是在计算机程序中,变量可以是任意的数据类型。在程序中,使用变量名来表示变量。顾名思义,变量名就是变量的名称。变量名不能乱取,在 Matlab 中,变量的命名必须遵守以下规则:

第一个字符必须是英文字母

可以是数字、英文字母以及下划线_的组合

长度不超过63个字符

大小写敏感,也就是说变量cost与变量Cost, COsT等是不一样的。

有 20 个单词是 Matlab 内置的关键字,这些关键字不能用作变量名。具体是哪 20 个单词,大家可以使用iskeyword命令查看。

可以通过赋值操作符=将数据赋值给变量。

a = 3

b = '2'

c = 'hello world'

d = true

注意,这里的=与数学里的=不一样。

本质上,变量是一个指针,通过指针的指向我们可以获取变量的值。赋值操作只是改变了这个指针的指向。

我们试着用以上知识来理解下面的结果:

>> a = 5

a =

5

>> a = a + 3

a =

8

>> b = a

b =

8

>> a = 'Hello world!'

a =

'Hello world!'

>> disp (b)

8

第一次,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的值是什么。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值