21.1 Создание и обработка диагональных/перестановочных матриц
Диагональная матрица определяется как матрица, у которой все элементы вне главной диагонали равны нулю; то есть D(i,j) == 0 если i != j. Чаще всего рассматриваются квадратные диагональные матрицы; однако это определение также применимо к неквадратным матрицам, которые обычно называют прямоугольными диагональными матрицами.
Перестановочная матрица определяется как квадратная матрица, в каждой строке и каждом столбце которой есть ровно один элемент, равный единице; все остальные элементы равны нулю. То есть существует перестановка (вектор) p такая, что P(i,j) == 1 если j == p(i) и 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"настройка изменяется локально для этой функции и всех вызываемых ею подпрограмм. Исходная настройка восстанавливается при выходе из функции.См. также: 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
© 1996–2026 The Octave Project Developers
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://docs.octave.org/v9.4.0/Basic-Usage.html