逻辑函数在交互运算及进行进行矩阵的变化中非常有用,可以很方便地查找或替换矩阵中满足一定条件的部分或所有元素。
all——判断是否所有元素都是非零数
对于向量a(行向量或列向量),如果向量中所有元素都是非零数,则all(a)返回1;否则返回0。 对于矩阵A,all(A)是作用于列向量上的,若矩阵中某列的所有元素都是非零数,则返回1;如果存在0则返回0。因此对于矩阵A,all(A)结果为与A具有同列数的行向量。 判断矩阵元素是否都大于5——all(all(A > 5)) 此处A>5返回一个逻辑矩阵,all(A>5)返回一个行向量,若该行向量中所有元素均大于0,则all(all(A>5))返回1,即说明该矩阵中所有元素均大于5.
any——判断是否存在非零数
对于向量a(行向量或列向量),如果向量中至少有一个元素是非零数,则any(a)返回1;若所有元素均为0,返回0。 对于矩阵A,any(A)是作用于列向量上的,若矩阵中某列至少含有一个非零元素,则返回1;如果全为0,则返回0。因此对于矩阵A,any(A)结果为与A具有同列数的行向量。
exist——判断变量或函数是否存在
在MATLAB程序设计中,有时需要知道变量是否已经被定义过,即是否存在于当前内存中,有时还需要详细了解变量的类型,这是exist就显得非常有用。 exist的参数必须为字符串标量或字符向量,即格式为:exist(' ') 其返回值a与参数’A’的关系为:
find——找出非零元素的位置
若需要对矩阵中符合某一特定条件的元素进行定位,比如将矩阵中为0的元素设为1,运用find和各种逻辑、关系运算可以实现绝大多数条件的元素定位。
注意:按列查找!
>> a = [0, 1, 4, 0, 5];
>> find(a)
ans =
2 3 5
>> a = [0, 1; 2, 3; 0, 4]
a =
0 1
2 3
0 4
>> find(a)
ans =
2
4
5
6
>> % 所显示的序号是按列从1开始进行数的
>>
>> b(:, :, 1) = [0, 0; 1, 2];
>> b(:, :, 2) = [3, 4; 5, 6];
>> b
b(:,:,1) =
0 0
1 2
b(:,:,2) =
3 4
5 6
>> find(b)
ans =
2
4
5
6
7
8
[i, j] = find(A) ——适用于矩阵,返回非零元素的行、列的序号。常用于稀疏矩阵中。
>> a = [1, 2, 3; 4, 5, 6; 7, 8, 9];
>> [i, j] = find(a)
i =
1
2
3
1
2
3
1
2
3
j =
1
1
1
2
2
2
3
3
3
[i, j, v] = find(A) ——v中存放非零元素的值,i、j与上面的相同
>> a = [1, 2, 3; 4, 5, 6; 7, 8, 9];
>> [i, j, v] = find(a)
i =
1
2
3
1
2
3
1
2
3
j =
1
1
1
2
2
2
3
3
3
v =
1
4
7
2
5
8
3
6
9
矩阵替换:a(find(a == 3)) = b(find(a == 3))
>> a = [1, 1, 1; 2, 2, 2; 3, 3, 3];
>> b = [9, 9, 9; 8, 8, 8; 7, 7, 7];
>> a
a =
1 1 1
2 2 2
3 3 3
>> b
b =
9 9 9
8 8 8
7 7 7
>> a(find(a == 2)) = b(find(a == 2));
>> a
a =
1 1 1
8 8 8
3 3 3
删除元素:a(find(5)) = []
>> a = [1, 2, 3; 4, 5, 6; 7, 8, 9]
a =
1 2 3
4 5 6
7 8 9
>> a(find(a == 5)) = [];
>> a
a =
1 4 7 2 8 3 6 9
>> whos
Name Size Bytes Class Attributes
a 1x8 64 double
删除矩阵中的某一行——赋值为[ ]
>> a = [1, 2, 3; 4, 5, 6; 7, 8, 9]
a =
1 2 3
4 5 6
7 8 9
>> a(2, :) = [];
>> a
a =
1 2 3
7 8 9
isfinite——判断矩阵元素是否为有限值
若是有限值,则相应位置返回1, 否则返回0
isinf——判断矩阵元素是否为无限值
若是无限值,则相应位置返回1, 否则返回0 注意:NaN、+Inf、-Inf等都被视为无限值。
NaN称为不确定值,通常由
0
0
、
I
n
f
+
I
n
f
、
I
n
f
I
n
f
\frac{0}{0}、Inf +Inf、\frac{Inf}{Inf}
00?、Inf+Inf、InfInf?及
N
a
N
NaN
NaN与其它任何数进行运算得到. 复数除以0会得到
N
a
N
NaN
NaN.
I
n
f
Inf
Inf称为无穷大数,可以由任意非零实数除以0得到.
isinfinite和isinf函数返回的都是与参数规模相同的矩阵。
>> a = [1, 2, 3; 4, 5, 6; 7, 8, 9];
>> isfinite(a)
ans =
3×3 logical 数组
1 1 1
1 1 1
1 1 1
isempty——判断矩阵是否为空矩阵
矩阵为空则返回1,否则返回0.
注意区分:空矩阵、零矩阵、矩阵不存在 空矩阵:矩阵存在,但矩阵中没有元素 零矩阵:矩阵中所有元素均为0 矩阵不存在:当前工作空间中没有定义该矩阵变量
isequal——判断几个对象是否相同
>> a = [1, 2, 3; 4, 5, 6; 7, 8, 9];
>> b = [1, 2, 3; 4, 5, 6; 7, 8, 9];
>> c = [1, 2, 3; 4, 5, 6; 7, 8, 9];
>> isequal(a, b, c)
ans =
logical
1
isnumeric——判断矩阵元素是否为数据
如果矩阵是数据矩阵,如稀疏矩阵、双精度矩阵、复数矩阵等,则返回1;反之,如果是字符串、结构体矩阵等,则返回0.
issparse——判断矩阵是否为稀疏矩阵
ischar——判断是否为字符串
islogical——判断矩阵是否为逻辑类型
isfield——判断是否为某个结构体矩阵的域
isstruct——判断是否为结构体类型
ishandle——判断是否为图像句柄
|