Основные теоретические сведения. По умолчанию все числовые переменные в MATLAB считаются матрицами, так что скалярная величина есть матрица первого порядка
По умолчанию все числовые переменные в MATLAB считаются матрицами, так что скалярная величина есть матрица первого порядка, а векторы являются матрицами, состоящими из одного столбца или одной строки. Матрицу можно ввести, задав ее элементы или считав данные из файла, а также в результате обращения к стандартной или написанной пользователем функции.
Матричные данные размещаются в памяти последовательно по столбцам. Элементы матрицы в пределах строки отделяются пробелами или запятыми. Непосредственное задание матрицы можно осуществить несколькими способами. Например, вектор-столбец, то есть матрица, вторая размерность которой равна единице, может быть присвоена переменной А вводом одной строки:
>> A=[7+4i; 4; 3.2] % Ввод вектора-столбца
A =
7.0000 + 4.0000i
4.0000
3.2000
или вводом нескольких строк
>> A = [ % ввод вектора по строкам
7+4i
3.2];
Векторы могут быть сформированы как диапазоны – при помощи двоеточий, разделяющих стартовое значение, шаг и предельное значение. Если величина шага отсутствует, то по умолчанию его значение равно единице.
В результате n:m:k будет сформирован вектор, последний элемент которого не больше k для положительного шага m, и не меньше – для отрицательного: [n, n+m,n+m+m,…]
Например:
>> a=1:2:5
a =
1 3 5
Задание диапазона используется также при организации цикла.
В таблице 2.1 представлен некоторый набор функций для создания матриц специального вида.
Таблица 2.1. Функции описания матриц
Функция | Описание |
eye(m,n) | Единичная матрица размерности m×n |
zeros(m,n) | Нулевая матрица размерности m×n |
ones(m,n) | Матрица, состоящая из одних единиц размерности m×n |
rand(m,n) | Возвращает матрицу случайных чисел равномерно распределенных в диапазоне от 0 до 1, размерность m×n |
randn(m, n) | Возвращает матрицу размерности m×n, состоящих из случайных чисел, имеющих гаусовское распределение |
tril(A),triu(A) | Выделение нижней треугольной и верхней треугольной частей матрицы A |
inv(A) | Нахождение обратной матрицы A |
det(A) | Нахождение определителя (детерминанта) квадратной матрицы A |
Обращение к элементу матрицы производится по правилу, – в круглых скобках после имени матрицы даются индексы, которые должны быть положительными целыми числами, указывающими номер строки и через запятую, номер столбца. Например, А(2,1) означает элемент из второй строки первого столбца матрицы А.
Для дальнейших примеров введем матрицу 2x2:
>> A=[1 2+5*i; 4.6 3]
A =
1.0000 2.0000 + 5.0000i
4.6000 3.0000
Чтобы изменить элемент матрицы, ему нужно присвоить новое значение:
>> A(2,2)=10 % Второй элемент второй строки
A =
1.0000 2.0000 + 5.0000i
4.6000 10.0000
Размер матрицы можно уточнить по команде size, а результат команды sizeможно использовать для организации новой матрицы.
Например, нулевая матрица того же порядка, что и матрица А, будет сформирована по команде
>> A2=zeros(size(A))
A2 =
0 0
0 0
С помощью двоеточия легко выделить часть матрицы. Например, вектор из первых двух элементов второго столбца матрицы A задаётся выражением:
>> A(1:2, 2)
ans =
2.0000 + 5.0000i
10.0000
Двоеточие само по себе означает строку или столбец целиком. Для удаления элемента вектора достаточно присвоить ему пустой массив – пару квадратных скобок []. Чтобы вычеркнуть одну или несколько строк (столбцов) матрицы нужно указать диапазон удаляемых строк (столбцов) для одной размерности и поставить двоеточие для другой размерности. Для нахождения длины вектора можно воспользоваться также командой length.
Набор арифметических операций в MATLAB для работы с матрицами состоит из стандартных операций сложения – вычитания, умножения – деления, операции возведения в степень и дополнены специальными матричными операциями (табл.2.2). Если операция применяется к матрицам, размеры которых не согласованы, то будет выведено сообщение об ошибке.
Для поэлементного выполнения операций умножения, деления и возведения в степень применяются комбинированные знаки (точка и знак операции). Например, если за матрицей стоит знак (^), то она возводится в степень, а комбинация (.^) означает возведение в степень каждого элемента матрицы. При умножении (сложении, вычитании, делении) матрицы на число соответствующая операция всегда производится поэлементно.
Таблица 2.2 Знаки операций
Символ | Назначение |
+,- | Символы плюс и минус обозначают знак числа или операцию сложения и вычитания матриц, причем матрицы должны быть одной размерности |
* | Знак умножения обозначает матричное умножение, для поэлементного умножения матрицы применяется комбинированный знак (.*) |
' | Апостроф обозначает операцию транспонирования (вместе с комплексным сопряжением), транспонирование без вычисления сопряжения обозначается при помощи комбинированного знака (.') |
/ | Левое деление |
\ | Правое деление |
^ | Оператор возведения в степень, для поэлементного возведения в степень применяется комбинированный знак (.^) |
Проиллюстрируем различие обычного и поэлементного умножений при помощи следующего примера.
Введём матрицу H размера 2х2 и матрицу D из единиц той же размерности:
>> H=[0 1; 2 3], D=ones(size(H))
H =
0 1
2 3
D =
1 1
1 1
Перемножим матрицы, используя обычное умножение:
>> H*D
ans =
1 1
5 5
Теперь применим поэлементную операцию:
>> H.*D
ans =
0 1
2 3
Система MATLAB имеет ряд функций, предназначенных для обработки данных, заданных в матричной или векторной форме (таблица 2.3).
Таблица 2.3 Функции для работы с матрицами
Функция | Описание |
size(A) | Возвращает массив, состоящий из числа строк и числа столбцов матрицы. |
sum(A) | Возвращает сумму всех элементов по столбцу |
mean(A) | Возвращает среднее значение столбца матрицы |
std(A) | Возвращает среднеквадратическое отклонение столбца матрицы |
min(A), max(A) | Возвращает минимум и максимум соответственно, по столбцу матрицы |
sort(A) | Сортирует столбец матрицы по возрастанию |
prod(A) | Вычисляет произведение всех элементов столбцов |
Символы и текстовые строки в MATLAB вводятся при помощи простых кавычек. Во внутреннем представлении символы даны целыми числами. Конвертировать массив символов в числовую матрицу позволяет команда double. Обратная операция совершается по команде char. Печатаемые символы из стандартного набора ASCII представлены числами от 32 до 255.
Приведем примеры для данных команд. Вначале введем строку:
>>s = 'Привет'
s =
Привет
Отметим, что для ввода русских букв следует выбрать в меню File/ Preferences/ Command Windows Font шрифт с русской кодировкой.
>>h = [v + ' от MATLAB']
v =
Привет от MATLAB
Тот же результат получится, если вместо переменной v использовать строковую переменную s.
Для перевода численных данных в строковые переменные имеется ряд команд преобразования. В таблице 2.4 приведены некоторые функции для этих и обратных операций, а полных список можно получить по команде help strfun.
Таблица 2.4 Функции работы со строковыми переменными
Функция | Действие |
num2str | Перевод числа в строку |
int2str | Перевод целого числа в строку |
mat2str | Преобразование матрицы в строку |
str2mat | Объединение строк в матрицу |
str2num | Преобразование строки в число |
strcat | Объединение строк |
Порядок выполнения
1. Ввод с клавиатуры векторов и матриц.
Ввести:
– произвольную вектор-строку (v), размерность 2;
– произвольный вектор-столбец (w), размерность 2;
– произвольную матрицу (m), размерности 2×2.
2. Генерация матриц специального вида.
Создать:
– матрицу с нулевыми элементами (m0), размерности 2×2;
– матрицу с единичными элементами(m1), размерности 2×2;
– матрицу с элементами, имеющими случайные значения(mr), размерности 2×2;
– матрицу с единичными диагональными элементами(me), размерности 2×2.
3. Вычисление матрицы M по формуле, представленной в таблице 2.5.
4. Изучение функций обработки данных:
– определение числа строк и столбцов матрицы M;
– определение максимального элемента матрицы M;
– определение минимального элемента матрицы M;
– суммирование элементов матрицы M;
– перемножение элементов матрицы M.
Таблица 2.5 Варианты заданий
№ варианта | Задание | № варианта | Задание |
M=v*w+m+mr*me | M=m*w+mr*v’ | ||
M=m+mr*me | M=m*mr+w*v | ||
M=(v/m)*(mr+me) | M=m+mr–100 | ||
M=w*v+mr*me | M=v’+w+mr*w | ||
M=m*mr+me | M=m+m1’*me’ | ||
M=m.*mr+100 | M=(v/m)*(mr+me) | ||
M=v*w+mr–m | M=v*mr+v*m1 | ||
M=m+mr*me–10 | M=m’+mr/100 | ||
M=m*w+mr*v' | M=10*v+w’*mr*m | ||
M=m’+mr*me | M=m’+mr*me |
Содержание отчета
1. Цель работы.
2. Описание ввода с клавиатуры векторов и матриц.
3. Описание команд генерации матриц специального вида.
4. Описание основных функций обработки данных.
Контрольные вопросы
1. Как осуществляется ввод вектора–строки?
2. Как осуществляется ввод вектора–столбца?
3. Как осуществляется ввод матрицы?
4. Для чего служит команды zeros, ones, rand, eye?
5. Как определяется число строк и столбцов матрицы?
6. Какие операции служат для определения минимального и максимального элемента матрицы?
Практическое занятие № 3