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

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

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

Octave提供了实数和复数矩形对角化矩阵以及置换矩阵的特殊处理。它们被存储为特殊对象,使用高效的存储和算法,有助于用Octave语言编写可读和高效的矩阵代数表达式。可以通过使用函数禁用特殊治疗优化对角矩阵优化术语矩阵.

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

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

默认值为true。如果此参数设置为false,Octave将把对角矩阵存储为满秩矩阵。

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

详见: optimize_range, optimize_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_range, optimize_diagonal_matrix.

广告

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

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

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

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