
- •Лабораторная работа №1. Введение в MATLAB
- •Краткая характеристика MATLAB
- •Описание интерфейса MATLAB
- •Работа с MATLAB в режиме командной строки
- •Объявление переменных
- •Удаление созданных переменных
- •Создание матриц и векторов
- •Поэлементные операции над матрицами
- •Основы построения графиков
- •Задания на лабораторную работу
- •Примечание к заданию
- •Варианты задания
- •Лабораторная работа №2. Программы в MATLAB
- •Скрипты
- •Рабочая область в MATLAB
- •Комментарии
- •Функции
- •Фактические и формальные параметры функции
- •Рабочая область функции
- •Скрипты и функции
- •Передача параметров по значению
- •Анонимные функции
- •Документирование функций
- •Отладка
- •Задание на лабораторную работу
- •Варианты заданий
- •Лабораторная работа №3. Условные выражения и циклы
- •Управление потоками в MATLAB
- •Оператор ветвления if/elseif/else
- •Оператор цикла for
- •Оператор цикла while
- •Проверка корректности входных переменных
- •Задания на лабораторную работу
- •Варианты задания
- •Лабораторная работа №4. Вектора и матрицы
- •Создание векторов и матриц в MATLAB.
- •Обращение к элементам матриц.
- •Заполнение матриц
- •Операции деления, умножения и возведения в степень.
- •Создание матриц специального вида
- •Объединение матриц
- •Удаление строк и столбцов
- •Задания на лабораторную работу
- •Лабораторная работа №5. Ввод-вывод
- •Организация ввод-вывод в MATLAB
- •Строки
- •Функция disp
- •Функция input
- •Функция fprintf
- •Организация диалога с пользователем и вывод таблицы с использованием форматированного вывод
- •Задания на лабораторную работу
- •Варианты задания
- •Лабораторная работа №6. Графические возможности в MATLAB
- •Основы графики в MATALB
- •Оформление графиков
- •Вывод нескольких графиков в текущее окно
- •Функция eval
- •Задания на лабораторную работу
- •Варианты задания

ans =
4 4
55
Однако существует способ лучше. Поскольку двоеточие само по себе ссылается на все элементы строки или столбца, то последнюю сумму можно вычислить так:
>> M(1, :) ans =
1 |
1 |
2 |
2 |
Кроме того (начиная с версии 5.0) на последнюю строку или столбец массива можно ссылаться с помощью ключевого слова «end»:
>> M(2:end, 1:2) ans =
22
3 3
44
Способ 3 Расположение элементов матрицы в памяти компьютера определяет еще один способ
обращения к ним. Матрица A размера m на n хранится в виде вектора длины m*n, в котором элементы матрицы расположены один за другим по столбцам:
[А(1,1) А(2,1) ... А(m,1) ... ... ... А(1,n) А(2,n) ... А(m,n)].
Для доступа к элементам матрицы можно использовать один индекс, задающий порядковый номер элемента матрицы в векторе.
Например, матрица W содержится в следующем векторе:
[W(1,1) W(2,1) W(1,2) W(2,2) W(1,3)W(2,3)].
Доступ к элементам матрицы осуществляется следующим образом:
>> W W =
2 |
4 |
6 |
-1 |
-3 |
-5 |
>>W(2) ans =
-1
>>W(5) ans =
6
Заполнение матриц
43

Если нужно присвоить элементу W(i, j) новое значение x, то следует использовать следующее выражение: W(i, j) = x. Пример:
>> W(2,2) = 0 W =
2 |
4 |
6 |
-1 |
0 |
-5 |
Тем же образом можно заполнять и подблоки матрицы. Проведем это на матрице M:
>> M M =
1 |
1 |
2 |
2 |
2 |
2 |
3 |
3 |
3 |
3 |
4 |
4 |
4 |
4 |
5 |
5 |
>> M(3:end, :) = 0 M =
1 |
1 |
2 |
2 |
2 |
2 |
3 |
3 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Операции деления, умножения и возведения в степень.
Наряду с операциями над отдельными элементами матриц и векторов система позволяет производить операции умножения, деления и возведения в степень сразу над всеми элементами, то есть над массивами. Для этого перед знаком операции ставится точка. Например, оператор * означает умножение для векторов или матриц, а оператор .* – поэлементное умножение всех элементов массива.
Так, если M – матрица, то M.*2 даст матрицу, все элементы которой умножены на скаляр – число 2. Впрочем, для умножения матрицы на скаляр оба выражения – M*2 и M.*2
– оказываются эквивалентными. Это правило распространяется на операцию деления - ./, и операцию возведения в степень .^.
Примеры:
>> A = [ 1 2; -1 -2] A =
12
-1 -2
>> A.*2 |
|
ans = |
4 |
2 |
|
-2 |
-4 |
44

>> B = [ 3 2; 2 3] B =
32
23
>>A.*B
ans =
34
-2 -6
>> A.^B ans =
14
1-8
Транспонирование матриц в MATLAB осуществляется оператором «’».Этот оператор так же может записываться «.’», при этом оба выражения эквивалентны. Пример:
>> A = [ 1 2 3 4] A =
1 |
2 |
3 |
4 |
>> A' ans =
1
2
3
4
>> A'' |
|
|
|
ans = |
2 |
3 |
4 |
1 |
Создание матриц специального вида
Заполнение прямоугольной матрицы нулями производится встроенной функцией zeros, аргументами которой являются число строк и столбцов матрицы. Матрица, состоящая из единиц, образуется в результате вызова функции ones. Если вызывать функцию zeros (или ones) с одним аргументом n, то она создаст массив размером n на n. Это правило распространяется так же на ones.
Пример:
>> A = zeros(2) A =
00
00
45

>> B = ones(2,3) B =
1 |
1 |
1 |
1 |
1 |
1 |
Для создания единичной матрицы используется функция eye:
|
|
|
|
>> E = eye(4) |
|
|
|
E = |
0 |
0 |
0 |
1 |
|||
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
Функция eye с двумя аргументами создает прямоугольную матрицу, у которой на главной диагонали стоят единицы, а остальные элементы равны нулю:
|
|
|
|
|
|
>> E = eye(3,6) |
|
|
|
|
|
E = |
0 |
0 |
0 |
0 |
0 |
1 |
|||||
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
Есть возможность заполнения матриц случайными элементами. Результатом функции rand является матрица чисел, распределенных случайным образом между нулем и единицей, а функции randn — матрица чисел, распределенных по нормальному закону:
|
|
|
|
>> R = rand(4) |
|
|
|
R = |
0.6324 |
0.9575 |
0.9572 |
0.8147 |
|||
0.9058 |
0.0975 |
0.9649 |
0.4854 |
0.1270 |
0.2785 |
0.1576 |
0.8003 |
0.9134 |
0.5469 |
0.9706 |
0.1419 |
>> Rn = randn(3,4) |
|
|
|
Rn = |
1.4172 |
0.7172 |
1.0347 |
-0.1241 |
|||
1.4897 |
0.6715 |
1.6302 |
0.7269 |
1.4090 |
-1.2075 |
0.4889 |
-0.3034 |
Функция diag служит и для выделения диагонали матрицы в вектор, например:
|
|
|
|
>> D = [ 1 2 3 4] |
|
|
|
D = |
2 |
3 |
4 |
1 |
|||
>> D = diag(D) |
|
|
|
D = |
0 |
0 |
0 |
1 |
|||
0 |
2 |
0 |
0 |
0 |
0 |
3 |
0 |
0 |
0 |
0 |
4 |
46