MATLAB基础知识零基础到入门(第五期 逻辑向量)

第五部分 逻辑向量

  • 逻辑向量使用关系表达式,结果为真/假值。

5.1 向量和矩阵的关系表达式

  • 1、关系运算符可用于向量和矩阵。例如,假设有一个向量vec,我们想将向量中的每个元素都与5进行比较,以确定它是否大于5。结果将是一个具有逻辑真或假值的向量(与原始的长度相同)。

在这里插入图片描述
注意,这会创建一个由所有逻辑的真或假值组成的向量。尽管结果是一个由1和0组成的向量,并且可以在向量isg上执行数值操作,但它的类型是logical(逻辑类型),而不是double(双精度浮点型)。
在这里插入图片描述在这里插入图片描述

  • 为了确定向量vec中有多少元素大于5,可以对生成的向量isg使用求和函数:
    在这里插入图片描述

  • 我们所做的就是创建一个逻辑向量isg。这个逻辑向量可以用来索引原始向量。例如,如果只需要vector中大于5的元素:
    在这里插入图片描述
    这称为逻辑索引。只有vec中逻辑向量isg中对应元素逻辑为真的元素才会返回。

  • 2、要创建所有逻辑1或0的向量或矩阵,可以使用函数truefalse
    在这里插入图片描述

  • oneszeros函数还可以直接创建逻辑数组。
    在这里插入图片描述

5.2 逻辑内置函数

  • 1、MATLAB中有内置的函数,它们在逻辑向量或矩阵方面很有用;其中两个是anyall函数。如果vector中的任何元素表示为真,则函数any返回逻辑上的真值,否则返回假值。只有当所有元素都表示为true时,函数all才返回逻辑上的true。下面是一些例子。
    在这里插入图片描述
    对于下面的变量vec2,一些但不是全部的元素为真;因此,any返回true, all返回false。

  • 2、函数find返回满足给定条件的向量的索引。例如,查找向量中所有大于5的元素:

>> isg
isg =
     1     2     5     6     7
>> find(isg>5)
ans =
     4     5
  • 对于矩阵,find函数在返回满足指定条件的索引时将使用线性索引。例如:
>> mata=randi(10,2,4)
mata =
     2    10     9     5
    10     5     2    10
>> find(mata==5)
ans =
     4
     7

对于向量和矩阵,如果没有元素符合条件,则返回空向量。例如:

>> mata
mata =
     2    10     9     5
    10     5     2    10
>> find(mata==4)
ans =
  空的 0×1 double 列向量
  • 3、函数isequal在比较数组时很有用。在MATLAB中,对数组使用等式运算符将为每个元素返回1或0;然后可以在结果数组上使用all函数来确定所有元素是否相等。内置函数isequal也可以做到:
    在这里插入图片描述
    然而,一个区别是,如果两个数组的维数不相同,isequal函数将返回逻辑0,而使用相等操作符将导致错误消息。这也适用于字符数组:
    在这里插入图片描述
    在这里插入图片描述
  • 4、MATLAB中也有用于数组元素的or和and操作符:
运算符功能
I或运算
&和运算
这些操作符将比较任意两个向量或矩阵,只要它们大小相同,一个元素一个元素地比较,并返回逻辑1和0大小相同的向量或矩阵。运算符 II 和 && 仅用于标量,而不是矩阵。例如:
>> v1=logical([1 0 1 1]);
>> v2=logical([0 0 1 0]);
>> v1&v2
ans =
  1×4 logical 数组
   0   0   1   0
>> v1|v2
ans =
  1×4 logical 数组
   1   0   1   1
>> v1&&v2
||&& 运算符的操作数必须能够转换为逻辑标量
值。 
  • 5、与数值运算符一样,了解运算符优先规则是很重要的。下表按优先级顺序列出了目前已经讨论过的操作符的规则。
运算符优先级顺序(由高到低)优先级
( )最高
‘,^
- ,~
*, / , \
+ , -
:
< , >, <= , >= , ~=
&
I
&&
II最低

5.3 矩阵乘法

矩阵乘法并不意味着逐项相乘;它不是数组操作。矩阵乘法有非常特殊的含义。首先,要将矩阵a与矩阵b相乘得到矩阵c, a的列数必须与b的行数相同。得到的矩阵C与A的行数相同,与B的列数相同:
在这里插入图片描述
在MATLAB中,*运算符将执行这个矩阵乘法:

在这里插入图片描述

  • 1、行向量或列向量的矩阵乘法:它们必须有相同数量的元素,但一个必须是行向量,另一个必须是列向量。例如,对于一个列向量c和行向量r:在这里插入图片描述
    在这里插入图片描述
    在MATLAB中,这些操作是使用*运算符来完成的,*运算符是矩阵乘法运算符。首先,创建列向量c和行向量r。
    在这里插入图片描述
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海阔清野

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值