21.1 创建和操作对角/置换矩阵

对角矩阵的定义是主对角线以外的元素为零;即 D(i,j) == 0(如果 i != j)。通常考虑的是方阵;然而,该定义同样适用于非方阵,在这种情况下,我们通常称之为矩形对角矩阵。

置换矩阵的定义是每行和每列中只有一个元素等于1的方阵;所有其他元素都为零。也就是说,存在一个置换(向量)p,使得如果 j == p(i),则 P(i,j) == 1,否则 P(i,j) == 0

Octave 对实数和复数的矩形对角矩阵以及置换矩阵提供了特殊处理。它们被存储为特殊对象,使用高效的存储和算法,有助于用 Octave 语言编写可读且高效的矩阵代数表达式。可以通过使用函数 optimize_diagonal_matrixoptimize_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" 选项调用时,该设置会在函数及其调用的任何子程序内本地更改。退出函数时将恢复原始设置。

另请参阅: optimize_rangeoptimize_permutation_matrix

 
val = optimize_permutation_matrix ()
old_val = optimize_permutation_matrix (new_val)
old_val = optimize_permutation_matrix (new_val, "local")

查询或设置是否使用特殊的节省空间的格式来存储置换矩阵。

默认值为 true。如果此选项设置为 false,Octave 将把置换矩阵存储为完整矩阵。

当从函数内部使用 "local" 选项调用时,该设置会在函数及其调用的任何子程序内本地更改。退出函数时将恢复原始设置。

另请参阅: optimize_rangeoptimize_diagonal_matrix

如以下代码所示,节省了大量空间。

x = diag (rand (10, 1));
xf = full (x);
sizeof (x)
⇒   80
sizeof (xf)
⇒   800

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

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