4.1 Матрицы
Легко определить матрицу значений в Octave. Размер матрицы определяется автоматически, поэтому нет необходимости явно указывать размеры. Выражение
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 строке, конечно).
Внутри квадратных скобок, которые ограничивают выражение матрицы, Octave анализирует окружающий контекст, чтобы определить, следует ли рассматривать пробелы и символы новой строки как разделители элементов и строк или просто игнорировать их, поэтому выражение
a = [ 1 2
3 4 ] будет работать. Однако некоторые возможные источники путаницы остаются. Например, в выражении
[ 1 - 1 ]
‘-’ обрабатывается как бинарный оператор, и результатом является скаляр 0, но в выражении
[ 1 -1 ]
‘-’ обрабатывается как унарный оператор, и результатом является вектор [ 1, -1 ]. Аналогично, выражение
[ sin (pi) ]
будет анализироваться как
[ sin, (pi) ]
и приведет к ошибке, поскольку функция sin будет вызвана без аргументов. Чтобы обойти это, необходимо опустить пробел между sin и открывающей скобкой или заключить выражение в скобки:
[ (sin (pi)) ]
Пробелы вокруг символа апострофа (‘'’, используемого как оператор транспонирования и для разграничения строковых литералов) также могут вызывать путаницу. Учитывая a = 1, выражение
[ 1 a' ]
приводит к тому, что символ апострофа обрабатывается как оператор транспонирования, и результатом является вектор [ 1, 1 ], но выражение
[ 1 a ' ]
выдает сообщение об ошибке
parse error:
syntax error
>>> [ 1 a ' ]
^ потому что если этого не сделать, возникнут проблемы при анализе допустимого выражения
[ a 'foo' ]
Для ясности, вероятно, лучше всегда использовать запятые и точки с запятой для разделения элементов матрицы и строк.
Максимальное количество элементов в матрице фиксируется при компиляции Octave. Допустимое количество можно запросить с помощью функции sizemax. Обратите внимание, что другие факторы, такие как количество доступной памяти на вашем компьютере, могут ограничить максимальный размер матриц чем-то меньшим.
- sizemax ()
-
Возвращает наибольшее значение, допустимое для размера массива.
Если Octave скомпилирован с 64-разрядной индексацией, результат имеет тип int64, в противном случае — тип int32. Максимальный размер массива немного меньше максимального значения, допустимого для соответствующего типа, как сообщается функцией
intmax.См. также: intmax.
Когда вы вводите матрицу или имя переменной, значением которой является матрица, Octave отвечает, печатая матрицу с ровно выровненными строками и столбцами. Если строки матрицы слишком длинные, чтобы поместиться на экране, Octave разбивает матрицу и отображает заголовок перед каждым разделом, чтобы указать, какие столбцы отображаются. Вы можете использовать следующие переменные для управления форматом вывода.
- val = output_precision ()
- old_val = output_precision (new_val)
- output_precision (new_val, "local")
-
Запрашивает или устанавливает внутреннюю переменную, которая определяет минимальное количество значащих цифр для отображения числовых результатов.
Обратите внимание, что независимо от значения, установленного для
output_precision, количество отображаемых цифр точности ограничено 16 для значений с двойной точностью и 7 для значений с одинарной точностью.При вызове изнутри функции с параметром
"local", переменная изменяется локально для функции и всех вызываемых подпрограмм. Исходное значение переменной восстанавливается при выходе из функции.См. также: format, fixed_point_format.
Можно добиться широкого спектра стилей вывода, используя различные значения output_precision. Разумные комбинации могут быть установлены с помощью функции format. См. Основные ввод и вывод.
- val = split_long_rows ()
- old_val = split_long_rows (new_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)
- 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.
| • Пустые матрицы: |
© 1996–2022 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/v5.2.0/Matrices.html