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

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

38