1. Общие сведения о системе matlab



страница1/3
Дата17.02.2017
Размер0.73 Mb.
Просмотров629
Скачиваний1
  1   2   3

1. Общие сведения о системе MATLAB

По обилию функций и скорости вычислений MATLAB (MATrix LABoratory ЁC матричная лаборатория) превосходит большинство систем компьютерной математики и является бесспорным лидером в области численных расчетов и математического моделирования различных систем и устройств.

Система MATLAB ЁC это и операционная среда и язык программирования, на котором могут быть написаны программы для многократного использования. На этом языке уже написано множество программ для решения самых разнообразных задач во многих областях науки и техники. Коллекции родственных программ, предназначенных для решения задач из той или иной области науки (или техники), объединяются в специальную папку, которую называют пакетом прикладных программ (ППП). Существует большое число ППП, которое непрерывно пополняется. Непрерывно расширяется и содержание каждого отдельного ППП. Насчитывается около 40 ППП (MATLAB Application Toolboxes). В их числе nntool ЁC пакет по нейронным сетям и пакет SIMULINK ЁC предназначен для математического моделирования динамических систем, представленных своей функциональной блок-схемой;

Понятно, что ни один пакет не может охватить все многообразие проблем и задач, поэтому необходимо владение базовыми программными средствами системы MATLAB, как для решения конкретных задач, так и для понимания программ, входящих в ППП. Вместе с тем некоторые ППП оказались настолько интегрированными с системой MATLAB, что стали составной ее частью. Это относится к ППП Notebook (интеграция с текстовым процессором Word) и Simulink (моделирование динамических систем).

Система MATLAB использует командный режим работы. Имеются возможности компилирования, проблемно-ориентированного и визуального программирования.

Важным достоинством системы MATLAB является ее открытость и расширяемость. Большинство команд и функций данной системы оформлены в виде текстовых файлов (М-файлов) и файлов на языке С (С++). Пользователь может их модифицировать и создавать новые. MATLAB дает возможность писать самостоятельные программные модули на разных языках, однако штатными являются С++ и свой собственный М-язык

Имеется возможность объединения системы с пакетом символьной математики Maple, пакетом Excel и некоторыми другими.

Описанию системы автоматизации математических и научно-технических расчетов MATLAB посвящено достаточно большое число работ, однако, ни один из известных нам литературных источников не может считаться исчерпывающим. Так или иначе, пользователю приходится обращаться к справочной документации в процессе практической работы.

Система MATLAB поставляется с обширной документацией и развитой справочной системой, поэтому опытный пользователь может и без литературных источников освоить работу в данной системе. Определенным неудобством является только то, что документация и справочная система существуют пока только на английском языке.

В системе MATLAB имеется широкий спектр демонстрационных примеров, которые можно модифицировать и использовать в своих целях.

Таким образом, MATLAB - универсальная интегрированная система, предлагаемая ее разработчиками как язык программирования высокого уровня для технических вычислений. Этап компиляции полной программы отсутствует. Для выполнения программ необходимо находиться в среде MATLAB. Однако для программ на языке MATLAB созданы компиляторы, транслирующие программы на языке MATLAB в коды языков программирования C и C++. Это решает задачу создания исполняемых программ, изначально создаваемых в среде MATLAB.

Следует упомянуть, что в MATLAB класс array ЁC обобщенный класс объектов-массивов, является прародителем всех остальных встроенных классов. Матричная форма представления операций делает программирование в среде MATLAB очень лаконичным, что снижает трудоемкость работ и повышает надежность результатов.

Учитывая, что читатель имеет начальную компьютерную подготовку, мы будем описывать лишь те элементы меню, инструментария и конструкций языка, которые необходимы для выполнения предлагаемых действий. Так как интерфейс среды MATLAB является стандартным для программных продуктов, работающих под операционной системой Windows, то на его описании мы тоже специально останавливаться не будем.

Работа в среде MATLAB может осуществляться в двух режимах:

в командном режиме (режиме калькулятор или режиме непосредственных вычислений), т.е. вычисления производятся непосредственно после набора очередного оператора;

путем вызова программы, записанной на языке MATLAB.

В обоих режимах пользователю доступны практически все вычислительные возможности системы.

2. Запуск системы и знакомство со справочной системой

Запуск системы осуществляется стандартным для Windows способом (нажатием левой клавиши мыши на ярлыке MATLAB в рабочем меню операционной системы). После запуска программы MATLAB на дисплее компьютера появляется ее главное окно (рис.1), и система готова к проведению вычислений в командном режиме (режиме калькулятора). Окно содержит меню, инструментальную линейку с кнопками, указанием текущей папки (Current Directory) и ряд подокон, набор которых можно изменять по составу и количеству с помощью меню View (Вид).

Рисунок 1.

Рассмотрим основное из подокон ЁC командное окно (Command Window). В нем отображаются символы команд, набираемые на клавиатуре, результаты выполнения этих команд, информация об ошибках выполнения программ и т.п. Признаком того, что программа MATLAB готова к восприятию и выполнению очередной команды, является наличие в последней строке текстового поля командного окна знака приглашения (>>), после которого стоит мигающая вертикальная черта.

В верхней части окна MATLAB размещена строка меню: File, Edit, View, Web, Window, Help. Назначение пунктов меню будет даваться по мере необходимости. При этом в дальнейшем последовательность действий будет указываться перечислением пунктов меню через черточку, как в следующей фразе. Выход из системы MATLAB осуществляется закрытием главного окна, или выбором File - Exit MATLAB.

Пункт меню Help - MATLAB Help (или кнопка ?) позволяет воспользоваться подробной справочной системой и демонстрационными примерами. На эти примеры можно также выйти, набрав в командном окне demo. В демонстрационных примерах содержится большое число серьезных задач. При необходимости можно ознакомиться с файлами примеров и даже перенести тексты программ в командное окно MATLAB, используя буфер промежуточного хранения (Ctrl+C ЁC Ctrl+V или соответствующие кнопки).

Окно справки состоит из двух подокон (рис.2). В левом ЁC информация для поиска нужного раздела справочной системы, в правом ЁC текст, активизированной слева темы.

Для быстрой справки по какому-либо объекту надо в командном окне ввести: help имя объекта

Если нет уверенности в правильном написании имени объекта или оно неизвестно, можно использовать поиск по ключевому слову или по последовательности слов. Для этого следует использовать команду

lookfor Ключевое слово или lookfor 'Ключевые слова'

Рисунок 2.

3. рАБОТА в командном режиме

3.1. Сеанс работы с MATLAB

Сеанс работы с MATLAB принято именовать сессией. Сессия, в сущности, является текущим документом, отражающим работу пользователя с системой MATLAB. В ней имеются строки ввода, вывода и сообщений об ошибках. Как говорилось, строка ввода начинается с приглашающего символа ». В строке вывода символ » отсутствует. Строка сообщений об ошибках начинается символами ???. Все значения переменных, вычисленные в течение текущего сеанса работы хранятся в специально зарезервированной области памяти компьютера, называемой рабочим пространством системы MATLAB (Workspace) Команды набираются на клавиатуре с помощью обычных операций строчного редактирования. Особое назначение имеют клавиши µ § и µ §. Они используются для подстановки после приглашения » ранее введенных строк, например, для их дублирования, исправления или дополнения.

Полезно сразу усвоить следующие команды:

clc - очищает экран и размещает курсор в левом верхнем углу пустого экрана;

clear - уничтожает в рабочем пространстве определения всех переменных;

clear x - уничтожает в рабочем пространстве определение переменной x;

clear a,b,c - уничтожает в рабочем пространстве определения переменных списка.

Уничтоженная (стертая в рабочем пространстве) переменная становится неопределенной. Использовать такие переменные нельзя, попытки сделать это сопровождаются выдачей сообщений об ошибке. По мере задания одних переменных и уничтожения других рабочая область перестает быть непрерывной и содержит "дыры" и всякий "мусор". Во избежание непроизводительных потерь памяти при работе с объемными данными следует использовать команду pack, осуществляющую дефрагментацию рабочей области.

3.2 Простейшие действия в командном окне

После символа » можно сразу вводить исходные данные. Вычисления проходят в диалоговом режиме. Для арифметических операций используются обычные знаки: +, ЁC, *, /, для возведения в степень взят символ ^, а для деления справа налево ЁC \. Например, если ввести выражение

>> R = 4.5^2*7.23 - pi*10.4

и нажать Enter, получим ответ:

R =


113.7349

Здесь pi есть константа р

Видно, что введенное значение присвоилось переменной R. Кстати, имена переменных и других элементов должны начинаться с буквы, они могут иметь любое число символов (запоминаются первые 31), заглавные и строчные буквы различаются системой. Остальные правила обычны. Если формат вывода Вас не устраивает, его можно установить через меню File ЁC Preferenses.

Полный список операций можно получить командой help ops.

В общем случае форма ввода и вывода в командное окно имеет вид:

имя переменной = выражение

Если в выражение входит функция, то общая форма обращения к ней: имя функции(список имен аргументов или их значений)

При вводе имя переменной указывать необязательно, результат в этом случае присвоится специальной системной переменной ans, например,

>> sqrt(-2)

ans =


0 + 1.4142i

где sqrt ЁC функция вычисления квадратного корня, i ЁC мнимая единица. Полученное значение можно использовать в последующих вычислениях под именем ans, но следует помнить, что значение этой переменной изменится при первом же встретившемся вычислении без знака присваивания.

Действия в командном окне подчиняются следующим правилам:

если запись оператора не заканчивается символом ";", то результат его действия сразу отображается в командном окне;

- если запись оператора заканчивается символом ";" (его еще называют символом блокировки вывода), то результат не отображается в командном окне;

Кроме уже известных имен ans и pi используются и другие системные имена:

i,j ЁC мнимая единица (корень квадратный из ЁC1);

eps ЁC погрешность для операций над числами с плавающей точкой (2 52);

realmin ЁC наименьшее число с плавающей точкой (2-1022);

realmax ЁC наибольшее число с плавающей точкой (21023);

Inf ЁC машинная бесконечность;

NaN ЁC указание на нечисловой характер данных (Not-a-Number).

Примеры:

>> eps


ans =

2.2204e-016

>> realmin

ans =


2.2251e-308

>> realmax

ans =

1.7977e+308



>> 2/0

Warning: Divide by zero.

ans =

Inf


>> 0/0

Warning: Divide by zero.

ans =

NaN


3.3 Массивы

Массивы играют центральную роль в языке MATLAB. Все данные представлены в виде массивов, например, даже простая переменная представляется как массив размером µ §.

Как и в других языках программирования, именованные наборы данных называют массивами. Всему массиву присваивается одно имя, а доступ к отдельным элементам массива осуществляется по целочисленному индексу, т.е. по номеру элемента в массиве. Правила использования аналогичны другим языкам. Основные отличия: массив заранее не определяется, а при вводе элементов допускается значительная свобода действий. Признаком массива являются прямые скобки, а элемента массива ЁC имя с индексом в круглых скобках. Если массив представляет вектор-строку, то символы разделяются пробелами или запятыми, а если вектор-столбец, то символами ";", либо переводами строк. Примеры:

>> a1 = [1 2 3]

a1 =

1 2 3


>> a2 = [3,2,1]

a2 =


3 2 1

>> [3;7;8]

ans =

3

7



8

>> d = [4

3]

d =


4

3

Массивы можно вводить частями, которые потом объединяются, например, объединим определенные выше массивы a1 и a2:



>> b = [a1 a2]

b =


1 2 3 3 2 1

Можно определять массив, прописывая каждый элемент:

>> A(1) = 2;

>> A(2) = 7;

>> A(3) = 5

A =


2 7 5

или еще интересней:

>> B(4) = 3

B =


0 0 0 3

т.е. создали массив из четырех элементов, где первые три нулевые.

Если значения элементов изменяются с постоянным шагом, то для формирования массива удобно использовать оператор двоеточие ЁC «:», например:

>> x = 1:0.1:2

x =

Columns 1 through 7



1.0000 1.1000 1.2000 1.3000 1.4000 1.5000 1.6000

Columns 8 through 11

1.7000 1.8000 1.9000 2.0000

Можно строить массивы, используя специальные встроенные функции, например, получить массив из пяти единиц:

>> E=ones(1,5)

E =


1 1 1 1 1

Для определения двумерных и многомерных массивов используются все те же приемы, а строки отделяются друг от друга записью с новой строки или символом «;». Примеры:

>> [9 8 7

6 5 4


3 2 1]

ans =


9 8 7

6 5 4


3 2 1

>> [1 2 3;4 5 6;7 8 9]

ans =

1 2 3


4 5 6

7 8 9


Определим массив из единиц размером 3*5;

>> E=ones(3,5)

E =

1 1 1 1 1



1 1 1 1 1

1 1 1 1 1

По умолчанию элементы двумерного массива просматриваются по строкам, т.е. сначала изменяется второй индекс. В случае обработки многомерных массивов, сначала изменяется крайний правый индекс, затем второй справа и т.д.

Упомянутый выше оператор двоеточие ЁC «:» используется и для других целей ЁC он как бы осуществляет перечисление всех элементов по данному индексу. Поясняют это примеры формирования массивов v, w, u из определенного выше двумерного массива ans:

>> v = ans(:)

v =


1

4

7



2

5

8



3

6

9



>> w = ans(:,1)

w =


1

4

7



>> u = ans(2,:)

u =


4 5 6

Пустой массив задается двумя квадратными скобками без символов между ними. Пустой массив можно, в частности, использовать для удаления элементов массива, например: удалить второй столбец из массива ans

>> ans(:,2) = []

ans =


1 3

4 6


7 9

удалить третью строку из массива ans

>> ans(3,:) = []

ans =


1 3

4 6


Аналогично строятся и используются многомерные массивы.

Далее наряду с термином массив будем использовать термины вектор, матрица и т.п.

Некоторые функции для работы с матрицами:

eye ЁC создание единичной матрицы;

ones ЁC создание матрицы из единиц;

zeros ЁC создание матрицы из нулей;

linspace ЁC формирует вектор-строку равноотстоящих узлов;

cat ЁC конкатенация матриц;

diag ЁC создание матриц с заданной диагональю;

fliplr ЁC перестановка столбцов матрицы относительно вертикальной оси;

flipud ЁC перестановка строк матрицы относительно горизонтальной оси;

perms ЁC формирует матрицу из перестановок элементов вектора;

prod ЁC произведение элементов массива;

cumprod ЁC произведение элементов массива с накоплением;

sum ЁC сумма элементов массива;

cumsum ЁC сумма элементов массива с накоплением;

repmat ЁC копирование матрицы;

reshape ЁC выборки из матрицы;

rot90 ЁC поворот матрицы на 90;

tril ЁC выделяет нижнюю треугольную часть матрицы;

triu ЁC выделяет верхнюю треугольную часть матрицы;

length ЁC количество элементов в одномерном массиве A;

size ЁC размер массива (например, число строк и число столбцов);

ndims ЁC размерность массива, т.е. количество индексов;

и т.д. Количество функций достаточно велико, обращайтесь к системе Help.

Все перечисленные функции имеют несколько вариантов применения, с разным числом аргументов. Далее мы будем описывать лишь те варианты использования функций, которые потребуются для примеров.

Например, для определенных выше v и ans:

>> d=length(v)

d =

9

>> s = size(ans)



s =

3 3


>> n = ndims(ans)

n =


2

Можно использовать вложение функций:

d=log((cumprod(1:6))')

d =


0

0.6931


1.7918

3.1781


4.7875

6.5793


Здесь (1:6) ЁC формирование массива [1 2 3 4 5 6]; функция cumprod ЁC вычисляет факториалы элементов полученного массива: [1 2 6 24 120 720]; апостроф обозначает операцию транспонирования, и, наконец, функция log вычисляет натуральные логарифмы от факториалов и результат присваивается переменной d.

3.4 Простейшие операции с векторами и матрицами

Уже из названия системы следует, что MATLAB специально предназначена для выполнения операций над матрицами. Даже обычную константу MATLAB рассматривает как матрицу размером (1,1). В этом легко убедиться:

>> size(5)

ans =

1 1


В простых вычислениях пользователь не замечает такого представления данных, а в более сложных это необходимо учитывать. В дальнейшем нам такие случаи встретятся.

MATLAB представляет вектор-строку с N элементами ЁC как матрицу размером (1,N), а аналогичный вектор-столбец как матрицу размером (N,1).

Правила действий над векторами и матрицами делятся на две группы:

правила, которые предусмотрены векторным исчислением в математике;

правила по преобразованию элементов, которые не предусмотрены математикой, но удобны для программирования.

Действия первой группы обозначаются так же, как действия над обычными математическими объектами. Сюда добавляется знак транспонирования ЁC ' и функция обращения матрицы inv(A). Например:

>> A = [1 2 3;4 5 6]

A =


1 2 3

4 5 6


>> B = A'

B =


1 4

2 5


3 6

>> C = [1 2

3 4];

>> D = inv(C)



D =

-2.0000 1.0000

1.5000 -0.5000

>> G = inv(D)

G =

1.0000 2.0000



3.0000 4.0000

>> E=C*D


E =

1.0000 0


0.0000 1.0000

Здесь матрица D получена обращением матрицы С, а G обращением D. Видно, что получили матрицу равную исходной. Матрица Е получена умножением матрицы С на обратную матрицу С-1 (т.е.D). Естественно, что Е ЁC единичная матрица.

Операцию обращения матрицы можно записывать в более естественном виде:

>> H = C^(-1)

H =

-2.0000 1.0000



1.5000 -0.5000

Видно, что матрица Н совпала с матрицей D.

Для удобства добавлены две операции, которых в математике нет: деление матриц слева направо ЁC /, и деление справа налево ЁC \.

Операция В/А эквивалентна действиям В*inv(A), а операция А\В эквивалентна действиям inv(A)*B.

Эти операции удобны при решении системы линейных уравнений

A * X = B

Можно умножить слева это уравнение на обратную матрицу A-1, получим решение:

X = A-1B.

Так, решение системы

x1 + 2x2 +3x3 = 14

2x1 ЁC x2 ЁC 5x3 = ЁC15

x1 ЁC x2 ЁC x3 = ЁC 4

на MATLAB можно записать:

>> A=[1 2 3

2 -1 -5

1 -1 -1];



>> B=[14;-15;-4];

>> X=A\B


X =

1.0000


2.0000

3.0000


Отметим, что при решении систем линейных уравнений лучше пользоваться записью X=A\B, а не inv(A)*B, т.к. первая использует алгоритм Гаусса, а вторая использует обращение матрицы А.

С помощью операции деления можно обращение матрицы A записать как E / A, где E ЁC единичная матрица.

Ко второй группе относятся операции поэлементного умножения, деления и возведения в степень. Эти действия обозначаются добавлением точки перед символом операции. Например:

>> A = [1 2;3 4]

A =

1 2


3 4

>> B = [2 1;3 1]

B =

2 1


3 1

>> C = A .* B

C =

2 2


9 4

Сравним с обычным умножением матриц

>> C1=A*B

C1 =


8 3

18 7


Если взять функцию от матрицы, то получим матрицу функций от ее элементов, например:

>> D = [0 pi/6

pi/3 pi/2]

D =


0 0.5236

1.0472 1.5708

>> F = sin(D)

F =


0 0.5000

1.0000


3.5 Сохранение и считывание данных сеанса работы (сессии)

Все значения переменных, вычисленные в течение текущего сеанса работы, хранятся, как уже упоминалось, в рабочем пространстве системы MATLAB (Workspace). Посмотреть, что в нем находится, можно командой who, или выбором подокна Workspace (если подокна нет, его можно открыть, используя View ЁC Workspace). Для просмотра значения любой переменной из рабочего пространства, достаточно сделать двойной щелчок левой кнопкой мыши (ЛКМ) на имени переменной, или набрать ее имя в командном окне и нажать Enter.

Рабочее пространство можно очистить командой clear, а для удаления конкретных переменных следует использовать clear имя1 имя2 ЎK

Поcле окончания работы и выхода из MATLAB все ранее вычисленные переменные теряются. Чтобы сохранить рабочее пространство (не файл с текстом в командном окне!) до следующего сеанса, необходимо: выбрать в меню File ЁC Save Workspace AsЎK(Файл ЁC Сохранить Рабочее Пространство какЎK). В открывшемся окне Save to MAT-file (Сохранить в .mat-файл) в строке File name (Имя файла) набрать имя файла, при необходимости выбрать нужную папку и нажать кнопку Save (Сохранить). Рабочее пространство будет сохранено в файле имя файла с расширением .mat.

По умолчанию рабочее пространство сохраняется в текущей (активной) папке в файле имя файла с расширением .mat. Обычно текущей папкой является папка work, системы MATLAB. Чтобы сделать текущей другую папку, нужно воспользоваться раскрывающимся списком Current Directory (Текущая Директория) главного окна MATLAB и кнопкой справа от списка (с многотчием).

При поиске файлов пользователя, система начинает просмотр с текущей паки, а затем просматривает все папки, указанные в списке путей известных системе MATLAB. Доступ к списку осуществляется через меню File ЁC SetPathЎK .

Загрузить рабочее пространство перед продолжением работы можно через меню: File ЁC OpenЎK (Файл ЁC ОткрытьЎK). После загрузки файла появится сообщение:

Variables created in current workspace.

которое говорит об успешном восстановлении переменных в рабочем пространстве. В этом легко убедиться, посмотрев пространство или набрав, имя переменной и нажав ввод ЁC на экране появится ее значение.

3.6 Упражнения

1 Ввести матрицу µ § различными способами: в естественном виде; в виде одной строки; в виде одного столбца; в виде µ §иµ §.

2 Введенную выше матрицу А преобразовать в вектор-столбец, затем в вектор-строку.

3 Убедиться, что после выполнения действий:

>> A = [1 2;3 4]; B = [4 3;2 1]; C = [5 6;7 8]; D = [8 7;7 6];

>> F=[A B;C D];

>> F(:,1)=[]; F(:,3)=[]; F(1,:)=[]; F(3,:)=[]

получится следующий результат:

F =


4 2

6 8


4 С помощью оператора ":" создать массив x = [0, 1, 2, 3, 4, 5], затем вычислить cos(x) и µ §. Если во второй функции получится одно число ЁC подумать в чем дело.

5 В полученном массиве x поменять порядок элементов на обратный и вычислить сумму элементов с накоплением, т.е. µ §. Воспользоваться функциями fliplr и cumsum.




Поделитесь с Вашими друзьями:
  1   2   3


База данных защищена авторским правом ©nethash.ru 2019
обратиться к администрации

войти | регистрация
    Главная страница


загрузить материал