3.12 “非数”和“空”数组
3.12.1 非数NaN
【 * 例 3.12.1 -1 】非数的产生和性质演示。
(1)非数的产生
a=0/0,b=0*log(0),c=inf-inf
Warning: Divide by zero.
a =
NaN
Warning: Log of zero.
b =
NaN
c =
NaN
(2)非数的传递性
0*a,sin(a)
ans =
NaN
ans =
NaN
(3)非数的不可比较性
a==nan % 该指令想计算“ a 等于非数吗?”。但不能给出正确的判断结果。
ans =
0
(4)非数不能进行关系运算
a~=nan % 该指令“ a 不是非数吗?”,也不可能给出正确的判断结果。
a==b % 两个非数不存在“等”与“不等”的概念
b>c % 两个非数不能比较大小
ans =
1
ans =
0
ans =
0
(5)非数的属性判断
class(a) % 数据类型归属
isnan(a) % 该指令是唯一能正确判断非数的指令。
ans =
double
ans =
1
【 * 例 3.12.1 -2 】非数元素的寻访
% 创建带非数的二维数组
rand('state',0) % 将随机发生器置 0 。目的是使读者便于把自己运算结果与本书对照。
R=rand(2,5);R(1,5)=NaN;R(2,3)=NaN
R =
0.9501 0.6068 0.8913 0.4565 NaN
0.2311 0.4860 NaN 0.0185 0.4447
isnan(R) % 对数组元素是否非数进行判断
ans =
0 0 0 0 1
0 0 1 0 0
% 找出非数元素的位置标识
Linear_index=find(isnan(R)) % 非数的“单下标”标识
[r_index,c_index]=ind2sub(size(R),Linear_index); % 转换成“全下标”标识
disp('r_index c_index'),disp([r_index c_index])
Linear_index =
6
9
r_index c_index
2 3
5
3.12.2 “空”数组
【 * 例 3.12.2 -1 】关于“空”数组的算例。
(1)创建“空”数组的几种方法
a=[],b=ones(2,0),c=zeros(2,0),d=eye(2,0),f=rand(2,3,0,4)
a =
[]
b =
Empty matrix: 2-by-0
c =
Empty matrix: 2-by-0
d =
Empty matrix: 2-by-0
f =
Empty array: 2-by-3-by-0-by-4
(2)“空”数组的属性
class(a) % “空”的数据类别
isnumeric(a) % 是数值数组类吗
isempty(a) % 唯一可正确判断数组是否“空”的指令
ans =
double
ans =
1
ans =
1
which a % 变量 a 是什么
ndims(a) % 数组 a 的维数
size(a) %a 数组的大小
a is a variable.
ans =
2
ans =
0 0
(3)“空”数组不具备一般的传递性
b_c1=b.*c % 两个空阵的点乘
[1] [2] 下一页