
- •Раздел 1 Основные понятия среды matlab
- •1. Начало работы в среде matlab
- •1.1. Характеристика среды matlab
- •1.2. Общие положения и правила работы в среде matlab
- •1.3. Работа в командном окне
- •1.4. Правила и особенности ввода математических выражений
- •1.5. Сохранение содержимого рабочего окна
- •2 Системные переменные и типы данных
- •2.1 Системные переменные
- •2.2. Типы данных. Описание основных типов
- •2.3. Комплексные числа
- •2.4. Символьные переменные
- •2.5. Массивы
- •2.5.1 Задание массивов
- •2.5.2 Доступ к элементам массивов
- •2.5.3 Функции обработки массивов
- •2.6 Тип данных структура (struct)
- •2.6.1 Задание структур
- •2.6.2 Функции обработки структур
- •2.7 Тип данных ячейка (сell)
- •2.8 Функции определения типов
- •2.9 Функции для работы со значениями даты и времени
- •2.10 Функции преобразования типов
- •3. Основные операции и математические функции matlab
- •3.1 Основные арифметические операции
- •3.2 Основные элементарные функции
- •Help имя_функции,
- •3.3 Операции отношения и логические операции
- •4 Операторы среды matlab
- •4.1 Условный оператор if
- •4.2 Условный оператор switch
- •4.3 Реализация циклических процессов
- •4.3.1 Оператор цикла while
- •4.3.2 Оператор цикла for
- •Pause – останавливает выполнение программы до момента нажатия любой клавиши на клавиатуре; pause(n) – останавливает выполнение программы на n секунд;
- •Примеры.
- •Как и в случае сценариев, к подпрограмме функции можно обратиться по имени, более того функции могут быть компонентами математических выражений и операндов, а также параметрами других функций.
- •5.4 Создание подпрограмм с переменным списком входных и выходных параметров
- •5.5 Локальные и глобальные переменные
- •5.6 Созданий функций пользователя и указателей на функции. Функции как аргументы функций.
- •5.8 Сообщения об ошибках
- •6 Ввод данных и работа с файлами
- •6.1 Использование рабочей области Workspace
- •6.2 Чтение и запись неформатированных файлов
- •6. 3 Работа с текстовыми и бинарными файлами
- •6.3.1 Команды открытия и закрытия файлов
- •6.3.2 Команды чтения и записи fread и fwrite
- •6.4 Операции над форматированными файлами
2.5. Массивы
2.5.1 Задание массивов
Массивы – это сложный тип данных, объединяющий под одним именем совокупность однотипных элементов. В среде MATLAB можно работать с массивами различной размерности. Как уже было отмечено ранее, любая переменная автоматически определяется как матрица, потому специальных ключевых слов для описания массивов не предусмотрено. Для того, что бы среда определила данное как массив, его значения заключаются в квадратные скобки: [ ]. Значения вектора разделяются пробелами или запятыми.
Синтаксис.
имя _переменной = [список_значений] – задание массива. Значения в списке разделяются пробелом. Для задания матриц, строки разделяются символом “ ; ”.
Примеры. Задание векторов.
>> a=[1 2 3 4]; – задание вектора-строки а, состоящего из четырех значений: 1, 2, 3, 4.
>> a=[a 5]; – добавление к вектору а еще одного элемента – 5.
>> A=['Name' 'Age'] – формирование вектора символьных значений.
Примеры. Задание матриц.
>> B=[1 2 3; 4 5 6]; – ввод данных для матрицы 2х3.
>> A=[1 2 3;4 5 6;7 8 9]; – ввод данных для матрицы 3х3.
>> А=[1; 4; 7] – выделение первого столбца матрицы А.
>> А1=[1 2 3;4 5 6;7 8 9];
>> A2=[10;11;12];
>> A3=[14 15;16 17;18 19];
>> A=[A1,A2,A3] – создание массива слиянием других массивов
Результат выполнения:
A= |
1 |
2 |
3 |
10 |
14 |
15 |
|
4 |
5 |
6 |
11 |
16 |
17 |
|
7 |
8 |
9 |
12 |
18 |
19 |
В различных задачах часто возникает необходимость создания сложного массива путем объединения уже существующих, причем объединение может осуществляться различными способами. Объединить массивы можно с помощью команды cat – конкатенация.
Синтаксис:
C = cat(dim, A1, A2, A3, A4, ...), – объединение массивов A1, A2,…в результирующий массив C, где параметр dim определяет правило объединения. Параметр dim принимает целочисленные значения. Использование различных значений параметра dim приведено в примерах ниже.
Пример. Объединение двух векторов B и C.
>> B=[1 2 3]; C=[4 5 6]; % задание двух векторов
>> A=cat(1,B,C) % последовательное присоединение значений по направлению вниз
A = 1 2 3
4 5 6
>> A=cat(2,B,C) % последовательное присоединение значений по направлению вправо
Результат выполнения:
A = 1 2 3 4 5 6
Пример. Объединение двух матриц B и C.
>> B=[1 2;3 4];
>> C=[5 6;7 8];
>> A=cat(1,B,C)
Результат выполнения:
A = 1 2
3 4
5 6
7 8
>> A=cat(2,B,C)
Результат выполнения:
A = 1 2 5 6
3 4 7 8
>> A=cat(3,B,C) % марица А представляет собой 3-х мерную структуру.
Результат выполнения:
A(:,:,1) = 1 2
3 4
A(:,:,2) = 5 6
7 8
Задание значений массива в случае большой размерности, например, вектора из 100 элементов или матрицы размерности 50х50, перечислением элементов является сложным. В таких случаях используют специальные функции, позволяющие создавать массивы из простых элементов (таблица 1.6). Параметрами функций являются размерности массива.
Таблица 1.6. Функции формирования массивов
Функция |
Назначение |
zeros() |
формирование массива нулей |
ones() |
формирование массива единиц |
eye() |
формирование единичной матрицы |
rand() |
формирование массива элементов, распределенных по равномерному закону |
randn() |
формирование массива элементов, распределенных по нормальному закону |
cross() |
векторное произведение |
kron() |
формирование тензорного произведения |
linspace() |
формирование линейного массива равноотстоящих узлов |
logspace() |
формирование узлов логарифмичесокй сетки |
meshgrid() |
формирование узлов двумерной и трехмерной сеток |
: |
формирование векторов и подматриц (задание диапазона) |
Примеры.
a1 = zeros(1, 100); – создается вектор-строка, 100 элементов с нулевыми значениями.
a2 = zeros(100, 1); – создается вектор-столбец, 100 элементов с нулевыми значениями.
a3 = ones(1, 1000); – создается вектор-строка, 1000 элементов с единичными значениями.
a4 = ones(1000, 1); – создается вектор-столбец, 1000 элементов с единичными значениями.
a5 = rand(1000, 1); – создается вектор-столбец, 1000 элементов со случайными значениями.
В некоторых задачах используются специальные матрицы, функции, формирования которых приведены в таблице 1.7. Более детально специальные матрицы описаны в приложении 3.
Таблица 1.7. Функции формирования матриц специального вида
Функция |
Назначение |
compan() |
матрица характеристического многочлена |
hadamard() |
матрица Адамара (Hadamard matrix) |
hankel() |
матрица Ганкеля (Hankel matrix) |
hilb(), invhilb() |
матрица Гильберта (Hilbert matrix) |
magic() |
магический квадрат |
pascal() |
матрица Паскаля (Pascal matrix) |
rosser() |
матрица Рессера (Rosser matrix) |
toeplitz() |
матрица Теплица (Toeplitz matrix) |
vander() |
матрица Вандермонда (Vandermonde matrix) |
wilkinson() |
матрица Уилкинсона (Wilkinson matrix) |
Также в среде MATLAB можно задавать и обрабатывать массивы сложной структуры. Так цветные изображения (RGB) представляются сложными массивами, имеющими три индекса, например, Iso(n,m,k), где k – номер матрицы, представляющей основной цвет; n, m – соответственно номер строки и столбца в каждой из матриц. Так как среда MATLAB позволяет получать данные из различных внешних аппаратных устройств, то существует необходимость в существовании возможности определения структуры и типа лданных.
Определить структуру
массива можно с помощью команды whos
.
Синтаксис.
whos
список
переменных
.
Если список пуст, то определяются все
переменные текущей рабочей области.
Пример.
Задание вектора a,
состоящего
из трех элементов и матрицы b
размерности 2х2
и определение их структуры командой
whos
.
>> a=[1 2 3];
>> b=[1 2;3 4];
>> whos
Name Size Bytes Class Attributes
a 1x3 24 double
b 2x2 32 double