数值常量可以是标量、向量或矩阵,并且可以包含复数值。
数值常量的最简单形式——标量,是一个单独的数字。请注意,默认情况下,数值在 Octave 中以 IEEE 754 双精度(binary64)浮点格式表示(复数常量存储为一对 binary64 值)。然而,也可以按照整数数据类型中描述的方式表示真正的整数。
如果数值常量是实整数,则可以用十进制、十六进制或二进制表示法来表示。然而,一个重要的区别是:十进制常量将以 binary64 值存储,而使用十六进制或二进制表示法则会产生一个真正的整数,其存储类型恰好足够容纳指定的数值。十六进制表示法以0x或0X开头,二进制表示法以0b或0B开头,否则默认为十进制表示法。因此,0b不是十六进制数,实际上它根本不是一个有效的数字。
为了提高可读性,可以使用下划线分隔符_对数字进行分组,该分隔符会被 Octave 解释器忽略。以下是一些实整数值常量(都表示相同的值)的示例:
42 # 十进制表示法,binary64 0x2A # 十六进制表示法 0b101010 # 二进制表示法 0b10_1010 # 下划线表示法 round (42.1) # 也是 binary64
在十进制表示法中,数值常量可以用十进制小数表示,甚至可以用科学记数法(指数记数法)表示。请注意,这对于十六进制或二进制表示法是不可能的。同样,在以下示例中,所有数值常量都表示相同的值:
.105 1.05e-1 .00105e+2
与大多数编程语言不同,复数数值常量表示为实部和虚部的和。虚部由一个实数值常量后紧跟一个复数值指示符(i、j、I 或 J,表示sqrt (-1))来表示。数值常量和复数值指示符之间不允许有空格。所有复数值都存储为一对 binary64 值,使用十六进制或二进制表示法并不会产生真正的整数。以下是一些表示相同值的复数数值常量的示例:
3 + 42i 3 + 42j 3 + 42I 3 + 42J 3.0 + 42.0i 3.0 + 0x2Ai 3.0 + 0b10_1010i 0.3e1 + 420e-1i
z = complex (x) ¶z = complex (re, im) ¶根据实参返回一个复数值。
使用1个实参x时,返回复数结果x + 0i。
使用2个实参时,返回复数结果re + imi。complex通常比a + b*i这样的表达式更方便。例如:
complex ([1, 2], [3, 4]) ⇒ [ 1 + 3i 2 + 4i ]
当虚部为零时,Octave 会自动将复数类型"收缩"为实数类型。解释器在每次有机会时都会执行这种收缩,以节省内存并模拟 MATLAB 的行为。例如,如果一个变量最初具有复数值4 + 2i,然后从中减去2i,那么它就会变成实数类型4,而不是复数类型4 + 0i。使用表达式iscomplex (4+2i - 2i)测试结果类型是否为复数,将返回 false。
要确保即使虚部为零,值也保持为复数类型,请使用complex (4, 0)而不是4 + 0i。但即使这样,除非其虚部真正变为非零,否则解释器仍将在对其进行下一次修改(例如向其加1)时将类型收缩为实数。
版权所有 © 2024-2026 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-4