Матрицы GNU Octave
Материал из Xgu.ru
Автор: Владимир Кореньков
Правильная ссылка: http://xgu.ru/wiki/octave/matrix
Содержание |
В языках программирования массивами называют именованные наборы данных (чисел, символов и пр.). При этом всему набору присваивается одно имя, а доступ к отдельным его элементам осуществляется по целочисленному индексу - номеру элемента. Массивы делят на одномерные, двумерные, ..., многомерные.
С точки зрения обычного пользователя, если для доступа к элементам массива используется единственный индекс, то такой массив является одномерным (в терминах GNU Octave он называется вектором), два индекса - двухмерным (иначе матрицей), больше двух индексов - многомерным.
[править] Создание массивов
[править] Векторы
Поэлементный ввод:
<имя массива> = [ <элемент 1> <элемент 2> ... <элемент N> ]
Сокращенный ввод (для элементов, распределенных в виде прогрессии):
<имя массива> = <начальное значение> :[ <приращение>] : <конечное значение>
Первый способ используется в тех случаях, когда весь перечень элементов заранее известен, либо формируется динамически во время выполнения программы. Второй способ - в основном, для создания счетчиков циклов, шкал при построении графиков и т.п.
Внимание! В массивах не следует смешивать разные типы данных (например, строчные и числовые). Для приведения к одному типу предназначены соответствующие функции. |
Пример 1. Создание векторов
> # непосредственное заполнение массива
> v = [ 1 5 17 3 ]
v =
>
- 1 5 17 3
> # ввод диапазона значений (с шагом по молчанию 1)
> i = 1 : 5
i =
>
- 1 2 3 4 5
> # ввод диапазона значений (с шагом 0.5)
> i = 1 : 0.5 : 5
i =
- 1 1.5 2 2.5 3 3.5 4 4.5 5
Пример 2. Динамическое заполнение векторов
> # создаем пустой массив (можно задать начальные условия, например a=[5])
> a = [];
> # значение i должно быть только целочисленным, поэтому задание приращения не допускается (по умолчанию, <приращение>=1)
> for i = 1 : 5
> # в конец вектора v дописываем случайное число
> v = [v rand];
> endfor
> # вывод значений
> v
v =
- 0.27349 0.96562 0.74204 0.20856 0.70811
В массивах используются два типа разделителей: запятая "," - для разделения отдельных элементов в пределах одной строки и точка с запятой ";" - для разделения на строки. Используя эти два типа разделителей можно создавать как векторы-строки, так и векторы-столбцы:
Пример 3. Столбцы и строки
> # вектор-строка:
> v = [ 1, 2, 3 ] # аналогичный результат получм, если набрать v = [ 1 2 3 ]
v =
> # вектор-столбец:
- 1 2 3
> v = [ 1; 2; 3]
v =
- 1
- 2
- 3
[править] Матрицы
Синтаксис:
<имя массива> =
- [
- <элемент 1-1>, <элемент 1-2>, ..., <элемент 1-N>;
- <элемент 2-1>, <элемент 2-2>, ..., <элемент 2-N>;
- ...
- <элемент M-1>, <элемент M-2>, ..., <элемент M-N>;
- ]
Здесь троеточия "..." обозначают пропущенные диапазоны элементов
Пример 4. Заполнение матрицы
> m = [ 1, 2, 3;
> 4, 5, 6;
> 7, 8, 9]
> m =
- 1 2 3
- 4 5 6
- 7 8 9
Как указывалось выше, элементами массива могут служить другие массивы:
Пример 5.
> m1 = [ 1, 2, 3];
> m2 = [ 4, 5, 6];
> m3 = [ 7, 8, 9];
> m = [ m1; m2; m3 ]; # результат аналогичен примеру №4
> # или
> n1 = [ 1; 4; 7 ];
> n2 = [ 2; 5; 8 ];
> n3 = [ 3; 6; 9 ];
> m = [ n1, n2, n3 ]; # результат аналогичен примеру №4
[править] Доступ к элементам массива
Для доступа к элементам массивов с целью чтения/изменения отдельных значений служат, соответственно, конструкции вида:
<имя переменной> = <имя массива> ( <индекс 1>, <индекс 2>, ... )
<имя массива> ( <индекс 1>, <индекс 2>, ... ) = <значение>
Для одновременного доступа - символ :
[править] Многомерные массивы
[править] Функции для работы с массивами
Сложение/вычитание | |
> A+B > A-B | массивы А и В должны иметь одинаковый размер |
Операции с числами | |
> с+A > с-А > с*А > с/А | каждый элемент массива А складывается (вычитается, умножается, делится) с числом с |
Скалярное умножение | |
> A*B | число строк одного массива должно совпадать с числом столбцов второго (при умножении вектора-строки А на вектор-столбец В получим число) |
Векторное умножение | |
> cross(A,B) | |
Поэлементные действия | |
> А.+В > А.-В > А.*В > А./В | каждый элемент массива А складывается (вычитается, умножается, делится) с соответствующим элементом массива В |
Транспонирование | |
> A' | |
Поворот матрицы на 90 градусов "против часовой стрелки" | |
> rot90(A,n) | создает копию матрицы А, повернутой на 90 градусов n раз (если n отрицательное - поворот в обратную сторону) |
Определитель | |
> det(A) | матрица должна быть квадратной |
GNU Octave Инсталляция |
Синтаксис языка |
Командная строка
|
---|