- •Введение
- •Командное окно
- •Редактирование командной строки.
- •Длинные командные строки.
- •Вывод на печать командного окна.
- •Запуск внешних программ.
- •!Notepad
- •Команда format.
- •Выражения
- •Переменные.
- •Inf бесконечность
- •Операторы.
- •Функции.
- •Текстовые комментарии и символьные константы.
- •Операции с рабочей областью
- •Операции с файлами
- •Дневник командного окна
- •Операции с векторами и матрицами
- •Оператор «двоеточие».
- •Векторные индексы.
- •Удаление строк и столбцов.
- •Объединение матриц.
- •Транспонирование матриц.
- •Создание матриц с заданными свойствами.
- •Создание вектора равноотстоящих точек.
- •Создание вектора равноотстоящих точек в логарифмическом масштабе.
- •Разреженные матрицы.
- •Графика
- •Команда plot.
- •Графические объекты.
- •Окна изображений.
- •Добавление кривых на существующий график.
- •Управление осями.
- •Разбиение графического окна.
- •Подписи к осям и заголовки.
- •Графики в полярной системе координат.
- •Контурные графики и графики полей градиентов.
- •Создание массивов данных для трехмерной графики.
- •Построение графиков трехмерных поверхностей.
- •Программирование в системе matlab.
- •Основные типы данных.
- •Арифметические операторы и массивы.
- •Операторы отношения.
- •Логические операторы и функции.
- •Приоритет выполнения операторов.
- •Структура файлов сценариев.
- •Структура m-файлов функций.
- •Использование подфункций.
- •Операторная функция.
- •Передача данных через глобальные переменные.
- •Параметры функционального типа.
- •Функции с переменным числом аргументов.
- •Управление потоками.
- •If expression1
- •Диалоговый ввод.
- •Численные методы и обработка данных
- •Решение систем линейных алгебраических уравнений.
- •Решение систем линейных уравнений итерационными методами.
- •Обратная матрица и определитель.
- •Факторизация Холецкого.
- •Lu факторизация.
- •Qr факторизация.
- •Матричная экспонента.
- •Собственные значения и собственные вектора.
- •Нормальная форма Жордана.
- •Разложение Шура.
- •Сингулярное разложение.
- •Численное интегрирование.
- •Представление полиномов в среде matlab.
- •Умножение и деление многочленов.
- •Вычисление производной от многочлена.
- •Решение систем нелинейных уравнений.
- •Преобразование Фурье.
- •Xlabel('time (seconds)')
- •Решение обыкновенных дифференциальных уравнений.
- •Численное решение дифференциальных уравнений в частных производных.
- •Литература
Векторные индексы.
Из предыдущего примера следует, что в качестве индексов могут использоваться векторы. Если X и V векторы, то X(V) можно представить как вектор [X(V(1)), X(V(2)),…, X(V(n))]. Элементы вектора V должны быть целыми числами, чтобы их можно было использовать как индексы элементов массива X. Ошибка выдается в том случае, если индекс элемента меньше единицы или больше, чем size(X). Такой же принцип индексирования действителен и для матриц. Если вектор V имеет m компонент, а вектор W – n компонент, то M(V, W) будет матрицей размером mxn, сформированной из элементов матрицы M, индексы которой – элементы векторов V и W.
Векторные индексы можно использовать в операциях присваивания, например:
M(I, J) = B присваивает значения массива B элементам прямоугольной подматрицы M, которые определяются векторами I и J. Массив B должен иметь length(I) строк и length(J) столбцов. В следующем примере векторный индекс используется для перестановки 2 и 3 столбцов матрицы B, результат помещается в матрицу A:
A = B(:, [1 3 2 4]);
Удаление строк и столбцов.
Строки и столбцы матрицы можно удалить, используя пустые квадратные скобки [].
Создадим магическую матрицу размером 4x4 :
M=magic(4)
M =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
Затем удалим второй столбец:
M(:, 2) = []
M =
16 3 13
5 10 8
9 6 12
4 15 1
Используя один индекс вместо двух или векторный индекс, можно удалить из матрицы один или несколько выборочных элементов соответственно. При этом матрица преобразуется в вектор–строку:
M(2:2:10) = []
M =
16 9 3 6 13 12 1
Объединение матриц.
Объединение матриц – это процесс соединения нескольких матриц в одну большую. Фактически, исходная матрица создается объединением ее отдельных элементов. Оператор объединения – это пара квадратных скобок. Так, [A, B] – горизонтальная конкатенация (объединение) матриц A и B, которые должны иметь одинаковое количество строк. Горизонтальная конкатенация может быть применена для любого числа матриц в пределах одних скобок: [A, B, C]. При вертикальной конкатенации матрицы в квадратных скобках разделяются точкой с запятой: [A; B; C]. Горизонтальная и вертикальная конкатенации могут использоваться одновременно.
Приведем пример:
M=[1 2; 3 4]
M =
1 2
3 4
B=[M M+4; M+6 M+2]
B =
1 2 5 6
3 4 7 8
7 8 3 4
9 10 5 6
Транспонирование матриц.
Матрицы можно транспонировать с помощью оператора ‘ (апостроф), например A’ – транспонированная матрица A. Для комплексных матриц транспонирование дополняется комплексным сопряжением. Строки транспонированной матрицы соответствуют столбцам исходной матрицы.
Создание матриц с заданными свойствами.
Для создания единичной матрицы служит функция eye:
eye(n) – возвращает единичную матрицу размером nxn;
eye(m, n) – возвращает матрицу размером mxn с единицами на главной диагонали;
eye(size(A)) – возвращает единичную матрицу того же размера, что и A.
Пример использования функции eye:
M = eye(4, 5)
M =
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 1 0
Для создания матриц, все элементы которых – единицы, используется функция ones:
ones(n) – возвращает матрицу размером nxn, все элементы которых – единицы;
ones(m, n) – возвращает матрицу размером mxn, состоящую из единиц;
ones(d1, d2, d3,…) – возвращает массив из единиц с размером d1xd2xd3,…;
ones(size(A)) – возвращает массив единиц такой же размерности, что и A.
Пример:
M = ones(3, 4)
M =
1 1 1 1
1 1 1 1
1 1 1 1
Создание нулевой матрицы обеспечивает функция zeros, аргументы которой точно такие же, как и у функции ones.
Создавать матрицы с заданными диагональными элементами позволяет функция diag:
X = diag(v,k) – для вектора v, состоящего из n компонент, возвращает квадратную матрицу X порядка n + abs(k) с элементами v на k-й диагонали, при k = 0 это главная диагональ, при k > 0 – одна из верхних диагоналей, при k < 0 – одна из нижних диагоналей. Остальные элементы матрицы – нули;
X = diag(v) – помещает вектор v на главную диагональ;
V = diag(X, k) – для матрицы X возвращает вектор-столбец, состоящий из элементов k-й диагонали матрицы X;
V = diag(X) – возвращает главную диагональ матрицы X.
Для создания матриц, состоящих из других матриц, служат следующие функции:
repmat(A, m, n) возвращает матрицу A, состоящую из mxn копий матрицы A;
repmat(A, n) возвращает матрицу A, состоящую из nxn копий матрицы A;
repmat(A, [m n p…]) возвращает многомерный массив, состоящий из копий матрицы A. Матрица A может быть многомерной;
repmat(a, m, n) возвращает матрицу размером mxn со значениями элементов, заданных скаляром a.
Пример:
A=[1 2; 3 4]
A =
1 2
3 4
repmat(A, 2, 3)
ans =
1 2 1 2 1 2
3 4 3 4 3 4
1 2 1 2 1 2
3 4 3 4 3 4
reshape(A, m, n) возвращает матрицу размером mxn, сформированную из A путем последовательной выборки по столбцам. Если число элементов A не равно mxn, то выдается сообщение об ошибке;
reshape(A, m, n, p,…) возвращает N-мерный массив с элементами из A, но имеющий размер mxnxp…равный prod(size(A));
reshape(A, v) возвращает N-мерный массив с элементами из A, но перестроенный к размеру, заданному вектором v.
Пример:
M=1:6
M =
1 2 3 4 5 6
A=reshape(M, 2, 3)
A =
1 3 5
2 4 6