一起来学matlab-matlab学习笔记10
10_3关系运算符和逻辑运算符
觉得有用的话,欢迎一起讨论相互学习~Follow Me
参考书籍
《matlab 程序设计与综合应用》张德丰等著 感谢张老师的书籍,让我领略到matlab的便捷
《MATLAB技术大全》葛超等编著 感谢葛老师的书籍,让我领略到matlab的高效
关系运算符
% 示例:关系运算符的用法
format compact % 以紧凑形式的方式输出,以何种方式输出的格式化语句应当事先定义
a=[1 2;3 4]
b=[1 1;1 1]
a>1
a<3
a>=2
a<=2
eq(a,b) %注意a和b的shape应该相同
a==1 %找出a中等于1的元素
a~=b
a =
1 2
3 4
b =
1 1
1 1
ans =
0 1
1 1
ans =
1 1
0 0
ans =
0 1
1 1
ans =
1 1
0 0
ans =
1 0
0 0
ans =
1 0
0 0
ans =
0 1
1 1
逻辑运算及逻辑函数
- 逻辑运算和逻辑函数在计算机语言中是普遍存在的,在MATLAB中包含与、或、非、异或4种基本的逻辑运算。逻辑表达式和逻辑函数的值应该为一个逻辑量“真"或“假"MATLAB系统在给出逻辑运算的结果时,以数值“1”代表逻辑“真",以“0”代表“假",但在判断一个量是否为“真”时,以0代表“假",以任意的非零值代表“真"。MATLAB的逻辑运算也是以矩阵为基本运算单元的。
逻辑运算
示例
- 在M文件中,可以使用and(A,B)、or(A,B)、not(A)分别进行"与","或"*,"非"的操作,和运算符得到的结果一致
逻辑函数
all 判断是否所有元素为非零数
A=[0 1 2;3 4 5]
disp('all(A)')
all(A)
disp('all(all(A))')
all(all(A)) % 按照列进行操作
disp('A>=1')
A>=1
disp('all(A>=1)')
all(A>=1)
% 判断一个矩阵中的所有元素是否都大于等于1 all(all(A>=1))=1
A =
0 1 2
3 4 5
all(A)
ans =
0 1 1
all(all(A))
ans =
0
A>=1
ans =
0 1 1
1 1 1
all(A>=1)
ans =
0 1 1
注意:MATLAB下标索引从1开始
A=[0 1 2;3 4 5]
disp('all(A)') % 按照列的殊顺序
all(A)
disp('all(A,2)') % 按照行的顺序
all(A,2)
c=rand(1,2,3)
all(c)
A =
0 1 2
3 4 5
all(A)
ans =
0 1 1
all(A,2)
ans =
0
1
c(:,:,1) =
0.6787 0.7577
c(:,:,2) =
0.7431 0.3922
c(:,:,3) =
0.6555 0.1712
ans(:,:,1) =
1
ans(:,:,2) =
1
ans(:,:,3) =
1
any 判断是否有一个向量元素为非零数
>> A=[0 1 2; 0 3 4]
A =
0 1 2
0 3 4
>> any(A)
ans =
0 1 1
>> any(A,2)
ans =
1
1
exist 查看变量或函数是否存在
find:找出向量或矩阵中非零元素的位置标识
- 在许多情况下,都需要对矩阵中符合某一特定条件的元素的位置进行定位,如将某一矩阵中为零的元素设为1等。如果这个矩阵的元素非常多,手工修改非常麻烦,灵活运用find函数和各种逻辑及关系运算可以是实现绝大多数条件的元素定位。find函数的基本用法有k=find(A),[i,j]=find(A),[i,j,v]=find(A),这是个很有用的逻辑函数,在对数组元素进行查找,替换和修改变化等操作中占有非常重要的地位。
k=find(A)
- 此函数返回由矩阵A的所有非零元素的位置标识组成的向量。如果没有非零元素会返回空值。
二维数组先寻找列再寻找行
三维数组寻找值
[i,j]=find(A)
- 此函数返回矩阵A的非零元素的行和列的表示,其中i代表行标而j代表列标。此函数经常用在稀疏矩阵中。在多维矩阵中通常将第一维用i表示,将其余各维作为第二维,用j表示。
[i,j,v]=find(A)
- 此函数返回矩阵A的非零元素的行和列的标识,其中i代表行标而j代表列表,同时,将相应的非零元素的值放入列向量v中,即i和j的值与[i,j]=find(A)取值相同,只是增加了非零元素的值这一项
利用find()函数实现部分矩阵的替换
isfinite:确认矩阵元素是否为有限值
isempty:确认矩阵是否为空矩阵
- 不要把空矩阵、零矩阵及矩阵不存在3个概念混淆,空矩阵说明矩阵存在,但是矩阵没有元素;零矩阵是指矩阵的所有元素都为零;矩阵不存在是指当前的工作空间中没有定义此矩阵变量。isempty(A)可以判断一个存在的矩阵变量是否为空矩阵,如果矩阵为空矩阵则返回逻辑“真",否则返回逻辑“假",一个空矩阵至少有一维是零,如0×0、0×5、0×3×3等。空矩阵没有任何元素,可以用函数size(A)来判断,如果其中有一维为零,则A就是零矩阵。(因为还有其他多个维度有可能其中只有方括号但是没有值)
isequal:判断几个对象是否相等
- isequal(A,B,C...)如果要判断的所有对象A,B,C...具有相同的类型、大小和内容,对于矩阵来说,就是所有矩阵的维数相同,而且矩阵元素的数值相同,如果满足这样的条件,此函数返回逻辑“真",反之,只要有一个对象与其他对象不相同,就会返回逻辑“假"
isnumeric:判断对象是否是数据
- isnumeric(A)如果是数据矩阵,如稀疏矩阵、双精度矩阵、复数矩阵等,此函数返回逻辑“真",反之,如果A是字符串、结构体矩阵等,则返回逻辑“假”
其他逻辑函数
issparse 判断是否为稀疏矩阵
isstr 判断是否为字符串
islogical 判断一个矩阵是否为逻辑矩阵
isfield 判断对象是否为某个结构体矩阵的域
isstruct 判断是否为结构体
ishandle 判断是否为图像句柄