
Inv(a) %обратная матрица
diag(A) %главная диагональ матрицы
sum(A) %сумма по столбцам (sum(A,1))
sum(A,2) %сумма по строкам
sum(diag(A)) % след матрицы
trace(A) % след матрицы
S=sum(sum(A)) %сумма матрицы
prod(A,1) %произведение элементов массива в столбцах (по умолчанию prod(A))
prod(A,2) %произведение элементов массива в строках
sum(A') %сумма столбцов транспонированной матрицы
Сортировка
A=[1 -2 4;5 -6 7;-8 1 3]
b=[1 2 5 3 7 8 5 4 10]
disp('Сортировка элементов массива по возрастанию ') )%вывод комментария на экран disp(‘ ‘)
sort(b) %сортировка массива по возрастанию
sort(A) %сортировка по столбцам по возрастанию
sort(A,2) %сортировка по строкам по возрастанию
-sort(-A) %сортировка по столбцам по убыванию
-sort(-A,2) %сортировка по строкам по убыванию
%Возвращает отсортированный массив и массив индексов элементов в исходном массиве
[b2,INDEX]=sort(b)
size(A) %Размерность матрицы
length(b) %количество элементов в массиве (длина)
disp('максимальный элемент массива'
Функции max() min()
disp('максимальный элемент массива')
max(A) - %возвращает наибольший элемент, если А -вектор;
или возвращает вектор-строку, содержащую максимальные элементы каждого столбца, если А -матрица.
max(A,[],dim) %возвращает наибольший элемент по столбцам (dim=1)или по строкам (dim=2)
C2=max(A,[],1)
C3=max(A,[],2)
C4=max(max(A,[],2)) %возвращает наибольший элемент матрицы
[C,I]=max(A) %возвращает наибольшие элементы и вектор их
индексов
disp('минимальный элемент массива')
C1=min(A)
C2=min(A,[],1)
C3=min(A,[],2)
[C,I]=min(A)
d1=[1 2 5 4 3]
d2=[4 8 7 3 1]
C4=min(d1,d2) %сравнивает поэлементно векторы и возвращает меньший
% mean(A)- возвращает арифметическое среднее значение
%элементов массива, если А -вектор;
%или возвращает вектор-строку, содержащую средние значения
%элементов каждого столбца, если А -матрица.
A=[1 2 6 4 8;6 7 13 5 4;7 9 0 8 12;6 6 7 1 2]
mean(A)
%mean(A,dim)возвращает средние значения по столбцам (dim=1)
%или по строкам (dim=2)
mean(A,2)
%median(A), median(A,dim)- возвращает медиану
A=magic(6)
M1=median(A)
M2=median(A,2)
A=[ 1 9 3 7 4 5]
M1=mean(A)
M1 =
4.8333
Vpa(m1,3) % Вывод с точностью до 3 значащих цифр
ans =
4.83
M2=median(A)
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)
Операции отношения и логические операции
Над массивами можно выполнять
операции поэлементного отношения :
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