- •Матрицы
- •1. Формирование векторов и матриц
- •2. Действия со строками и столбцами
- •3. Арифметические операторы и функции matlab
- •1).Арифметические операторы и функции matlab
- •2). Встроенные функции
- •3).Функции обработки матриц
- •Inv(a) %обратная матрица
- •4).Функции max() и min().
- •Vpa(m1,3) % Вывод с точностью до 3 значащих цифр
- •5).Сортировка
- •6).Округление до целого
- •7).Тригонометрические функции
Vpa(m1,3) % Вывод с точностью до 3 значащих цифр
ans =
4.83
M3=std(A,1) %стандартное отклонение с усреднением 1/n
M4=std(A) %стандартное отклонение с усреднением 1/(n-1)
std(X) возвращает стандартное отклонение элементов массива,
если А -вектор
или стандартное отклонение элементов каждого столбца,
если А -матрица.
%Функция fliplr(A) переставляет столбцы матрицы
относительно вертикальной оси
F=[1,2,3;5,45,3]
fliplr(F)
%Функция flipud(A) переставляет строки матрицы
относительно горизонтальной оси
F1=[3,2,12;6,5,4]
flipud(F1)
F2=magic(5)
flipud(F2)
5).Сортировка
disp('Сортировка элементов массива по возрастанию ') )%вывод комментария на экран disp(‘ ‘)
sort(b)
sort(A) %сортировка по столбцам по возрастанию
sort(A,2) %сортировка по строкам по возрастанию
-sort(-A) %сортировка по столбцам по убыванию
-sort(-A,2) %сортировка по строкам по убыванию
%Возвращает отсортированный массив и массив индексов элементов в исходном массиве
[b2,INDEX]=sort(b)
6).Округление до целого
F=[2.123 -4.999 7.513 3.001]
fix(F) %Отсекает дробную часть без округления
round(F) %Округляет число до целого по всем правилам округления
floor(F) %Округляет до меньшего целого
ceil(F) %Округляет до большого целого
7).Тригонометрические функции
sin(F)
cos(F)
tan(pi/4)
cot(pi/4)
Операции отношения и логические операции
Над массивами можно выполнять
операции поэлементного отношения :
A < B , A <= B , A > B , A>= B (только для действительных частей),
A == B, A~=B (равно/не равно - для действительных и мнимых частей),
которые возвращают массив с единицами (истина) и нулями (ложь) той же размерности.
Примеры
>>A=magic(4)
A =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
>>B=[2 3 4 5;5 4 3 2;1 2 3 4;6 5 4 3]
B =
2 3 4 5
5 4 3 2
1 2 3 4
6 5 4 3
>>A<B
ans =
0 1 1 0
0 0 0 0
0 0 0 0
1 0 0 1
>>A==B
ans =
0 0 0 0
1 0 0 0
0 0 0 0
0 0 0 0
>>A>=B
ans =
1 0 0 1
1 1 1 1
1 1 1 1
0 1 1 0
>>A~=B
ans =
1 1 1 1
0 1 1 1
1 1 1 1
1 1 1 1
Логические операции
Аналогично реализуются и логические операции:
~A отрицание,
A & B конъюнкция (логическое умножение - И),
A|B дизъюнкция (логическое сложение - ИЛИ).
Примеры
>>A1=[0 2 3 13
5 0 10 8
9 7 0 12
4 14 15 0]
>>B=[2 3 4 5;5 4 3 2;1 2 3 4;6 5 4 3]
B =
2 3 4 5
5 4 3 2
1 2 3 4
6 5 4 3
>>~A1
ans =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
>>A1&B
ans =
0 1 1 1
1 0 1 1
1 1 0 1
1 1 1 0
>>A1|B
ans =
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
>>who
Your variables are:
A A1 B ans
>>whos
Name Size Bytes Class Attributes
A 4x4 128 double
A1 4x4 128 double
B 4x4 128 double
ans 4x4 16 logical
clc – очистка экрана
who – вывод имен активных переменных;
whos – просмотра содержимого рабочей среды.
clear – удаление всех переменных;
clear x – удаление переменной х;
help elfun – вывести список всех элементарных математических функций.
help specfun
help elmat – вывод более сложных математических и матричных функций.
help format Информация о форматах
В математических выражениях операторы имеют определенный приоритет исполнения. Например, в MATLAB приоритет логических операторов выше, чем арифметических, приоритет возведения в степень выше приоритетов умножения и деления, приоритет умножения и деления выше приоритета сложения и вычитания.
Для изменения приоритета операций в математических выражениях используются круглые скобки. Степень вложения скобок не ограничивается.
Точка в MatLab используется не только для ввода десятичных дробей, но и для указания того, что деление или умножение массивов одинакового размера должно быть выполнено поэлементно. К поэлементным относятся и операции с вектором и числом. Сложение вектора и числа не приводит к сообщению об ошибке. MatLab прибавляет число к каждому элементу вектора. То же самое справедливо и для вычитания:
» v = [4 6 8 10]; » s = v + 1.2 s = 5.2000 6.2000 9.2000 11.2000
» r = 1.2 - v r = -2.8000 -4.8000 -6.8000 -8.8000
» r1 = v - 1.2 r1 = 2.8000 4.8000 6.8000 8.8000
Умножать вектор на число можно как справа, так и слева:
» v = [4 6 8 10]; » p = v*2
р =. 8 12 16 20
» pi = 2*v pi = 8 12 16 20
Делить при помощи знака / можно вектор на число:
» р = v/2 p = 2 3 4 5
Попытка деления числа на вектор приводит к сообщению об ошибке:
» р = 2/v
??? Error using ==> / Matrix dimensions must agree.
Если требуется разделить число на каждый элемент вектора и записать результат в новый вектор, то следует использовать операцию ./
» w = [4 2 6]; » d = 12./w d = 3 6 2
Все вышеописанные операции применимы как к вектор-строкам, так и к вектор-столбцам..
Особенность MatLab представлять все данные в виде массивов является очень удобной. Пусть, например, требуется вычислить значение функции sin сразу для всех элементов вектора с (который хранится в массиве с) и записать результат в вектор d. Для получения вектора d достаточно использовать один оператор присваивания:
» d = sin(c)
Итак, встроенные в MatLab элементарные функции приспосабливаются к виду аргументов; если аргумент является массивом, то результат функции будет массивом того же размера, но с элементами, равными значению функции от соответствующих элементов исходного массива.
Из элементов массива можно формировать новые массивы.
Для помещения определенных элементов вектора в другой вектор в заданном порядке служит индексация при помощи вектора. Запись в массив w четвертого, второго и пятого элементов v производится следующим образом:
>> v = [1.3 3.6 7.4 8.2 0.9];
>> ind = [4 2 5];
>> w = v(ind)
w =
8.2000 3.6000 0.9000
MatLab предоставляет удобный способ обращения к блокам последовательно расположенных элементов вектор-столбца или вектор-строки. Для этого служит индексация при помощи знака двоеточия. Предположим, что в массиве w, соответствующем вектор-строке из семи элементов, требуется заменить нулями элементы со второго по шестой. Индексация при помощи двоеточия позволяет просто и наглядно решить поставленную задачу:
» w = [0.1 2.9 3.3 5.1 2.6 7.1 9.8]; » w(2:6) = 0; » w w = 0.1000 0 0 0 0 0 9.8000
Присваивание w(2:6) = 0 эквивалентно последовательности команд w(2) = 0; w(3)=0; w(4)=0; w(5)=0; w(6)=0. Индексация при помощи двоеточия оказывается удобной при выделении части из большого объема данных в новый массив:
» w - [0.1 2.9 3.3 5.1 2.6 7.1 9.8]; » wl = w(3:5) wl = 3.3000 5.1000 2.6000
Составьте массив w2, содержащий элементы w кроме четвертого. В этом случае удобно использовать двоеточие и сцепление строк:
» w2 = [w(l:3) w(5:7)] w2 =
0.1000 2.9000 3.3000 2.6000 7.1000 9.8000
