ceil |
округление аргумента в сторону |
round |
округление аргумента до ближайшего целого значения |
mod |
остаток от деления |
rem |
―знаковый‖ остаток от деления |
sign |
знак аргумента |
1.6. Ввод и преобразование матричных переменных
Поскольку MATLAB – матрично-ориентированная система, то необходимо отметить, как она выполняет основные операции над векторами и матрицами. Прежде всего необходимо отметить, что вектор рассматривается как вырожденная в одну строку или один столбец матрица. Обычная переменная – это матрица размером 1 1.
Например, если задано Х = 1, то это значит, что Х есть вектор с единственным элементом, имеющим значение 1. Если надо задать вектор из трех элементов, то их значения надо перечислить в квадратных скобках, разделяя пробелами:
N = [1 2 3].
Задание матрицы требует указания различных строк. Для различения строк используется знак ― ; ‖ (точка с запятой):
M = [1 2 3; 4 5 6; 7 8 9].
|
Матрицу можно ввести и следующим образом: |
|
F = [1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9]. |
Возможен ввод элементов матриц и векторов в виде арифметических выражений, содержащих любые доступные системе функции.
Для указания отдельного элемента вектора или матрицы используются выражения вида V(i) или M(i, j).
Матрицы |
можно |
расширять, используя матрицы малых размеров как |
элементы матрицы больших размеров: |
||
R = [10 11 12]; |
|
|
Y = [F; R] |
|
|
Y = |
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
Для добавления новой страницы того же размера можно воспользоваться следующей командой:
» Y(:,:,2)=[14 15 16;17 18 19;20 21 22;23 24 25]
Y(:,:,1) = |
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
Y(:,:,2) = |
|
|
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
Для удаления строк, столбцов или вообще размерности массива необходимо присвоить выбранному элементу значение пустого вектора [ ]. Например, для удаления первой страницы трехмерного массива Y можно воспользоваться командой
»Y(:,:,1)=[]
Y=
14 15 16
17 18 19
20 21 22
23 24 25
Возможно задание векторов и матриц с комплексными переменными.
Помимо поэлементного ввода векторов и матриц возможна генерация векторов и матриц специального типа. Например, вектор с целочисленными элементами можно задать в виде:
X = 1: 5;.
Знак двоеточие указывает, что элементы вектора будут принимать значения 1, 2, 3, 4, 5.
Можно задать вектор с другим, в том числе и нецелочисленным шагом приращения:
X = 0 : 0.25 : 2;.
Начальное, шаг и конечное значение элементов можно задавать с помощью арифметических выражений.
При работе с матрицами и векторами можно использовать двоеточие для выделения определенной последовательности элементов и создания новых векторов или матриц:
А = [1 2 3; 4 5 6];
B = A(:)
B =
1
2
|
3 |
|
|
|
|
|
|
4 |
|
|
|
|
|
|
5 |
|
|
|
|
|
|
6 |
|
|
|
|
|
A(:) = 10 : 15 |
|
|
|
|
||
A = |
|
|
|
|
|
|
10 |
12 |
14 |
|
|
|
|
11 |
13 |
15 |
|
|
|
|
|
В этих примерах создан новый вектор В и изменена матрица А. |
|||||
|
Следующие примеры иллюстрируют операции вырезки из матрицы: |
|||||
А =[1 2 3 4 5; 6 7 8 9 10; 11 12 13 14 15; 16 17 18 19 20] |
||||||
A = |
|
|
|
|
|
|
|
|
1 |
2 |
3 |
4 |
5 |
|
|
6 |
7 |
8 |
9 |
10 |
|
|
11 |
12 |
13 |
14 |
15 |
|
|
16 |
17 |
18 |
19 |
20 |
A (1 : 3, 3) |
|
|
|
|
||
ans = |
|
|
|
|
|
|
|
3 |
|
|
|
|
|
|
8 |
|
|
|
|
|
|
13 |
|
|
|
|
|
A(2 : 4, 2 : 5) |
|
|
|
|
||
ans = |
|
|
|
|
|
|
|
|
7 |
8 |
9 |
10 |
|
|
|
12 |
13 |
14 |
15 |
|
|
|
17 |
18 |
19 |
20 |
|
Транспонирование вектора означает, что строка элементов становится столбцом:
V = [1 2 3] V =
1 2 3
V‘ ans =
1
2
3
Для создания многомерных массивов удобно использовать следующие функции:
ones (n1, n2, … , nn) создание массива с единичными элементами; zeros (n1, n2, … , nn) создание массива с нулевыми элементами;
Хорошим примером на применение матричных операций является решение системы линейных уравнений. Пусть требуется решить систему
уравнений: |
|
|
|
|
X |
+ |
2Y |
= |
11 |
2X |
+ |
3Y |
= |
18 |
Введем матрицу коэффициентов А и вектор правой части системы |
||||
уравнений В: |
|
|
|
|
А = [1 2; 2 |
3] |
|
|
|
ans = |
|
|
|
|
12
23
B = [11; 18] ans =
11
18
A\B ans =
3
4.
1.7. Управление последовательностью выполнения операторов
Существует 4 основных оператора управления последовательностью исполнения инструкций:
оператор условия if в сочетании с операторами else и elseif выполняет группу инструкций в соответствии с некоторыми логическими условиями;
оператор переключения switch в сочетании с операторами case и otherwise выполняет различные группы инструкций в зависимости от значения некоторого логического условия;
оператор условия while выполняет группу инструкций неопределенное число раз в соответствии с некоторым логическим условием завершения;
оператор цикла for выполняет группу инструкции фиксированное число раз.
Все операторы управления включают оператор end, чтобы указать конец блока, в котором действует этот оператор управления.
if …else … elseif … end |
|
|
Оператор условия |
|
|||
|
|
|
|
|
|
|
|
Синтаксис: |
|
|
|
|
|
||
if |
логическое |
|
if |
логическое |
if |
логическое |
|
выражение |
|
выражение |
выражение |
|
|
||
инструкции |
|
инструкции |
инструкции |
|
|
||
end |
|
|
else |
|
elseif |
логическое |
|
|
|
|
|
|
выражение |
||
|
|
|
инструкции |
инструкции |
|
|
|
|
|
|
end |
|
else |
|
|
|
|
|
|
|
инструкции |
|
|
|
|
|
|
|
end |
|
|
Оператор условия if ... end вычисляет некоторое логическое выражение и выполняет соответствующую группу инструкций в зависимости от значения этого выражения. Если логическое выражение истинно, то MATLAB выполнит все инструкции между if и end, а затем продолжит выполнение программы в строке после end. Если условие ложно, то MATLAB пропустит все утверждения между if и end и продолжит выполнение в строке после end.
Если логическое условие включает переменную, не являющуюся скаляром, то утверждение будет истинным, если все элементы отличны от нуля.
Операторы if ... else ... end и if ... elseif ... end создают дополнительные ветвления внутри тела оператора if:
оператор else не содержит логического условия. Инструкции, связанные с ним, выполняются, если предшествующий оператор if (и, возможно, elseif) ложен;
оператор elseif содержит логическое условие, которое вычисляется, если предшествующий оператор if (и, возможно, elseif) ложен. Инструкции, связанные с оператором elseif, выполняются, если соответствующее логическое условие истинно.
Оператор elseif может многократно использоваться внутри оператора условия if.
switch … case … otherwise .. end |
Оператор переключения |
Синтаксис:
switch <выражение> case <значение1>
инструкции % выполняются когда <выражение> = <значение1> case <значение2>
инструкции % выполняются когда <выражение> = <значение2>