A:判断是否为空,采用ifnil;如ifnil(a);若为空,返回1;否则返回0;
判断是否为NAN,采用isnan;如isnan(a);若为nan,返回1,;否则返回0;
判断是否为INF,采用IsInfinite;如IsInfinite(a);若为INF或-INF,则返回1;否则返回0;
如果数组A中存在空值,将其全部替换为0,参考:A::=ifnil(mcell)?0:mcell;
或使用MFind(A,ifnil(mcell),nil,0);//这种方式最为高效
如果只想对数组A 的某一列的NAN值替换为0,参考 A[:,1]::=isnan(mcell)?0:mcell; //将数组A的第二列中的NAN值替换为0。
如果A是一维数组,则可用:A[Mfind(isnan(A))]:=0;
若是二维数组,则可用:MFind(A,isnan(mcell),nil,0);
其中,MFind的效率比::高。
当被判断的数组中包含有不存在的值时,应该用双层for循环对该类元素进行替换,比如下面范例:
r:=array();
r[0,'e']:=3;
r[1,'f']:=23;
{解析:r数组中,只给指定的两个元素赋值,而其它值比如r[1,'e'],r[0,'f']是不存在的,没有被分配过内存,所以在矩阵循环中,不会对它进行遍历,所以必须用下列这类方法解决。}
rs:=mrows(r,1);//行下标
rc:=mcols(r,1);//列下标
for i:=0 to length(rs)-1 do
for j:=0 to length(rc)-1 do
if ifnil(r[rs[i],rc[j]]) then r[rs[i],rc[j]]:='-';
return r;