Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 2 Mathlab 2012.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
788.99 Кб
Скачать

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

35