对角矩阵的定义是主对角线以外的元素为零;即 D(i,j) == 0(如果 i != j)。通常考虑的是方阵;然而,该定义同样适用于非方阵,在这种情况下,我们通常称之为矩形对角矩阵。
置换矩阵的定义是每行和每列中只有一个元素等于1的方阵;所有其他元素都为零。也就是说,存在一个置换(向量)p,使得如果 j == p(i),则 P(i,j) == 1,否则 P(i,j) == 0。
Octave 对实数和复数的矩形对角矩阵以及置换矩阵提供了特殊处理。它们被存储为特殊对象,使用高效的存储和算法,有助于用 Octave 语言编写可读且高效的矩阵代数表达式。可以通过使用函数 optimize_diagonal_matrix 和 optimize_permutation_matrix 来禁用此特殊处理。
val = optimize_diagonal_matrix () ¶old_val = optimize_diagonal_matrix (new_val) ¶old_val = optimize_diagonal_matrix (new_val, "local") ¶查询或设置是否使用特殊的节省空间的格式来存储对角矩阵。
默认值为 true。如果此选项设置为 false,Octave 将把对角矩阵存储为完整矩阵。
当从函数内部使用 "local" 选项调用时,该设置会在函数及其调用的任何子程序内本地更改。退出函数时将恢复原始设置。
val = optimize_permutation_matrix () ¶old_val = optimize_permutation_matrix (new_val) ¶old_val = optimize_permutation_matrix (new_val, "local") ¶查询或设置是否使用特殊的节省空间的格式来存储置换矩阵。
默认值为 true。如果此选项设置为 false,Octave 将把置换矩阵存储为完整矩阵。
当从函数内部使用 "local" 选项调用时,该设置会在函数及其调用的任何子程序内本地更改。退出函数时将恢复原始设置。
如以下代码所示,节省了大量空间。
x = diag (rand (10, 1)); xf = full (x); sizeof (x) ⇒ 80 sizeof (xf) ⇒ 800
版权所有 © 2024-2026 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-2