4.1矩阵

用“八度”定义一个值矩阵很容易。矩阵的大小是自动确定的,因此没有必要对尺寸进行解释。表达式

a = [1, 2; 3, 4]

矩阵中的结果


        /      \
        | 1  2 |
  a  =  |      |
        | 3  4 |
        \      /

矩阵的元素可以是任意表达式,前提是在组合各个部分时,维度都是有意义的。例如,给定上述矩阵,表达式

[ a, a ]

生成矩阵

ans =

  1  2  1  2
  3  4  3  4

但是表达式

[ a, 1 ]

返回错误

error: number of rows must match (1 != 2) near line 13, column 6

(当然,假设这里的表达式是作为第13行的第一个内容输入的)。

在定义矩阵表达式的方括号内,Octavelooks查看周围的上下文,以确定是否应将空格和换行符转换为元素分隔符和行分隔符,或者意味着忽略,因此

a = [ 1 2
      3 4 ]

将起作用。然而,一些可能的混乱来源仍然存在。例如,在表达式中

[ 1 - 1 ]

这里的-被视为二进制运算符,结果为标量0,但在表达式中

[ 1 -1 ]

这里的-被视为一元运算符,结果是向量[ 1, -1 ]。同样,表达式

[ sin (pi) ]

将被解析为

[ sin, (pi) ]

并且将导致错误,因为sin函数将在没有参数的情况下停止。要解决此问题,必须省略sin和左括号,或将表达式括在一组括号中:

[ (sin (pi)) ]

单引号字符(,用作anspose运算符和用于分隔字符串)也可能导致混淆。鉴于a = 1,表达式

[ 1 a' ]

导致将单引号字符视为anspose运算符,结果为向量[ 1, 1 ],但是表情

[ 1 a ' ]

生成错误消息

parse error:

  syntax error

>>> [ 1 a ' ]
              ^

因为不这样做会在解析有效表达式时造成麻烦

[ a 'foo' ]

为了清楚起见,最好总是使用逗号和分号来分隔矩阵元素和行。

编译Octave时,矩阵中元素的最大数量是固定的。可以使用该函数查询允许的数量sizemax请注意,其他因素,如机器上可用的内存量,可能会将矩阵的最大大小限制为较小的值。

 
: max_numel = sizemax ()

返回数组大小所允许的最大值。

如果使用64位索引编译Octave,则结果属于类int64,否则属于类int32。最大数组大小略小于相关类允许的最大值,如所返回intmax.

详见: intmax.

广告

当您输入一个矩阵或值为amatrix的变量的名称时,Octave会通过打印具有整齐对齐的行和列的矩阵来做出响应。如果矩阵的行太大,无法放在屏幕上,Octave会拆分矩阵,并在每个部分之前显示一个标题,以指示要显示的列。您可以使用以下变量来控制输出的格式。

 
: val = output_precision ()
: old_val = output_precision (new_val)
: old_val = output_precision (new_val, "local")

查询或设置内部变量,该变量指定要为数字输出显示的最小重要数字数。

请注意,无论为设置了什么值output_precision,则显示的精度位数对于双精度值限制为16位,对于单精度值则限制为7位。此外,对的调用format更改数字显示的函数也可以更改的设置值output_precision.

当从具有的函数内部调用时"local"参数,则该变量会为函数及其调用的任何子程序在本地进行更改。退出函数时将恢复原始变量值。

详见: format, fixed_point_format.

广告

通过使用的不同值,可以实现广泛的输出样式output_precision。使用可以困扰合理的组合format作用详见基本输入和输出.

 
: val = split_long_rows ()
: old_val = split_long_rows (new_val)
: old_val = split_long_rows (new_val, "local")

查询或设置内部变量,该变量控制在显示到终端窗口时是否可以拆分矩阵的行。

如果行被拆分,Octave将以一系列较小的部分显示矩阵,每个部分都可以在终端宽度的限制范围内,并且每组行都有标签,这样您就可以很容易地看到当前显示的列。例如

octave:13> rand (2,10)
ans =

 Columns 1 through 6:

  0.75883  0.93290  0.40064  0.43818  0.94958  0.16467
  0.75697  0.51942  0.40031  0.61784  0.92309  0.40201

 Columns 7 through 10:

  0.90174  0.11854  0.72313  0.73326
  0.44672  0.94303  0.56564  0.82150

当从具有的函数内部调用时"local"参数,则该变量会为函数及其调用的任何子程序在本地进行更改。退出函数时将恢复原始变量值。

详见: format.

广告

当数值变得非常大或非常小时,Octave自动切换到科学记数法。这保证了您将看到矩阵中每个值的几个重要数字。如果您希望看到以定点格式打印的矩阵中的所有值,可以使用函数fixed_point_format。但不建议这样做,因为这样可以返回易于解释的输出。

 
: val = fixed_point_format ()
: old_val = fixed_point_format (new_val)
: old_val = fixed_point_format (new_val, "local")

查询或设置内部变量,该变量控制Octave是否使用缩放格式打印矩阵值。

缩放格式在输出选择的第一行打印缩放因子,以确保最大的矩阵元素可以用单个前导数字写入。例如

fixed_point_format (true)
logspace (1, 7, 5)'
ans =

  1.0e+07  *

  0.00000
  0.00003
  0.00100
  0.03162
  1.00000

请注意,第一个值显示为0,而实际为1。因为存在混淆的可能性,您应该小心启用fixed_point_format.

当从具有的函数内部调用时"local"参数,则该变量会为函数及其调用的任何子程序在本地进行更改。退出函数时将恢复原始变量值。

详见: format, output_precision.

广告

版权所有 © 2024-2025 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号-2