从于变量的类型可能在执行程序期间发生变化,因此可能需要在运行时进行类型检查。这样做还可以根据输入的类型更改函数的行为。举个例子,这个天真的实现防抱死制动系统
如果是实数,则返回输入的绝对值;如果是复数,则返回输出的长度。
函数a=abs(x)如果(isreal(x))a=符号(x).*x;elseif(iscomplex(x))a=sqrt(实数(x)^2+imag(x)^2.endifend函数
以下函数可用于确定变量的类型。
tf =
isnumeric (x)
¶如果返回truex是一个数字对象,即整数、实数或复数数组。
逻辑数组和字符数组不被视为数字数组。
详见: isiteger, isfloat, 以色列, iscomplex, ischar, 不合逻辑的, isstring, iscell, isstruct, isa.
tf =
isfloat (x)
¶如果返回truex是一个浮点数字对象。
double或single类的对象是浮点对象。
tf =
ismatrix (x)
¶如果返回truex是2-D数组。
矩阵是任何类型的数组,其中ndims(x2.
以及为此大小x)
退货[M,N]
具有非负M和N。
tf =
isvector (x)
¶如果返回truex是一个向量。
向量是任意类型的2-D数组,其中一个维度等于1(1xN或Nx1)。从于这个定义,1x1对象(标量)也是向量。
tf =
isrow (x)
¶如果返回truex是一个行向量。
行向量是任何类型的二维数组大小x)
退货[1,N]
具有非负N。
tf =
iscolumn (x)
¶如果返回truex是列向量。
列向量是任何类型的二维数组大小x)
退货[N,1]
具有非负N。
tf =
issquare (x)
¶如果返回truex是二维正方形数组。
方形数组是任何类型的二维数组大小x)
退货[N,N]
其中N是非负整数。
tf =
issymmetric (A)
¶tf =
issymmetric (A, tol)
¶tf =
issymmetric (A, "skew"
)
¶tf =
issymmetric (A, "skew"
, tol)
¶如果返回trueA是在从指定的公差内的对称或斜对称数字矩阵tol.
默认公差为零(使用更快的代码)。
可通过附加输入指定要检查的对称性类型非闪烁
(默认)用于规则对称或歪曲
放弃对称性。
背景:如果矩阵的转置等于原始矩阵,则矩阵是对称的:A== A.
.如果给定公差,则对称性从标准A- A.',Inf)/标准(A,Inf)<tol
.
如果矩阵的转置等于原始矩阵的负,则矩阵是斜对称的:A== -A.
。如果给出了环礁,则通过以下公式确定斜对称性:标准A+ A.',Inf)/标准(A,Inf)<tol
.
tf =
ishermitian (A)
¶tf =
ishermitian (A, tol)
¶tf =
ishermitian (A, "skew"
)
¶tf =
ishermitian (A, "skew"
, tol)
¶如果返回trueA是埃尔米特或斜埃尔米特数字矩阵,在从指定的公差内tol.
默认公差为零(使用更快的代码)。
可通过附加输入指定要检查的对称性类型非闪烁
(默认)对于常规Hermitian或歪曲
抛弃埃尔米特人。
背景:如果矩阵的复共轭转置等于原始矩阵,则矩阵是埃尔米特矩阵:A== A
。如果给定公差,则计算为标准A- A,Inf)/标准(A,Inf)<tol
.
如果矩阵轴的复共轭转置等于原始矩阵的负,则矩阵是斜埃尔米特矩阵:A== -A
。如果给定了环礁,则计算为标准A+ A,Inf)/标准(A,Inf)<tol
.
tf =
isdefinite (A)
¶tf =
isdefinite (A, tol)
¶如果返回trueA是在从指定的公差内的对称正定数字矩阵tol.
如果tol被省略,使用的公差100*eps*标准(A,“fro”)
.
背景:正定矩阵的特征值都大于零。半正定矩阵的特征值都大于或等于零。矩阵A如果以下两个条件适用于极小的公差,则很可能是正半定的tol.
非定长岩(A) ⇒ 0有限(A5.tol, tol) ⇒ 1.
tf =
isbanded (A, lower, upper)
¶如果返回trueA是一个数值矩阵,其条目限制在降低主对角线下方的对角线,以及上面的对角线在主对角线之上。
降低和上面的必须是非负整数。
tf =
isdiag (A)
¶如果返回trueA是对角线数字矩阵,其被定义为a2-D数组,其中主对角线上方和下方的所有元素都为零。
tf =
istriu (A)
¶如果返回trueA是一个上三角数字矩阵。
上三角矩阵只有在主对角线和上方才有非零项。
tf =
isprime (x)
¶返回一个逻辑数组,该数组为true,其中的元素为x是素数,在不是素数的地方是false。
素数通常被定义为大于1的正整数(例如,2,3,…),它只能被自身和1整除。Octave将此定义扩展为包括负整数和复数值。如果负整数的正整数是素数,那么它就是素数。这相当于isprime(abs(x))
.
如果类x)
是复数,则在高斯整数的域中测试素性(https://en.wikipedia.org/wiki/Gaussian_integer).一些非复整数在一般意义上是素数,但在高斯整数域中不是素数。例如5=(1+2i)*(1-2i)显示5不是素数,因为它有一个除自身和1之外的因子。在同一矩阵中同时测试复数和实数时要小心。
示例:
isprime(1:6)⇒ 0 1 1 0 1 0
isprime([i,2,3,5])⇒ 0 0 1 0
编程说明:isprime
适合所有人x在abs范围内(x)<2^64铸造输入大于燧石
到uint64
.
对于较大的输入,如果安装并加载了符号包,请使用“sym”:
isprime(sym('587453897092982525390450')+(0:4))⇒ 0 1 0 0 0
兼容性说明:MATLAB不扩展素数的定义,并且如果给定负数或复数输入,则会返回错误。
tf =
isuniform (v)
¶[tf, delta] =
isuniform (v)
¶如果实际向量为true,则返回truev是均匀间隔的并且是假的。
如果平均差为(希腊字母表的第4个字母)在所有元素之间是相同的,在的公差范围内4*eps(最大(腹肌(v)))
.
可选输出希腊字母表的第4个字母是元素之间的一致差异。如果向量不均匀,那么希腊字母表的第4个字母是NaN
. 希腊字母表的第4个字母与属于同一类v用于浮点输入,classdouble用于整数、逻辑和字符输入。
编程注意事项:对于空输入或标量输入的特殊情况,输出总是false。如果有任何元素NaN
那么输出为false。如果希腊字母表的第4个字母小于计算的相对公差,则为的绝对公差eps
使用。
如果您不想知道变量的属性,而是想知道定义了哪些变量,并收集有关工作空间本身的其他信息,详见变量的状态.
版权所有 © 2024 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号