Материал: MATLAB1

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

14

1. Вводные сведения по применению системы Matlab

Взаимодействие пользователя с системой Matlab аналогично традиционным оконным приложениям офисной направленности, функционирующим в операционной среде Windows. Отметим, что в Matlab предусмотрены специализированные возможности, связанные с организацией и выполнением действий, основанных на достаточно разноплановом математическом аппарате. Изначально система Matlab возникла как матричная лаборатория (MATrix LABoratory), ориентированная на «узкие» задачи математического сообщества для облегчения задания и выполнения математических действий при работе с матрицами. Первая версия появилась в конце 70-х годов и использовалась в Университете Нью-Мехико и Стэнфордском университете для преподавания курсов теории матриц, линейной алгебры и численного анализа.

Однако достаточно быстро произошла переориентация на более широкий круг потенциальных пользователей, не являющихся профессиональными математиками и программистами. Matlab превратился в многофункциональную инструментальную среду проектирования разных режимов обработки данных и представления получаемых результатов. Нынешний Matlab – это высокоэффективный язык инженерных и научных вычислений, ориентированный на работу с массивами данных [1], [2]. Для обеспечения удобства пользователей Matlab имеет определенные отличия по организации интерфейсных функций, которые помогают разрабатывать различные схемы решения задач. При этом полученные решения могут быть визуализированы различными средствами, а также подвергнуты последующей интерактивной модернизации с целью придания более наглядной формы. К существенным свойствам интерфейсных возможностей Matlab следует отнести следующие:

  1. многооконный интерфейс, обеспечивающий: а) традиционную математическую форму записи данных (на основе матричного представления) и расчетных формул средствами собственного языка, б) средства отслеживания текущего состояния данных и истории выполняемых преобразований, в) специализированный текстовый редактор m-файлов для формирования последовательности команд обработки, г) инструменты для визуального проектирования схем размещения, передачи и обработки данных, а также устройств, с ними взаимодействующих (фиксирующих, преобразующих, отображающих), д) отдельные графические окна, в которые осуществляется вывод подготовленных визуальных форм представления данных;

  2. преобладающий командный режим задания инструкций по формированию и обработке данных в окне команд (Command Window), причем их исполнение осуществляется в режиме интерпретации с немедленной выдачей результатов, размещаемых после команды в математической форме записи или в отдельном окне при их визуальном представлении;

  3. формируемые на основе текстовых команд графические изображения (окно Figure) могут далее быть подвергнуты покомпонентной модернизации с помощью развитой системы инструментальных панелей настройки или прямыми манипуляциями с изображением в целом или его фрагментами.

1.1. Особенности управления памятью

Память в Matlab выделяется динамически не только под новые данные – матрицы (переменные), но и под каждый новый элемент такой матрицы, т. е. размеры матрицы изменяются автоматически в зависимости от производимых действий. Обычно пользователь Matlab не указывает системе количество ячеек памяти, которое необходимо выделить под его данные (элементы матрицы). По умолчанию им приписывается класс памяти double (вещественные значения двойной точности), но имеется возможность указать другие варианты выделения памяти. Существуют диапазоны представления числовых значений. Система отслеживает несоответствие размерностей данных, участвующих в качестве операндов в определенных командах (выражениях), вплоть до отказа от их выполнения. Формат вывода числовых значений определяется конкретным хранящимся в памяти значением, которое может отображаться как целое, вещественное или комплексное число.

Д оступ к значению осуществляется через приписываемое соответствующей области памяти имя. При использовании в последующих командах ранее уже встречавшегося имени происходит «замещение» старых данных новыми, что может исказить ход проводимых преобразований данных. В Matlab одинаковые имена, начинающиеся со строчной и с прописной букв, воспринимаются как разные. Поэтому рекомендуется четко следить за назначаемыми именами. Для просмотра известных системе переменных необходимо активизировать окно «Workspace» («каталог рабочих областей»), выбрав пункт «Workspace» в подменю «View». Для переменных по их имени (см. рисунок) указывается размерность матрицы (Size) и объем занимаемой памяти (Bytes).

1.2. Общие рекомендации по выполнению заданий практикума

При выполнении лабораторных работ для удобства фиксации проводимых действий и получаемых результатов необходимо придерживаться следующих требований по технологическому использованию рабочего места (компьютера) и подготовке материалов для отчетной документации [3]:

  1. Для индивидуализации собственного рабочего пространства пользователю необходимо создать иерархическую систему папок: а) папку с фамилией (номером студенческого билета) студента, б) в ней – набор папок с идентификацией очередной лабораторной работы (например, labwork1, labwork2, …), куда следует заносить только относящиеся к ней материалы. По умолчанию текущей папкой (окно Current Directory) пользователя, хранящей используемые и создаваемые файлы, является папка системы Matlab с именем «work», – в ней создать указанную иерархию папок. Это можно сделать стандартными средствами операционной системы или непосредственно в Matlab с помощью команды «mkdir» создания папки (например, mkdir Stud17, mkdir labwork1). При работе в Matlab пользователь должен настроиться на соответствующую папку, для чего необходимо воспользоваться командой «cd» смены папки при проходе по дереву папок: cd Stud17 – перейти из текущей папки во вложенную (спуск на уровень), cd … – выйти из текущей папки «наверх» (подъем на уровень).

  2. Сформировать протокол выполненных команд и полученных в текстовом виде результатов. Команда diary обеспечивает копирование в файл текстовой информации, вводимой и выводимой в окне команд: diary('имя файла') – задать имя файла, в который осуществляется запись, diary off блокирует запись в файл, diary on – ее возобновляет.

  3. Получаемые графические изображения следует сохранять отдельно как рисунки, которые должны быть включены в отчетную документацию.

Данные, с которыми работает пользователь, можно сохранить, удалить или загрузить. Для сохранения данных на диске надо записать команду save:

»save data_a a

которая позволяет сохранить в файле с именем «data_a.mat» переменную a.

Для сохранения всех переменных нужно задать следующую команду:

»save data_all

Чтобы удалить переменную (очистить память), следует записать:

»clear a

Использование только clear позволяет удалить все переменные сразу.

Чтобы загрузить сохраненные ранее на диске переменные, используется команда load с указанием имени файла, например «data_a.mat», в котором были сохранены переменные:

»load data_a

После этого все сохраненные ранее данные будут доступны.

2. Матрицы

2.1. Основные понятия

Напомним, матрицей в математике называется двумерный массив элементов (чисел, функций или иных величин, над которыми можно производить алгебраические операции), расположенных в виде прямоугольной таблицы. Если таблица имеет m строк и n столбцов, то говорят о (m  n)-матрице. Обозначения:

или .

Одномерный массив называют вектором. Матрица, состоящая из одной строки, называется вектором-строкой, из одного столбца – вектором-столбцом. Если m = n, то матрица квадратная, а число n – ее порядок. Квадратная матрица, у которой лишь диагональные элементы отличны от нуля, называется диагональной и обозначается . Если все , получают скалярную матрицу. При a = 1 матрица единичная и обозначается I или E. Матрица, все элементы которой равны нулю, называется нулевой.

Числа и переменные в Matlab рассматриваются как матрицы размера 1  1 (векторизация). Векторизация обеспечивает упрощение записи операций, производимых одновременно над всеми элементами векторов и матриц, повышение скорости их выполнения. Matlab допускает задание и использование и многомерных массивов.

Для задания матрицы используется команда присваивания. Например, следующими командами формируются матрицы: а) »a = [1 2 1; 4 5 4] – матрица размера 2  3 с соответствующими элементами; б) »b = [7 8 9] – вектор-строка; в) »c = [2; 2; 3.5] – вектор-столбец; г) »d = zeros(3, 5) – матрица размера 3  5 с нулевыми элементами. Результаты* приведены в табл. 2.1.

Таблица 2.1

Матрица

размера 2  3

Вектор-строка

Вектор-столбец

Матрица размера 3  5

с нулевыми элементами

»a = [1 2 1; 4 5 4]

a =

1 2 1

4 5 4

»b = [7 8 9]

b =

7 8 9

»c = [2; 2; 3.5]

c =

2.0000

2.0000

3.5000

»d = zeros(3, 5)

d =

0 0 0 0 0

0 0 0 0 0

0 0 0 0 0

Две записи для вектора – b = [l 2 3 4] и b = [1,2,3,4] – идентичны, векторы задаются списком своих элементов, разделяемых пробелами или запятыми.

Массив формируется прямым (построчным) перечислением его элементов (например, a = [1 3 5 7; 4 5 6 7] – 2 строки и 4 столбца, b = [1; 3; 5; 7] – столбец с 4 элементами) или заданием диапазона значений в формате [нач.знач. : шаг : кон.знач.] с указанным или единичным (по умолчанию) шагом – [1:2:7], [4:7], [ [1:2:7]; [4:7] ].

Доступ к элементам или блокам элементов массива производится указанием индексов или массива индексов:

a(2, k) – элемент второй строки и k-го столбца;

a(:, k) – k-й столбец;

a(1:3; 1:4) – подматрица из первых 3 строк и 4 столбцов матрицы;

c(:, :, 12) – 12-я страница трехмерного массива.

Массивы хранятся в памяти по столбцам, поэтому с многомерным массивом можно работать как с одномерным, например: A(:) – вектор-столбец из всех элементов массива А; A(13:17) – столбец из элементов с номерами от 13 до 17. Итак:

  • при задании массива значения заключать в квадратные скобки;

  • элементы в строке массива разделять пробелами или запятыми;

  • при указании списка индексов использовать круглые скобки и разделительные запятые (указание индекса символом «:» соответствует заданию всех значений по соответствующему индексу).

При работе с массивами можно пользоваться списками: означает «от i до k с шагом j», – то же с шагом 1, например, или d = 0 : 8.

В Matlab предусмотрен ряд особых функций для задания векторов и матриц, например: а) нулей – zeros(n), zeros(m, n), zeros(m, n, p,…), zeros(size(A)) (соответственно массивы одномерный, двумерный, многомерный и соразмерный с массивом A); б) единиц – ones(n), ones(m, n), ones (size(A)) и др.

Функция magic(n) задает так называемый магический квадрат – матрицу размера , у которой сумма всех столбцов, всех строк и даже диагоналей равна одному и тому же числу. Пример представлен в табл. 2.2.

Таблица 2.2

Магический квадрат 3  3

Сумма по столбцам и строкам

Сумма по диагоналям

»b = magic(3)

b =

8 1 6

3 5 7

4 9 2

»sum(b)

ans =

15 15 15

»sum(b')

ans =

15 15 15

»sum(diag(b))

ans =

15

»sum(diag(b'))

ans =

15

Функция rand генерирует массивы случайных чисел, значения элементов которых равномерно распределены в промежутке (0, 1): rand(n, m) – возвращает матрицу размера n  m; rand(n) – квадратную матрицу:

»rand(3) % матрица размера 33

ans =

0.9501 0.4860 0.4565

0.2311 0.8913 0.0185

0.6068 0.7621 0.8214

Можно выполнять операции не только с действительными, но и с комплексными числами. Мнимая единица представляется символами i, j*. В табл. 2.3 приведена последовательность действий с комплексными значениями.

Таблица 2.3

Ввод числа a

Ввод числа b

Произведение двух

комплексных чисел

Экспонента от

произведения

»a = 5 + 2i

a =

5.0000 + 2.0000i

»b = 3 – 3i

b =

3.0000 – 3.0000i

»с = a*b

с =

21.0000 – 9.0000i

»exp(с)

ans =

–1.2016e+009 – 5.4351e+008i

Источник: https://studfile.net/preview/16488556/