Введение
Среди бурно развивающихсясистем компьютерной математики СКМ, в первую очередь ориентированных начисленные расчеты, особо выделяется матричная математическая система MATLAB.Из-за большого числа поставляемых с системой пакетов расширения MATLAB (в новейшейреализации MATLAB R2009,b их уже 82) эта система является и самой большой из СКМ,ориентированных на персональные компьютеры. Объем ее файлов уже превышает 3 Гб.Система фактически стала мировым стандартом в области современногоматематического и научно-технического программного обеспечения.
Эффективность MATLABобусловлена прежде всего ее ориентацией на матричные вычисления с программнойэмуляцией параллельных вычислений и упрощенными средствами задания циклов.Последние версии системы поддерживают 64-разрядные микропроцессоры и многоядерныемикропроцессоры, например Intel Core 2 Duo и Quad, что обеспечивает высочайшиепоказатели по скорости вычислений и скорости математического имитационногомоделирования.
В MATLAB удачнореализованы средства работы с многомерными массивами, большими и разреженнымиматрицами и многими типами данных. Система прошла многолетний путь развития отузко специализированного матричного программного модуля, используемого толькона больших ЭВМ, до универсальной интегрированной СКМ, ориентированной на массовыеперсональные компьютеры класса IBM PC, AT и Macintosh, рабочие станции UNIX идаже суперкомпьютеры. MATLAB имеет мощные средства диалога, графики икомплексной визуализации вычислений.
Система MATLABпредлагается разработчиками (корпорация The MathWorks Inc.) как лидирующий нарынке, в первую очередь на предприятиях военно-промышленного комплекса, вэнергетике, в аэрокосмической отрасли и в автомобилестроении языкпрограммирования высокого уровня для технических вычислений, расширяемыйбольшим числом пакетов прикладных программ – расширений.
Самым известным из нихстало расширение Simulink, обеспечивающее блочное имитационное моделированиеразличных систем и устройств. Но и без пакетов расширения MATLAB представляетсобой мощную операционную среду для выполнения огромного числа математических инаучно-технических расчетов и вычислений и создания пользователями своихпакетов расширения и библиотек процедур и функций. Новые версии системы имеютвстроенный компилятор и позволяют создавать исполняемые файлы.
Типовой комплекс MATLAB +Simulink содержит инструментальные «ящики» Toolboxes с большим числом пакетоврасширения MATLAB и Bloсksets для расширения возможностей системы визуально ориентированногоблочного имитационного моделирования динамических систем Simulink. Ониприобретаются избранно и отдельно от системы MATLAB + Simulink. В разработкепакетов расширения для MATLAB принимают участие многие научные школы мира иведущие университеты. Многие пакеты охватывают крупные направления науки и техники,такие как оптимизация отклика нелинейных систем, моделирование устройств исистем механики и энергетики, обработка сигналов и изображений, вейвлеты,биоинформатика, генные алгоритмы, нечеткая логика, нейронные сети и т. д.
Назначение иособенности системы MATLAB
Начальные сведения оматрицах
Поскольку MATLAB –матричная система, разумно начать ее описание с начальных сведений о векторах иматрицах.
Двумерный массив чиселили математических выражений принято называть матрицей. А одномерный массивназывают вектором. Векторы могут быть двух типов: вектор-строка и вектор-столбец.
Векторы и матрицыхарактеризуются размерностью и размером. Размерность определяет структурнуюорганизацию массивов в виде строки (размерность 1), страницы (размерность 2),куба (размерность 3) и т. д. Так что вектор является одномерным массивом, аматрица представляет собой двумерный массив с размерностью 2. MATLAB допускаетзадание и использование многомерных массивов, но здесь мы ограничимся пока толькоописанием одномерных и двумерных массивов – векторами и матрицами.
Размер вектора – эточисло его элементов, а размер матрицы определяется произведением числа ее строкm и столбцов n. Обычно размер матрицы указывают как m×n. Матрицаназывается квадратной, если m = n, то есть число строк матрицы равно числу еестолбцов.
Векторы и матрицы могутиметь имена, например V – вектор или M – матрица.
Элементы векторов и матрицрассматриваются как индексированные переменные, например:
• V2 – второй элементвектора V;
• M2,3 – третий элементвторой строки матрицы M.
Индексы у векторов иматриц в MATLAB имеют целочисленные номера, которые начинаются с 1. Дажеобычные числа рассматриваются в MATLAB как матрицы размера 1×1.
Назначение матричнойсистемы MATLAB
MATLAB – одна изстарейших, тщательно проработанных и проверенных временем систем автоматизацииматематических и научно-технических расчетов, построенная на расширенномпредставлении и применении матричных операций. Это нашло отражение в названиисистемы – MATrix LABoratory – матричная лаборатория. Применение матриц какосновных объектов системы способствует резкому уменьшению числа циклов, которыеочень распространены при выполнении матричных вычислений на обычных языкахпрограммирования высокого уровня, и облегчению реализации параллельных вычислений.
Одной из основных задачпри создании системы MATLAB всегда было предоставление пользователям мощногоязыка программирования, ориентированного на технические и математическиерасчеты и способного превзойти возможности традиционных языков программирования,которые многие годы использовались для реализации численных методов. При этомособое внимание уделялось как повышению скорости вычислений, так и адаптациисистемы к решению самых разнообразных задач пользователей.
MATLAB реализует триважные концепции программирования:
• процедурное модульноепрограммирование, основанное на создании модулей – процедур и функций;
• объектно-ориентированноепрограммирование, особенно ценное в реализации графических средств системы;
• визуально-ориентированноепрограммирование, направленное на создание средств графического интерфейсапользователя GUI (Graphics User Interface).
Язык программированияMATLAB относится к классу интерпретаторов. Это значит, что любая командасистемы распознается (интерпретируется) по ее имени (идентификатору) инемедленно исполняется в командной строке, что обеспечивает легкую проверку почастям любого программного кода. Одновременно интерпретирующий характер языкапрограммирования MATLAB означает, что с первых строк описания средств этой системыфактически описывается ее язык программирования.
Важными достоинствамисистемы являются ее открытость и расширяемость.
Большинство команд ифункций системы реализованы в виде m файлов текстового формата (с расширением.m) и файлов на языке C/C++, причем все файлы доступны для модификации.Пользователю дана возможность создавать не только отдельные файлы, но ибиблиотеки файлов для реализации специфических задач. Любой набор команд всправке можно тут же исполнить с помощью команды Evaluate Selection контекстногоменю правой клавиши мыши.
Системные требования кустановке
Новые версии системы MATLAB– весьма громоздкий программный комплекс, который требует до 5000 Мб дисковой памяти(в зависимости от конкретной поставки, полноты справочной системы и числаустанавливаемых пакетов прикладных программ). Поэтому система на DVD. К сожалению,из поставки новых версий исключены PDF_файлы англоязычной документации, но доступк ним открыт через Интернет. Однако получение их при низкой скорости доступа(до 56 Кбит/c) в наших условиях весьма проблематично. Это усиливает рольрусскоязычной литературы по системе MATLAB.
Для успешной установкиновых версий MATLAB необходимы следующие минимальные средства:
• компьютер смикропроцессором не ниже Pentium и математическим сопроцессором, рекомендуютсяпроцессоры Pentium III, Pentium IV, Pentium M или AMD Athlon, Athlon XP, AthlonMP (последние версии MATLAB поддерживают двухъядерные (например серий IntelCore 2 Duo) и четырехъядерные процессоры (Intel Core 2 Quad);
• устройство считываниякомпакт-дисков (привод DVD), мышь, 8-разрядный графический адаптер и монитор,поддерживающие не менее 256 цветов;
• операционная системаWindows XP/2000/NT/Vista (допускается Windows NT4 с сервис-пакетами 5 или 6a);
• ОЗУ емкостью 256Мб дляминимального варианта системы (рекомендуется иметь память 512 Мб и выше);
• до 5000 Мб дисковогопространства при полной установке всех расширений и всех справочных систем (345Мб при установке только MATLAB со справкой);
• свободный USB-порт дляподключения ключа, открывающего доступ к системе.
Для использования расширенныхвозможностей системы нужны графический ускоритель, Windows-совместимые звуковаякарта и принтер, текстовый процессор Microsoft Word 97/2000/XP для реализацииNotebook, компиляторы языков Cи/Cи++ и/или ФОРТРАН для подготовки собственныхфайлов расширения и браузер Netscape Navigator 4.0 и выше или MicrosoftInternet Explorer 5.0 и выше. Для просмотра файлов справочной системы в форматеPDF нужна программа Adobe Reader или Adobe Acrobat 5.0 и выше.
Далее рассматриваютсятолько реализации системы, работающие с операционными системами класса Windows.Все примеры даны для систем класса MATLAB, запущенных в среде Windows XP.
Инсталляция системыMATLAB + Simulink
Система MATLAB + Simulinkпоставляется на одном DVD. Для инсталляции ее с другими пакетами расширения достаточноустановить DVD и дождаться его автоматическогозапуска (или запустить его, как обычно). После распаковки и установки файлов инсталляторана короткое время появляется окно с эмблемой MATLAB, а затем первое окноинсталлятора.
В первом окнеинсталлятора надо установить опцию Install для инсталляции или опцию обновлениялицензии и получения кода PLP (Personal License Pasword). Этот код являетсягруппой из 20 цифр. Установим Install и нажмем мышью кнопку Next>. Появитсяокно для ввода данных пользователя (имени и названия организации) и, главное,кода PLP. Этот код записывается в виде длинного числа и указывается на дискепри продаже MATLAB или запрашивается у MathWorks по Интернету. Каждый легальныйпользователь MATLAB ныне имеет свои страницы на этом Интернет-сайте с данными олицензии, ее сроках и комплекте поставки MATLAB. С этой страницы можно получитьи коды PLP.
Дальнейшие операциипроизводятся в соответствии с простыми указаниями окон инсталлятора.Инсталляция занимает немало времени – около получаса даже на современных ПК.
Файловая системаMATLAB
MATLAB состоит из многихтысяч файлов, находящихся во множестве папок. Полезно иметь представление осодержании основных папок, поскольку это позволяет быстро оценить возможностисистемы. Кроме того, нередко надо обеспечить путь к нужным для работы файламсистемы, иначе содержащиеся в них команды не будут работать.
В MATLAB особое значениеимеют файлы двух типов – с расширениями .mat и .m. Первые являются бинарнымифайлами, в которых могут храниться значения переменных. Вторые представляютсобой текстовые файлы, содержащие внешние программы, определения команд ифункций системы. Именно к ним относится большая часть команд и функций, в томчисле задаваемых пользователем для решения своих специфических задач. Нередковстречаются и файлы с расширением .c (коды на языке Cи), файлы соткомпилированными кодами MATLAB с расширением .mex и др. Исполняемые файлыимеют расширение .exe.
Особое значение имеетпапка MATLAB/TOOLBOX/MATLAB. В ней содержится набор стандартных m-файловсистемы. Просмотр этих файлов позволяет детально оценить возможностипоставляемой конкретной версии системы.
Полный состав файловкаждой папки (их список содержится в файле contents.m) можно вывести напросмотр с помощью команды help имя, где имя – название соответствующейподпапки. Ознакомиться с файловой системой MATLAB несложно с помощью ПроводникаWindows или любого файлового менеджера.
Начало работы сMATLAB
Запуск MATLAB и работав режиме диалога
MATLAB обычно запускаетсяиз главного меню операционной системы Windows XP или активизацией ярлыка слоготипом системы на рабочем столе Windows. После запуска MATLAB на экранепоявляется основное окно системы MATLAB. Оно имеет обычные средства управленияразмерами, скрытия и закрытия. В окне командного режима показано окно AboutMATLAB, которое выводится одноименной командой в позиции Help меню и позволяетуточнить версию системы.
Система готова к проведениювычислений в командном режиме. Полезно знать, что в начале запускаавтоматически выполняется команда matlabrc, которая исполняет загрузочный файлmatlabrc.m и файл startup.m, если таковой существует. Эти файлы текстовогоформата выполняют начальную настройку терминала системы и задают ряд еепараметров.
Понятие о сессииработы с системой MATLAB
Сеанс работы с MATLABпринято именовать сессией (session). Сессия в сущности является текущимдокументом, отражающим работу пользователя с системой MATLAB. В ней имеютсястроки ввода, вывода и сообщений об ошибках. Входящие в сессию определенияпеременных и функций, расположенные в рабочей области памяти, но не саму сессиюможно записать на диск (файлы формата .mat), используя команду save(Сохранить). Команда load (Загрузить) позволяет считать с диска данные рабочейобласти. Фрагменты сессии можно оформить в виде дневника с помощью командыdiary (Дневник).
Полезно обратить вниманиена возможность использования контекстного меню правой клавиши мыши в моментвыделения той или иной позиции рабочего меню. Как и во всех приложенияхоперационных систем Windows XP/2000/NT4, это меню дает доступ ко всем возможнымв данный момент операциям.
Новый и старый обликисистемы MATLAB
Вид окна системы MATLAB,выводимого изначально, вполне отвечает канонам современного интерфейсаWindows-приложений. Пользовательский интерфейс многооконный и имеет ряд средствпрямого доступа к различным компонентам системы. В панели инструментов имеетсяменю просмотра файловой системы с кнопкой его открытия.
В левой части общего окнасистемы имеются окна доступа к компонентам системы Launch Pad/Workspace (Панельзапуска/Рабочая область) и окно Current Directory (текущей папки). Под нимирасположено окно Command History, содержащее список выполненных команд. Щелкнувмышью по любой команде, ее можно перенести в текущую строку окна командногорежима MATLAB.
Изменение внешнего видаинтерфейса отведено командам позиции Desktop меню. Если оставить толькокомандное окно, то интерфейс MATLAB будет иметь упрощенный вид. Такой видинтерфейса был характерен для старых версий системы. Многие пользователинаходят его наиболее приемлемым.
Операции строчногоредактирования
При работе с MATLAB вкомандном режиме действует простейший строчный редактор. Его работа знакомалюбому пользователю ПК еще со времен работы с приложениями под операционнуюсистему MS_DOS и в детальном описании не нуждается. Ограничимся указаниемкоманд строчного редактирования:
→или Ctrl+b___ Перемещение курсора вправо на один символ
←или Ctrl+f___ Перемещение курсора влево на один символ
Ctrl+→илиCtrl+r ___ Перемещение курсора вправо на одно слово
Ctrl+←илиCtrl+l ___ Перемещение курсора влево на одно слово
Home или Ctrl+a ___ Перемещениекурсора в начало строки
End или Ctrl+e ___ Перемещениекурсора в конец строки
↑и ↓илиCtrl+p и Ctrl+n ___ Перелистывание предыдущих команд вверх или вниз дляподстановки в строку ввода
Del или Ctrl+d ___ Стираниесимвола справа от курсора
←или Ctrl+h___ Стирание символа слева от курсора
Ctrl+k ___ Стирание доконца строки
Esc ___ Очистка строкиввода
Ins ___ Включение/выключениережима вставки
PgUp ___ Перелистываниестраниц сессии вверх
PgDn ___ Перелистываниестраниц сессии вниз
Обратите особое вниманиена применение клавиш ↑и ↓. Они используются для подстановкипосле маркера строки ввода >> ранее введенных строк, например для ихисправления, дублирования или дополнения. При этом указанные клавишиобеспечивают перелистывание ранее введенных строк снизу вверх или сверху вниз.Такая возможность существует благодаря организации специального стека,хранящего строки с исполненными ранее командами.
Команды управленияокном
Полезно сразу усвоитьнекоторые команды управления окном командного режима:
• clс – очищает экран иразмещает курсор в левом верхнем углу пустого экрана;
• home – возвращаеткурсор в левый верхний угол окна;
• echo on – включает режим вывода на экран текста Script-файла (файла-сценария);
• echo off – выключает режим вывода на экран текста
Script-файла;
• echo – меняет режим вывода на противоположный;
• echo on all – включаетрежим вывода на экран текста всех m-файлов;
• echo off all –отключает режим вывода на экран текста всех m-файлов;
• more on – включаетрежим постраничного вывода (полезен при просмотре больших m-файлов);
• more off – отключаетрежим постраничного вывода (в этом случае для просмотра больших фалов надопользоваться линейкой прокрутки).
В новых версиях MATLABобе команды clc и home действуют аналогично – очищают экран и помещают курсор влевый верхний угол окна командного режима работы.
Простые вычисленияв MATLAB
MATLAB в роли мощногонаучного калькулятора
Интерпретирующий языкпрограммирования системы MATLAB создан таким образом, что любые (подчас весьмасложные) вычисления можно выполнять в режиме прямых вычислений, то есть безподготовки программы пользователем. При этом MATLAB выполняет функции суперкалькулятораи работает в режиме командной строки.
Работа с системой носитдиалоговый характер и происходит по правилу «задал вопрос – получил ответ».Пользователь набирает на клавиатуре вычисляемое выражение, редактирует его(если нужно) в командной строке и завершает ввод нажатием клавиши ENTER. Вкачестве примера на рисунке показаны простейшие и вполне очевидные вычисления.
Даже из таких простыхпримеров можно сделать некоторые поучительные выводы:
• для указания вводаисходных данных используется символ >>;
• данные вводятся спомощью простейшего строчного редактора;
• для блокировки выводарезультата вычислений некоторого выражения после него надо установить знак;(точка с запятой);
• если не указанапеременная для значения результата вычислений, то MATLAB назначает такуюпеременную с именем ans;
• знаком присваиванияявляется привычный математикам знак равенства =, а не комбинированный знак :=,как во многих других языках программирования и математических системах;
• встроенные функции(например, sin) записываются строчными буквами, и их аргументы указываются вкруглых скобках;
• результат вычисленийвыводится в строках вывода (без знака >>);
• диалог происходит встиле «задал вопрос – получил ответ».
Следующие примерыиллюстрируют применение системы MATLAB для выполнения еще ряда простыхвекторных операций. На рисунке представлено также окно браузера файловой системы,который имеется на вкладке Current Directory. В командном режиме вызов окнабраузера файловой системы удобнее производить из панели инструментовактивизацией кнопки после списка директорий системы MATLAB. Возможны случаиотказа от вычислений при неправильно установленной текущей директории, еслинужные для вычислений m-файлы не обнаруживаются.
В большинствематематических систем вычисление sin(V) или exp(V), где V – вектор,сопровождалось бы выдачей ошибки, поскольку функции sin и exp должны иметьаргумент в виде скалярной величины. Однако MATLAB – матричная система, а векторявляется разновидностью матрицы с размером 1×n или n×1. Поэтому внашем случае результат вычислений будет вектором того же размера, что иаргумент V, но элементы возвращаемого вектора будут синусами или экспонентамиот элементов вектора V.
Матрица задается в видеряда векторов, представляющих ее строки и заключенных в квадратные скобки. Дляразделения элементов векторов используется пробел или запятая, а для отделенияодного вектора от другого – точка с запятой. Для выделения отдельного элементаматрицы M используется выражение вида M(j,i), где M – имя матрицы, j – номерстроки и i – номер столбца.
Для просмотра содержимогомассивов удобно использовать браузер рабочего пространства Workspace. Каждыйвектор и матрица в нем представляются в виде квадратика с ячейками, справа откоторого указывается размер массива. Двойной щелчок по квадратику мышью ведет кпоявлению окна редактора массивов Array Editor. Работа с редактором массивоввполне очевидна – возможен не только просмотр элементов массивов, но и ихредактирование и замена.
Как видно из приведенныхпримеров, ввод исходных выражений для вычислений в системе MATLABосуществляется в самом обычном текстовом формате. В этом же формате выдаютсярезультаты вычислений, за исключением графических. Приведем примеры записивычислений, выполненных системой MATLAB в командной строке:
Работасредактороммассивов
To getstarted, select «MATLAB Help» from the Help menu.
>> 2+3
ans =
5
>>sin(1)
ans =
0.8415
>> typesin
sin is abuilt-in function.
>> helpsin
SIN Sine.
SIN(X) is thesine of the elements of X.
Overloadedmethods
help sym/sin.m
>> V=[12 3 4]
V =
1 2 3 4
>>sin(V)
ans =
0.8415 0.90930.1411 -0.7568
>> 3*V
ans =
3 6 9 12
>> V^2
??? Errorusing ==> ^
Matrix must besquare.
>> V.^2
ans =
1 4 9 16
>> V+2
ans =
3 4 5 6
>>
Можно обратить вниманиена форму ответов при выполнении простых операций без указания переменной,которой присваивается результат. В таких случаях MATLAB сам назначаетпеременную ans, которой присваивается результат и значение которой затемвыводится на экран.
Форма вывода и переносстроки в сессии
Следует отметитьособенности вывода в системе MATLAB. Вывод начинается с новой строки, причемчисловые данные выводятся с отступом, а текстовые – без него. Для экономииместа в данной книге в дальнейшем вывод будет даваться без перевода на новую строку.Например, вывод вектора-строки
ans =
3 4 5 6
будет дан в виде:
ans = 3 4 5 6
Исключением являетсявывод векторов столбцов и матриц – тут будет сохранена более наглядная иприсущая MATLAB по умолчанию форма вывода.
В некоторых случаяхвводимое математическое выражение может оказаться настолько длинным, что длянего не хватит одной строки. Тогда часть выражения можно перенести на новуюстроку с помощью знака многоточия «...» (3 или более точек), например:
s = 1 – 1/2 + 1/3 – 1/4 +1/5 – 1/6 + 1/7 ...
1/8 + 1/9 – 1/10 + 1/11 –1/12;
Максимальное числосимволов в одной строке командного режима – 4096, а в m-файле – не ограничено,но со столь длинными строками работать неудобно. В ранних версиях в однойстроке было не более 256 символов.
Запуск примеровприменения MATLAB из командной строки
MATLAB имеет множествопримеров применения, часть из которых можно запускать прямо из команднойстроки. Например, команда
>> bench
запускает m-файл bench.mдемонстрационного примера тестирования системы.
Основные объектыMATLAB
Понятие оматематическом выражении
Центральным понятием всехматематических систем является математическое выражение. Оно задает то, чтодолжно быть вычислено в численном (реже символьном) виде. Вот примеры простыхматематических выражений, записанных в MATLAB и в математике.
В MATLAB: Вматематике:
2+3; 2+3
2^3* sqrt(y)/2; 2+3*003********/2
2.301*sin(x) 2,301sin(x)
4+exp(3)/5 4+e3/5
Разница в записи вполнеочевидна. В MATLAB выражения записываются
в виде одной строки ивместо разделительной запятой в числах применяется разделительная точка.Математические выражения строятся на основе чисел, констант, переменных,операторов, функций и разных спецзнаков. Ниже даются краткие пояснения сутиэтих понятий. Специфика MATLAB в том, что математические выражения задаются ввиде одной строки. Например, 23 записывается как 2^3. Знак; (точка с запятой)в конце строки ввода блокирует вывод результата вычислений, например:
>> 2^3;
Однако специальнаяпеременная ans (от answer – ответ) позволяет вывести результат вычислений:
>> ans
ans = 8
Действительные икомплексные числа
Число – простейший объектязыка MATLAB, представляющий количественные данные. Числа можно считатьконстантами. Числа используются в общепринятом представлении о них. Они могутбыть целыми, дробными, с фиксированной и плавающей точкой. Возможно представлениечисел в хорошо известном научном формате с указанием мантиссы и порядка числа.Ниже приводятся примеры представления действительных чисел:
-3
2.301
123.456e-24
-234.456e10
Как нетрудно заметить, вмантиссе чисел целая часть отделяется от дробной не запятой, а точкой, как принято в большинстве языковпрограммирования. Для отделения порядка числа от мантиссы используется символe. Знак «плюс» у чисел не проставляется, а знак «минус» у числа называют унарнымминусом. Пробелы между символами в числах не допускаются.
Числа могут бытькомплексными: z=Re(x)+Im(x)*i. Такие числа содержат действительную Re(z) имнимую Im(z) части. Мнимая часть имеет множитель i или j, означающий кореньквадратный из –1:
3i
2j
2+3i
-3.141i
-123.456+2.7e-3i
Функция real(z) возвращаетдействительную часть комплексного числа,
Re(z), а функция imag(z)– мнимую, Im(z). Для получения модуля комплексного числа используется функцияabs(z), а для вычисления фазы – angle(Z). Ниже даны простейшие примеры работы скомплексными числами:
>> i
ans = 0 + 1.0000i
>> j
ans = 0 +1.0000i
>>z=2+3i
z = 2.0000 +3.0000i
>>abs(z)
ans = 3.6056
>>real(z)
ans = 2
>>imag(z)
ans = 3
>> angle(z)
ans = 0.9828
Операции над числами поумолчанию выполняются в формате, который принято считать форматом с двойнойточностью (правильнее сказать с двойной разрядностью).
Форматы чисел
Для установкиопределенного формата представления чисел используется команда
>>format name
где name – имя формата.Для иллюстрации различныхформатов рассмотрим вектор, содержащий два элемента-числа: x=[4/3 1.2345e-6]
В различных форматах ихпредставления будут иметь следующий вид:
format short 1.3333 0.0000
format short e 1.3333E+000 1.2345E-006
format long 1.333333333333338 0.000001234500000
format long e 1.333333333333338E+000 1.234500000000000E-006
format bank 1.33 0.00
Задание форматасказывается только на форме вывода чисел. Вычисления все равно происходят вформате двойной точности, а ввод чисел возможен в любом удобном дляпользователя виде.
Константы и системныепеременные
Константа – этопредварительно определенное числовое или символьное значение, представленноеуникальным именем (идентификатором). Числа (например, 1, –2 и 1.23) являютсябезымянными числовыми константами.
Другие виды констант вMATLAB принято называть системными переменными, поскольку, с одной стороны, онизадаются системой при ее загрузке, а с другой – могут переопределяться.Основные системные переменные, применяемые в системе MATLAB, указаны ниже:
• i или j –мнимая единица(корень квадратный из –1);
• pi – число p =3,1415926…;
• eps – погрешностьопераций над числами с плавающей точкой (2–52);
• realmin – наименьшеечисло с плавающей точкой (2–1022);
• realmax – наибольшеечисло с плавающей точкой (21023)
• inf – значение машиннойбесконечности;
• ans – переменная,хранящая результат последней операции и обычно вызывающая его отображение наэкране дисплея;
• NaN – указание на нечисловойхарактер данных (Not-a-Number).
Вот примеры применениясистемных переменных:
>> 2*pi
ans = 6.2832
>> eps
ans =2.2204e-016
>>realmin
ans =2.2251e-308
>>realmax
ans =1.7977e+308
>> 1/0
Warning:Divide by zero.
ans = Inf
>> 0/0
Warning:Divide by zero.
ans = NaN
Как отмечалось, системныепеременные могут переопределяться. Можно задать системной переменной eps иноезначение, например eps=0.0001. Однако важно то, что их значения по умолчаниюзадаются сразу после загрузки системы.Поэтому неопределенными, в отличие от обычныхпеременных, системные переменные не могут быть никогда.
Символьная константа –это цепочка символов, заключенных в апострофы, например:
'Hello myfriend!'
'Привет'
'2+3'
Если в апострофы помещеноматематическое выражение, то оно не вычисляется и рассматривается просто какцепочка символов. Так что '2+3' не будет возвращать число 5. Однако с помощьюспециальных функций преобразования символьные выражения могут быть преобразованыв вычисляемые.
Текстовые комментарии впрограммах
Поскольку MATLABиспользуется для достаточно сложных вычислений, важное значение имеет наглядностьих описания. Она достигается, в частности, с помощью текстовых комментариев.Текстовые комментарии в программах вводятся с помощью символа %, например так:
% It is factorialfunction
В новых версиях MATLABотпала проблема ввода комментариев с символами кириллицы. Так что подобныйкомментарий также вполне приемлем:
% Это функция вычисленияфакториала
Обычно первые строки m-файловслужат для описания их назначения, которое выводится на экран дисплея послекоманды
>> help Имя_файла
Считается правилом хорошеготона вводить в m-файлы достаточно подробные текстовые комментарии. Без такихкомментариев даже разработчик программных модулей быстро забывает о сутисобственных решений.
Переменные иприсваивание им значений
Переменные – это имеющиеимена объекты, способные хранить некоторые, обычно разные по значению, данные.В зависимости от этих данных переменные могут быть числовыми или символьными,векторными или матричными. Переменные являются широко распространенными объектамив математике и программировании. На языке программирования MATLAB можнозадавать переменным определенные значения. Для этого используется операцияприсваивания, вводимая знаком равенства:
Имя_переменной =Выражение
Типы переменных заранеене декларируются. Они определяются выражением, значение которого присваиваетсяпеременной. Так, если это выражение – вектор или матрица, то переменная будетвекторной или матричной. Переменная, имеющая единственное значение, рассматриваетсякак матрица размера 1×1.
Имя переменной (ееидентификатор) может содержать сколько угодно символов, но запоминается иидентифицируется только 31 начальный символ. Имя любой переменной не должносовпадать с именами других переменных, функций и процедур системы, то есть онодолжно быть уникальным. Имя должно начинаться с буквы, может содержать буквы,цифры и символ подчеркивания _. Недопустимо включать в имена переменных пробелыи специальные знаки, например +, -, *, / и т. д., поскольку в этом случаеправильная интерпретация выражений становится невозможной.
Желательно использоватьсодержательные имена для обозначений переменных, например speed_1 дляпеременной, обозначающей скорость первого объекта. Переменные могут бытьобычными и индексированными, то есть элементами векторов или матриц (см. выше).Могут использоваться и символьные переменные, причем символьные значениязаключаются в апострофы, например s='Demo'. Имена переменных рекомендуетсязадавать только латинскими буквами, цифрами и различными символами (недопускается применение символов операторов).
Уничтожениеопределений переменных
В памяти компьютерапеременные занимают определенное место, называемое рабочей областью(workspace). Для очистки рабочей области используется функция clear в разныхформах, например:
• clear – уничтожениеопределений всех переменных;
• clear x – уничтожениеопределения переменной x;
• clear a, b, c –уничтожение определений нескольких переменных.
Уничтоженная (стертая врабочей области) переменная становится неопределенной. Использоватьнеопределенные переменные нельзя, и такие попытки будут сопровождаться выдачейсообщений об ошибке. Приведем примеры задания и уничтожения переменных:
>> x=2*pi
x = 6.2832
>> V=[1 2 3 4 5]
V = 1 2 3 4 5
>>MAT??? Undefined function or variable 'MAT'.
>>MAT=[1 2 3 4; 5 6 7 8]
MAT =
1 2 3 4
5 6 7 8
>> clearV
>> V
??? Undefinedfunction or variable 'V'.
>> clear
>> x
??? Undefinedfunction or variable 'x'.
>> M
??? Undefinedfunction or variable 'M'.
Обратите внимание на то,что сначала выборочно стерта переменная V, а затем командой clear безпараметров стерты все остальные переменные.
Неопределенные переменныеиспользуются при выполнении символьных вычислений. Специально система MATLABдля выполнения таких вычислений не предназначена. Однако они возможны с помощьюпакета расширения символьной математики Symbolic Math.
Операторы и встроенныефункции MATLAB
Оператор – этоспециальное обозначение для определенной операции над данными – операндами.Например, простейшими арифметическими операторами являются знаки суммы +,вычитания -, умножения * и деления /. Операторы используются совместно соперандами. Например, в выражении 2+3 знак + является оператором сложения, ачисла 2 и 3 – операндами. Операторы также являются распространенными объектамиматематических выражений и языков программирования.
Следует отметить, чтобольшинство операторов относятся к матричным операциям, что может служитьпричиной серьезных недоразумений. Например, операторы умножения * и деления /вычисляют произведение и частное от деления двух массивов, векторов или матриц.Есть ряд специальных операторов, например оператор \ означает деление справаналево, а операторы .* и ./ означают, соответственно, поэлементное умножение ипоэлементное деление массивов.
Следующие примерыпоясняют сказанное на примере операций с векторами:
>> V1=[24 6 8]
V1 = 2 4 6 8
>> V2=[12 3 4]
V2 = 1 2 3 4
>> V1/V2
ans = 2
>>V1.*V2
ans = 2 8 18 32
>> V1./V2
ans = 2 2 2 2
Полный список операторовможно получить, используя команду help ops.
Приведем начало обширногополного списка операторов, содержащего арифметические операторы:
>> helpops
Operators andspecial characters.
Arithmeticoperators.
Plus – Plus +
Uplus – Unaryplus +
Minus – Minus –
Uminus – Unaryminus –
Mtimes –Matrix multiply *
times – Arraymultiply .*
mpower –Matrix power ^
power – Arraypower .^
mldivide –Backslash or left matrix divide \
mrdivide –Slash or right matrix divide /
ldivide – Leftarray divide .\
rdivide –Right array divide ./
kron – Kronecker tensor product
Функции – это имеющиеуникальные имена объекты, выполняющие определенные преобразования своихаргументов и при этом возвращающие результаты этих преобразований. Возвратрезультата – отличительная черта функций. При этом результат вычисления функциис одним выходным параметром подставляется на место ее вызова, что позволяетиспользовать функции в математических выражениях, например функцию sin в2*sin(pi/2).
Функции в общем случаеимеют список аргументов (параметров), заключенный в круглые скобки. Например,функция Бесселя записывается как bessel(NU,X). В данном случае списокпараметров содержит два аргумента – NU в виде скаляра и X в виде вектора.Многие функции допускают ряд форм записи, отличающихся списком параметров. Еслифункция возвращает несколько значений, то она записывается в виде
[Y1, Y2,...]=func(X1,X2,...), где Y1, Y2,… – список выходных параметров и X1, X2,… – списоквходных аргументов (параметров).
Со списком элементарныхфункций можно ознакомиться, выполнив команду help elfun, а со спискомспециальных функций – с помощью команды help specfun. Функции могут бытьвстроенными (внутренними) и внешними, или m-функциями. Так, встроеннымиявляются наиболее распространенные элементарные функции, например sin(x) иexp(y), тогда как функция sinh(x) является внешней функцией. Внешние функциисодержат свои определения в m-файлах. Задание таких функций возможно с помощьюспециального редактора m-файлов, который мы рассмотрим чуть позже. Встроенныефункции хранятся в откомпилированном ядре системы MATLAB, в силу чего онивыполняются предельно быстро.
Применение оператора:(двоеточие)
Очень часто необходимопроизвести формирование упорядоченных числовых последовательностей. Такиепоследовательности нужны, например, для создания векторов со значениямиабсциссы при построении графиков или при создании таблиц. Для этого в MATLABиспользуется оператор: (двоеточие) в виде:
Начальное_значение: Шаг: Конечное_значение
Данная конструкцияпорождает возрастающую последовательность чисел, которая начинается сначального значения, идет с заданным шагом и завершается конечным значением.Применение этой конструкции резко уменьшает потребность в задании программныхциклов.
Если Шаг не задан, то онпринимает значение 1. Если конечное значение указано меньшим, чем начальноезначение, – выдается сообщение об ошибке. Примеры применения оператора: даныниже:
>> 1:5
ans = 1 2 3 4 5
>> i=0:2:10
i = 0 2 4 6 8 10
>> j=10:-2:2
j = 10 8 6 4 2
>>V=0:pi/2:2*pi;
>> V
V = 0 1.570 3.141 4.712 6.2832
>>X=1:-.2:0
X = 1.0000.800 0.600 0.400 0.200 0
>> 5:2
ans =
Empty matrix: 1-by-0
Как отмечалось,принадлежность MATLAB к матричным системам вносит коррективы в назначениеоператоров и приводит, при неумелом их использовании, к казусам. Рассмотримследующий характерный пример:
>> x=0:5
x = 0 1 2 3 4 5
>> cos(x)
ans = 1.0000.54 -0.416 -0.99 -0.653 0.2837
>> sin(x)/x
ans = -0.0862
Вычисление массивакосинусов здесь прошло корректно. А вот вычисление массива значений функцииsin(x)/x дает неожиданный, на первый взгляд, эффект – вместо массива с шестьюэлементами вычислено единственное значение!
Причина «парадокса» здесьв том, что оператор / вычисляет отношение двух матриц, векторов или массивов.Если они одной размерности, то результат будет одним числом, что в данномслучае и выдала система. Чтобы действительно получить вектор значений sin(x)/x,надо использовать специальный оператор поэлементного деления массивов – ./.Тогда будет получен массив чисел:
>>sin(x)./x
Warning:Divide by zero.
ans = NaN 0.8410.454 0.047 -0.1892 -0.1918
Впрочем, и тут безособенностей не обошлось. Так, при x = 0 значение sin(x)/x дает устранимуюнеопределенность вида 0/0 – 1. Однако, как и всякая численная система, MATLABклассифицирует попытку деления на 0 как ошибку и выводит соответствующеепредупреждение. А вместо ожидаемого численного значения выводится символьнаяконстанта NaN, означающая, что неопределенность 0/0 – это все же не обычноечисло.
Выражения с оператором:могут использоваться в качестве аргументов функций для получения множественныхих значений. Например, в приводимом ниже примере вычислены функции Бесселяпорядка от 0 до 5 со значением аргумента 0,5:
>>bessel(0:1:5,1/2)
ans = 0.9380.242 0.030 0.002 0.0002 0.0000
А в следующем примеревычислено шесть значений функции Бесселя нулевого порядка для значенийаргумента от 0 до 5 с шагом 1:
>> bessel(0,0:1:5)
ans = 1.00000.7652 0.2239 -0.2601 -0.3971 -0.1776
Таким образом, оператор:является весьма удобным средством задания регулярной последовательности чисел.Он широко используется при работе со средствами построения графиков. Вдальнейшем мы расширим представление о возможностях этого оператора.
Функции пользователя
matlab графикматрица функция
Хотя ядро новых версийсистемы MATLAB содержит уже более 1000 встроенных функций (не считая функций,определенных в десятках пакетов расширения), всегда может понадобиться какая-тонужная пользователю функция. Язык программирования системы MATLAB предоставляетряд возможностей для задания функций пользователя. Одна из таких возможностейзаключается в применении функции inline, аргументом которой надо в апострофахзадать выражение, задающее функцию одной или нескольких переменных. Вприведенном ниже примере задана функция двух переменных – суммы квадратовsin(x) и cos(y):
>>sc2=inline('sin(x).^2+cos(y)^.2')
sc2 =
Inlinefunction:
sc2(x,y) =sin(x).^2+cos(y).^2
Можно также задавать своифункции в виде m-файлов. Например, можно в окне редактора m-файлов (открываетсякомандой New в меню File) создать m-файл с именем sc2 и листингом:
function y=sc2(x,y)
y=sin(x).^2+cos(y).^2
Записав его на диск,можно командой type sc2 вывести листинг созданной функции:
>> typesc2
functiony=sc2(x,y)
y=sin(x).^2+cos(y).^2
Обращение к функции,созданной описанными методами, задается как
sc2(x,y), где на место xи y подставляются значения переменных – аргументов функции пользователя.Например:
>> sc2(1,2)
ans = 0.8813
>> sc2(2,1)
y = 1.1187
ans = 1.1187
Можно также создать такназываемую handle-функцию (именуемую также анонимной функцией) с помощьюоператора @:
>> fh=@sc2;
К такой функции можнообращаться с помощью функции исполнения функций feval(fh,x,y):
>>feval(fh,1,2)
y = 0.8813
ans = 0.8813
>>feval(fh,2,1)
y = 1.1187
ans = 1.1187
Сообщения об ошибках иисправление ошибок
Большое значение придиалоге с системой MATLAB и отладке программ в ней имеет диагностика ошибок.Рассмотрим ряд примеров, поясняющих технику диагностики. Введем, к примеру,ошибочное выражение
>> sqr(2)
и нажмем клавишу ENTER.Система сообщит об ошибке:
??? Undefinedfunction or variable 'sqr'.
Это сообщение говорит отом, что не определена переменная или функция, и указывает, какая именно, –sqr. В данном случае, разумеется, можно просто набрать правильное выражение.Однако в случае громоздкого выражения лучше воспользоваться редактором. Дляэтого достаточно нажать клавишу ↓ для перелистывания предыдущих строк. Врезультате в строке ввода появится выражение
>> sqr(2)
с курсором в его конце. ВMATLAB можно теперь нажать клавишу Tab. Система введет подсказку, анализируяуже введенные символы. Из предложенных системой трех операторов выбираем sqrt.Теперь c помощью клавиши ↓ вновь выбираем нужную строку и,пользуясь клавишей ←, устанавливаем курсор после буквы r. Теперь нажмемклавишу T, а затем клавишу ENTER. Выражение примет следующий вид:
>> sqrt(2)
ans = 1.4142
Если бы был только одинвариант окончания введенных символов, то после нажатия клавиши Tab система бызакончила наш ввод без перевода строки.
Вычисления дают ожидаемыйрезультат – значение квадратного корня из двух.
В системе MATLAB внешниеопределения используются точно так же, как и встроенные функции и операторы.Никаких дополнительных указаний на их применение делать не надо. Достаточнолишь позаботиться о том, чтобы используемые определения действительносуществовали в виде файлов с расширением .m.
Впрочем, если вы забудетеоб этом или введете имя несуществующего определения, то система отреагирует наэто звуковым сигналом (звонком) и выводом сообщения об ошибке:
>>hsin(1)
??? Undefinedfunction or variable 'hsin'.
>> sinh(1)
ans = 1.1752
В этом примере мы забыли(нарочно), какое имя имеет внешняя функция, вычисляющая гиперболический синус.Система подсказала, что функция или переменная с именем hsin не определена – никак внутренняя, ни как m-функция.
Зато далее мы видим, чтофункция с именем sinh есть в составе функций системы MATLAB – она задана в видеM_функции, хранящейся на жестком диске. Между тем в последнем примере мы недавали системе никаких указаний на то, что следует искать именно внешнююфункцию! И это вычисление прошло так же просто, как вычисление встроеннойфункции, такой как sin.
Иногда в ходе выводарезультатов вычислений появляется сокращение NaN (от слов Not a Number – не число).Оно обозначает неопределенность, например вида 0/0 или Inf/Inf, где Inf –системная переменная со значением машинной бесконечности. Могут появляться иразличные предупреждения об ошибках (на английском языке). Например, приделении на 0 конечного числа появляется предупреждение «Warning: Devide byZero.» («Внимание: деление на нуль»). Диапазон чисел, представимых в системе,лежит от 10–308 до 10+308.
Вообще говоря, в MATLABнадо отличать предупреждение об ошибке от сообщения о ней. Предупреждения (обычнопосле слова Warning) не останавливают вычисления и лишь предупреждаютпользователя о том, что диагностируемая ошибка способна повлиять на ходвычислений. Сообщение об ошибке (после знаков ???) останавливает вычисления. Системаконтроля за ошибочными ситуациями в MATLAB 2009 была существенно переработана истала более корректной.
Формированиевекторов и матриц
Задания векторов иматриц и доступ к их элементам
MATLAB – система,специально предназначенная для проведения сложных вычислений с векторами, матрицамии массивами. При этом она по умолчанию предполагает, что каждая заданнаяпеременная – это вектор, матрица или массив. Все определяется конкретнымзначением переменной. Например, если задано X=1, то это значит, что X – этовектор с единственным элементом, имеющим значение 1, а точнее даже матрица сразмером 1×1. Если надо задать вектор из трех элементов, то их значенияследует перечислить в квадратных скобках, разделяя пробелами или запятыми. Так,например, присваивание
>> V=[1 2 3]
V = 1 2 3
задает вектор V, имеющийтри элемента со значениями 1, 2 и 3 (его можно считать и матрицей размера3×1). После ввода вектора система выводит его на экран дисплея. Заметим,для вектора столбца нужно разделять элементы знаками «;» (точка с запятой):
>> V=[1; 2; 3]
V =
1
2
3
Задание матрицы требуетуказания нескольких строк и нескольких столбцов.
Для разграничения строкиспользуется знак; (точка с запятой). Этот же знак в конце ввода предотвращаетвывод матрицы или вектора (и вообще любой операции) на экран дисплея. Так, ввод
>> M=[1 2 3; 4 5 6;7 8 9];
задает квадратнуюматрицу, которую можно вывести:
>> M
M =
1 2 3
4 5 6
7 8 9
Возможен ввод элементовматриц и векторов в виде арифметических выражений, содержащих любые доступныесистеме функции, например:
>> V=[2+2/(3+4),exp(5),sqrt(10)];
>> V
V = 2.2857 148.4132 3.1623
Для указания отдельногоэлемента вектора или матрицы используются выражения вида V(i) или M(i, j).Например, если задать
>> М(2, 2)
ans = 5
то результат будет равен5. Если нужно присвоить элементу M(i, j) новое значение x, следует использоватьвыражение
M(ij)=x
Например, если элементуM(2, 2) надо присвоить значение 10, следует записать
>> M(2, 2)=10
Вообще говоря, в текстепрограмм MATLAB лучше не использовать i и j как индексы, так как i и j –обозначение квадратного корня из –1. Но можно использовать I и J.
Выражение M(i) с одниминдексом дает доступ к элементам матрицы, развернутым в один столбец. Такаяматрица образуется из исходной, если подряд выписать ее столбцы. Следующийпример поясняет подобный доступ к элементам матрицы M:
>> M=[1 2 3; 4 5 6;7 8 9]
M =
1 2 3
4 5 6
7 8 9
>> M(2)
ans = 4
>> M(8)
ans = 6
>> M(9)
ans = 9
>> M(5)=100;
>> M
M =
1 2 3
4 100 6
7 8 9
Здесь уместно отметить,что размер векторов и матриц в данной книге учебного характера ограничен.Однако система MATLAB способна работать с очень большими векторами и матрицами.Например, последняя версия MATLAB может работать с матрицами размера n×n,где максимальное значение n = 248 – 1, тогда как предшествующие версии имелимаксимальное значение n = 231. При этом размеры файла, который может хранитьматрицу, могут достигать 18 Гб.
Задание векторов иматриц с комплексными элементами
Из курса математикиизвестно о существовании комплексных чисел вида a + b * i, где a –действительная часть числа, b – мнимая часть и i – мнимая единица (кореньквадратный из –1). Возможно задание векторов и матриц с комплекснымиэлементами, например:
>> i=sqrt(-1);
>> CM =[1 2; 3 4] + i*[5 6; 7 8]
или
>> CM =[1+5*i 2+6*i; 3+7*i 4+8*i]
Это создает матрицу:
CM =
1.0000 + 5.0000i 2.0000+ 6.0000i
3.0000 + 7.0000i 4.0000+ 8.0000i
Возможно разделениеэлементов не только пробелами, но и запятыми.
Понятие о матричныхоперациях и магические матрицы
Наряду с операциями надотдельными элементами матриц и векторов система позволяет производить операцииумножения, деления и возведения в степень сразу над всеми элементами, то естьнад массивами. Для этого перед знаком операции ставится точка. Например, оператор* означает умножение для векторов или матриц, а оператор .* – поэлементноеумножение всех элементов массива. Так, если M – матрица, то M.*2 даст матрицу,все элементы которой умножены на скаляр – число 2. Впрочем, для умноженияматрицы на скаляр оба выражения – M*2 и M.*2 – оказываются эквивалентными.
Имеется также ряд особыхфункций для задания векторов и матриц. Например, функция magic(n) задаетмагическую матрицу размера n×n, у которой сумма всех столбцов, всех строки даже диагоналей равна одному и тому же числу:
>>M=magic(4)
M =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
>>sum(M)
ans = 34 34 34 34
>>sum(M’)
ans = 34 34 34 34
>>sum(diag(M))
ans = 34
>>M(1,2)+M(2,2)+M(3,2)+M(4,2)
ans = 34
Уже сама по себевозможность создания такой матрицы с помощью простой функции magic заинтересуетлюбителей математики. Но векторных и матричных функций в системе множество, имы их детально рассмотрим в дальнейшем. Для стирания переменных из рабочейобласти памяти служит команда clear.
Конкатенация(объединение) матриц
Описанный способ заданияматриц позволяет выполнить операцию конкатенации – объединения малых матриц вбольшую матрицу. Например, создадим вначале магическую матрицу размера 3×3:
>> A=magic(3)
A =
8 1 6
3 5 7
4 9 2
Теперь можно построитьматрицу, содержащую четыре матрицы:
>> B=[A A+16;A+32A+16]
B =
8 1 6 24 17 22
3 5 7 19 21 23
4 9 2 20 25 18
40 33 38 24 17 22
35 37 39 19 21 23
36 41 34 20 25 18
Полученная матрица имеетуже размер 6×6. Вычислим сумму ее столбцов:
>> sum(B)
ans = 126 126 126 126 126 126
Любопытно, что онаодинакова для всех столбцов. А для вычисления суммы строк используем команду
>> sum(B.')
ans = 78 78 78 174 174 174
Здесь запись B.' означаеттранспонирование матрицы B, то есть замену строк столбцами. На этот раз суммаоказалась разной. Это отвергает изначально возникшее предположение, что матрицаB тоже является магической. Для истинно магической матрицы суммы столбцов истрок должны быть одинаковыми:
>> D=magic(6)
D =
35 1 6 26 19 24
3 32 7 21 23 25
31 9 2 22 27 20
8 28 33 17 10 15
30 5 34 12 14 16
4 36 29 13 18 11
>>sum(D)
ans = 111 111 111 111 111 111
>>sum(D.')
ans = 111 111 111 111 111 111
Более того, для магическойматрицы одинаковой является и сумма элементов по основным диагоналям (главнойдиагонали и главной антидиагонали).
Удаление столбцов истрок матриц
Для формирования матриц ивыполнения ряда матричных операций возникает необходимость удаления отдельныхстолбцов и строк матрицы. Для этого используются пустые квадратные скобки – []. Проделаем это с матрицей M:
>> M=[1 2 3; 4 5 6;7 8 9]
M =
1 2 3
4 5 6
7 8 9
Удалим второй столбец,используя оператор: (двоеточие):
>> M(:,2)=[ ]
M =
1 3
4 6
7 9
А теперь, используяоператор: (двоеточие), удалим вторую строку:
>> M(2,:)=[ ]
M =
1 3
7 9
Работа сдемонстрационными примерами с командной строки
Вызов спискадемонстрационных примеров
Одним из самыхэффективных методов знакомства со сложными математическими системами являетсяознакомление со встроенными примерами их применения. Система MATLAB содержитмногие сотни таких примеров – по примеру практически на каждый оператор илифункцию. Наиболее поучительные примеры можно найти в разделе demos справки иливыполнив команду:
>> helpdemos
Examples anddemonstrations.
Type 'demo' atthe command line to browse more demos of
MATLAB, theToolboxes, and Simulink.
demo – Rundemonstrations.
Mathematics.
intro – BasicMatrix Operations
inverter –Inverses of Matrices
buckydem –Graphs and Matrices
sparsity –Sparse Matrices
matmanip –Matrix Manipulation
integerMath – Integer Arithmetic Examples
Здесь весьма длинныйсписок примеров обрезан.
Пример – выводизображения поверхности
Исполнив команду
>> wernerboy
можно наблюдатьизображение сложной поверхности Вернера–Боя, показанной на рисунке в окнеграфики.
Это построение прекрасноиллюстрирует технику функциональной окраски сложных поверхностей и фигур,именуемую рендерингом. Данная техника обеспечивает высокую степень реалистичностиповерхностей с учетом условий освещения и свойств отражения света от материаловс определенными свойствами.
Что больше – e^pi илиpi^e?
Рассмотрим еще одинпростой пример, дающий ответ на сакраментальный вопрос о том, какое значениебольше – e^pi или pi^e? Для запуска этого примера надо исполнить команду
>> e2pi
и наблюдать красочное шоу– графики степенных функций x^y и y^x с построением на них линий заданных функцийи оценкой их значений – рисунке. Этот пример – наглядная демонстрация переходаот узких понятий к более широким.
Так можно легко убедитьсяв том, что все же e^pi больше, чем pi^e. Можно проверить это и помощьюлогического оператора сравнения > (результат 1 означает, что неравенствовыполняется и дает логическое значение TRUE):
>> e^pi>pi^e
ans = 1
Встроенные фигуры
MATLAB имеет рядвстроенных фигур, которые можно легко выводить на построение простым указаниемих названия. Так, введя команду knot, можно задать построение еще одной сложнойпространственной фигуры узла с функциональной окраской. Можно убедиться в том,что имеется возможность вращать полученную фигуру. В данном примере показантакже вывод шкалы цветовых оттенков – справа от фигуры.
Просмотр текстовпримеров и m-файлов
Как программная средаMATLAB открыта для пользователя. Любой m-файл системы, например файлдемонстрационных примеров, можно просмотреть с помощью любого текстового редактора,редактора и отладчика m-файлов, встроенного в систему, или с помощью команды
type Имя_M-файла
Например, если вы хотитепросмотреть текст файла демонстрационного примера e2pi, то нужно выполнитькоманду:
>> type e2pi
Используя команду help,можно получить справку по любой конкретной функции или команде.
Особенности двумернойграфики MATLAB
Для визуализациивычислений в MATLAB широко используется машинная графика. Графика в MATLABимеется двух типов:
• обычная двумерная итрехмерная растровая графика;
• специальнаядескрипторная (handle) графика.
Остановимся на обычнойграфике. С ней связано представление о графических объектах, имеющихопределенные свойства. В большинстве случаев об объектах можно забыть, если тольконе занимаеться объектно-ориентированным программированием задач графики. Связаноэто с тем, что большинство команд высокоуровневой графики, ориентированной наконечного пользователя, автоматически устанавливают свойства графическихобъектов и обеспечивают воспроизведение графики в нужной системе координат,палитре цветов, масштабе и т. д. Применение графики MATLAB практическиисключает необходимость в сложных математических вычислениях, обычнонеобходимых для построения графиков.
Средства графики в новыхверсиях MATLAB существенно дополнены. Новая позиция Graphics меню содержит трикоманды:
• New Figure – открываетпустое окно графики;
• Plot Tools – открываетокно нового мощного редактора графики;
• More Plots… – открываетокно доступа к различным видам графики.
Первая команда очевидна,а две другие будут детально описаны ниже.
На более низком уровнерешения задач используется ориентированная на опытного программистадескрипторная графика (Handle Graphics), при которой каждому графическомуобъекту в соответствие ставится особое описание – дескриптор, на которыйвозможны ссылки при использовании графического объекта. Дескрипторная графикапозволяет осуществлять визуальное программирование объектов пользовательскогоинтерфейса – управляющих кнопок, текстовых панелей и т. д.
Графики функций однойпеременной
Графики в MATLAB строятсяв отдельных масштабируемых и перемещаемых окнах. Возьмем вначале простейшийпример – построение графика синусоиды. Следует помнить, что MATLAB (как идругие СКМ) строит графики функций по ряду точек, соединяя их отрезками прямых,то есть осуществляя линейную интерполяцию функции в интервале между смежнымиточками. Зададим интервал изменения аргумента x от 0 до 10 с шагом 0,1. Дляпостроения графика достаточно вначале задать вектор x=0:0.1:15, а затемиспользовать команду построения графиков plot(sin(x)).
Итак, для построенияграфика синусоиды надо исполнить следующие команды:
x=0:0.1:15;y=sin(x); plot(x,y)
При этом будут построеныокно графика и сам график синусоидальной функции. В этих примерах вектор xзадает интервал изменения независимой переменной от 0 до 15 с шагом 0,1. Почемувзят такой шаг, а не, скажем, 1? Дело в том, что plot из окна командного режимаработы MATLAB строит не истинный график функции sin(x), а лишь заданное числомэлементов вектора x число точек. Эти точки затем просто соединяются отрезкамипрямых того или иного стиля и цвета, то есть осуществляется кусочно-линейнаяинтерполяция данных графика. При 100 точках полученная кривая глазомвоспринимается как вполне плавная, но при 10–20 точках она будет выглядетьсостоящей из отрезков прямых.
Графики ряда функций
Построим графики сразутрех функций: sin(x), cos(x) и sin(x)/x. Прежде всего отметим, что эти функциимогут быть обозначены переменными, не имеющими явного указания аргумента в видеy(x):
>>y1=sin(x); y2=cos(x); y3=sin(x)/x;
Такая возможностьобусловлена тем, что эти переменные являются векторами – как и переменная x.Теперь можно использовать одну из ряда форм команды
plot:
plot(a1,f1,a2,f2,a3,f3,...),
где a1, a2, a3, … –векторы аргументов функций (в нашем случае все они – x), а f1, f2, f3, … –векторы значений функций, графики которых строятся в одном окне. В нашем случаедля построения графиков указанных функций мы должны записать следующее:
>>plot(x,y1,x,y2,x,y3)
Можно ожидать, что MATLABв этом случае построит, как обычно, точки графиков этих функций и соединит ихотрезками линий. Но, увы, если мы выполним эти команды, то никакого графика неполучим вообще. Не исключен даже сбой в работе системы. Причина этого казуса – еслиx представляет собой массив (вектор), то нельзя использовать операторматричного деления /.
Этот пример еще разнаглядно указывает на то, что чисто поверхностное применение даже такой мощнойсистемы, как MATLAB, иногда приводит к досадным срывам. Чтобы все же получитьграфик, надо вычислять отношение sin(x) к x с помощью оператора поэлементногоделения массивов ./. Этот случай поясняет рисунок. Кстати, на нем показанаоткрытой позиция Tools (Инструменты) меню графического окна, которая открываетдоступ к многочисленным командам форматирования графиков.
Обратим внимание на то,что хотя на этот раз MATLAB построил графики всех трех функций, в окнекомандного режима появилось предупреждение о делении на 0 – в момент, когда x=0– «Warning: Divide by zero.». Таким образом, plot «не знает» о том, чтонеопределенность sin(x)/x=0/0 устранимая и дает 1. Это недостаток практическивсех систем для численных вычислений.
Построение графиковтрех функций
Графическая функцияfplot
Разумеется, MATLAB имеетсредства для построения графиков и таких функций, как sin(x)/x, которые имеютустранимые неопределенности. Не обсуждая эти средства подробно, просто покажем,как это делается, с помощью другой графической команды – fplot:
fplot('f(x)',[xmin xmax])
Она позволяет строитьграфик функции f(x), заданной в символьном виде, в интервале измененияаргумента x от xmin до xmax без фиксированного шага изменения x. Один извариантов ее применения демонстрирует рисунке. Хотя в процессе вычисленийпредупреждение об ошибке (деление на 0) выводится, но график строитсяправильно, при x=0 sin(x)/x=1. Обратите также внимание на две используемые команды:clear (Очистить) – очистка графического окна и grid on (Сетка) – включениеотображения сетки, которая строится пунктирными линиями.
На рисунке представленотакже меню Insert (Вставка) окна графики. С его помощью можно задать вставки вграфическое окно различных объектов, например легенд – обозначений кривыхграфиков, шкалы цветов и т. д. На рисунке представлены примеры вставки легендыи шкалы цветов Colorbar.
Обратим внимание и напозицию File (Файл) меню окна графики. Она содержит типовые файловые операции.Однако они относятся не к файлам документов, а к файлам графиков. В частности,можно присваивать имя записываемым на диск рисункам с графиками.
Знакомство стрехмерной графикой MATLAB
Построение трехмерныхграфиков
Столь же просто обеспечиваетсяпостроение графиков сложных поверхностей, представленных функцией двухпеременных z=f(x,y). Такую графику называют трехмерной, или 3D-графикой. Надотолько знать, какой командой реализуется тот или иной график. Например, дляпостроения графика поверхности и ее проекции в виде контурного графика наплоскость под поверхностью достаточно использовать следующий фрагментпрограммы:
% Пример построенияповерхности и ее проекции
[X,Y]=meshgrid(-5:0.1:5);
Z=X.*sin(X+Y);
meshc(X,Y,Z)
Первая задает разметкусетки будущей поверхности с интервалом изменения x и y от –5 до 5 с шагом 0,1.Вторая задает выражение для вычисления значений z в узлах сетки. Наконец,третья команда строит собственно график поверхности. Окно с построеннымграфиком показано на рисунке. Раньше пришлось бы убить много дней насоставление и отладку нужной для построения такого графика программы. В MATLABже можно в считанные секунды изменить задающую поверхность функцию Z(X, Y) итут же получить новый график поверхности с окраской, в данном случае заданнойвектором Z, и с ее проекцией на плоскость XY.
Вращение графиковмышью
Можно поворачиватьпостроенную фигуру мышью и наблюдать ее под разными углами. Рассмотрим этувозможность на примере построения логотипа системы MATLAB – мембраны. Дляэтого, введя команду logo, получим исходный график, представленный на рисунке.
Для вращения графикадостаточно активизировать последнюю справа кнопкупанели инструментов сизображением пунктирной окружности со стрелкой. Теперь, введя курсор мыши вобласть графика и нажав левую кнопку мыши, можно круговыми движениями заставитьграфик вращаться.
Любопытно, что в новыхверсиях MATLAB вращать можно и двумерные графики, наблюдая поворот плоскости, вкоторой они построены.
Контекстное менюграфиков
Для переключения в режимредактирования графика нужно щелкнуть на кнопке Edit Plot (Редактировать график)с изображением курсора-стрелки. В этом режиме графиком можно управлять спомощью контекстного меню, вызываемого щелчком правой кнопки мыши. Вид этогоменю при курсоре, расположенном в области трехмерного графика вне построенных трехмерныхграфических объектов, показан на рисунке. С помощью мыши можно также выделитьграфик. Щелчок левой клавишей выводит набор точек (прямоугольников) в областирисунка. Теперь на график можно наносить стрелки, поясняющие надписи (кнопка сбуквой A) и т. д.
Еще раз напоминаем, чтоконтекстное меню правой клавиши мыши позволяет оперативно выполнять любыекоманды, в том числе и не относящиеся к графике.
Интерфейс основногоокна MATLAB
Средства панелиинструментов
Как любая программа,MATLAB имеет основное окно с титульной строкой, строкой меню, панельюинструментов, строкой статуса и другими компонентами. Начинающим пользователямудобно знакомиться с работой в системе с помощью панели инструментов,расположенной под строкой меню. Она дает наиболее простой и удобный, особеннодля начинающих пользователей, способ работы с системой MATLAB.
Панель инструментовосновного окна MATLAB довольно проста и содержит знакомые большинству пользователейкнопки. Ниже они перечислены слева направо:
• New M-file (Новый m-файл)– выводит пустое окно редактора m-файлов;
• Open file (Открытьфайл) – открывает окно для загрузки m-файла;
• Cut (Вырезать) –вырезает выделенный фрагмент и помещает его в буфер;
• Copy (Копировать) –копирует выделенный фрагмент в буфер;
• Paste (Вставить) –переносит фрагмент из буфера в текущую строку ввода;
• Undo (Отменить) –отменяет предшествующую операцию;
• Redo (Повторить) –восстанавливает последнюю отмененную операцию;
• Simulink – открываетокно браузера библиотек Simulink;
• QUIDE – открывает окносоздания и расширения интерфейса;
• Help (Помощь) –открывает окно справки.
Набор кнопок панелиинструментов обеспечивает выполнение наиболее часто необходимых команд и вполнедостаточен для повседневной работы с системой. О назначении кнопок говорят ивсплывающие подсказки, появляющиеся, когда курсор мыши устанавливается насоответствующую кнопку. Они имеют вид желтого прямоугольника с текстом короткойсправки.
Кнопка New M-fileоткрывает окно редактора/отладчика m-файлов. Работу с этим средством мы обсудимпозже. Кнопка Open file (Открыть файл) служит для загрузки в редактор/отладчикранее созданных m-файлов, например входящих в пакет расширения (Toolbox)системы или разработанных пользователем. Она открывает стандартное окно,которое является типичным элементом интерфейса Windows-приложений.
Кнопки Cut (Вырезать),Copy (Копировать) и Paste (Вставить) реализуют наиболее характерные командыработы с буфером обмена (Clipboard). Первые две операции относятся к выделеннымфрагментам сессии или текста m-файлов (если они выполняются в окнередактора/отладчика). Для выделения объектов можно использовать мышь, перемещаякурсор по тексту при нажатой левой кнопке, или клавиши со стрелками вкомбинации с клавишей Shift.
В MATLAB можноиспользовать контекстное меню, появляющееся при нажатии правой кнопки мыши.Например, установив курсор мыши на выделенный фрагмент матрицы M и нажав правуюкнопку, можно увидеть меню. В нем, кстати, дублируется позиция с командой Copy(Копировать). Есть и ряд других доступных в данный момент команд. Обратите внимание,что в момент подготовки магической матрицы M ее имя появилось в окне браузерарабочей области – в правой части экрана. При этом матрица представляетсяизображением таблицы.
Часто, выполнив какую-тооперацию, мы замечаем, что она оказалась ошибочной. При работе в MATLAB такойситуации пугаться не стоит – нажатие кнопки Undo (Отменить) панели инструментовприведет к отмене последнего действия, выполненного в текущей строке. Операциив предыдущих строках документа этой командой не отменяются. Если оказалось, чтовы зря произвели отмену последней операции, то ее легко восстановить, введя спанели инструментов операцию Redo (Восстановить).
Кнопка GUIDE открываетокно создания и изменения объектов интерфейса пользователя.
Браузер рабочейобласти
Нетрудно догадаться, чтоимена (идентификаторы) переменных различного типа и их значения хранятся впамяти компьютера. Эту область памяти именуют рабочей областью. В левой частиокна системы MATLAB имеется окно специального браузера рабочей области –Workspace Browser. Он служит для просмотра ресурсов рабочей области памяти.Браузер дает наглядную визуализацию содержимого рабочей области. В частности,в нем имеются данные обо всех заданных переменных, векторах, матрицах имассивах.
Окно браузера рабочейобласти выполняет и другие важные функции – позволяет просматриватьсуществующие в памяти объекты, редактировать их содержимое и удалять объекты изпамяти. При работе с браузером рабочего пространства в меню появляются двеновые позиции – View (обзор массивов) и Graphics (специальные возможностиграфики).
Для вывода содержимогообъекта достаточно выделить его имя с помощью мыши и щелкнуть на кнопке Open(Открыть). Объект можно открыть и двойным щелчком на его имени в списке.Откроется окно редактирования массива Array Editor, показанное на рисункеприменительно к матрице M2.
Окно редактированияматрицы дает удобный доступ для редактирования любого элемента матрицы поправилам, принятым при работе с электронными таблицами. Основное из них –быстрый доступ к любому элементу матрицы. Можно менять тип значений элементов,выбирая его из списка, предоставляемого меню Numeric format (Формат чисел). Вокне также выводятся данные о числе строк и столбцов матрицы.
Заметим, что в новыхверсиях MATLAB работа с браузером рабочей области стала еще более удобной, чемв прежних версиях этой системы. Это достигнуто за счет того, что главныевозможности работы с браузером перенесены в позицию меню View.
Команды просмотрарабочей области who и whos
Следует отметить, чтопросмотр рабочей области возможен и в командном режиме, без обращения кбраузеру Workspace Browser. Команда who выводит список определенных переменных,а команда whos – список переменных с указанием их размера и объема занимаемойпамяти.
Пример: создать трипеременные и просмотреть их в рабочем пространстве.
>>x=1.234;
>> V=[12 3 4 5];
>>M=magic(4);
>> who
Your variablesare:
M V x
>> whos
Name SizeBytes Class
M 4x4 128double array
V 1x5 40double array
X 1x1 8 doublearray
Grand total is22 elements using 176 bytes
Если вы хотитепросмотреть данные одной переменной, например M, следует использовать командуwhos M. Естественно, просмотр рабочей области с помощью браузера рабочейобласти (Workspace Browser) более удобен и нагляден.
Браузер файловойструктуры
Для просмотра файловойструктуры MATLAB служит специальный браузер файловой системы (Path Browser),который запускается при обычной загрузке системы. Если был установленупрощенный интерфейс, то для запуска браузера файловой системы используетсяокно Current Directory (Текущая папка). На рисунке показано окно этогобраузера, выведенное отдельно.
Исполнив команду Open(Открыть) из контекстного меню правой клавиши мыши или дважды щелкнув повыделенной строке с именем файла, можно ввести этот файл в окноредактора/отладчика m-файлов. При этом редактор запустится автоматически и егоокно с готовым для редактирования выбранным файлом появится на экране.
Работа с меню
Команды, операции ипараметры
Каждая открытая позициястроки основного меню содержит различные операции и команды. Выделенная командаили операция исполняется при нажатии клавиши Ввод (Enter). Выполнение командыможно также осуществить щелчком мыши или нажатием на клавиатуре клавиши,соответствующей выделенному символу в названии команды. Для ряда команд указаны«горячие» клавиши или комбинации клавиш, обеспечивающие быстрое выполнение тойили иной команды с вводом с клавиатуры.
Между командами и операцияминет особых отличий, и в литературе по информатике их часто смешивают. Дляопределенности мы будем считать командой действие, которое исполняетсянемедленно. А операцией – действие, которое требует определенной подготовки,например открытие окна для установки определенных параметров.
Параметр (option) – этозначение определенной величины, действующее во время текущей сессии. Параметрамиобычно являются указания на применяемые наборы шрифтов, размеры окна, цвет фонаи т. д.
Меню системы MATLAB
Перейдем к описаниюосновного меню системы MATLAB. Меню содержит всего шесть пунктов:
• File – работа сфайлами;
• Edit – редактированиесессии;
• View – вывод и скрытиепанели инструментов;
• Web – доступ кИнтернет-ресурсам;
• Window – переключение изакрытие окон;
• Help – доступ ксправочным подсистемам.
Позиция Web дублируетвозможности стандартных браузеров, например
Microsoft InternetExplorer, и не всегда работоспособна. Возможно, поэтому она удалена в новыхреализациях MATLAB. Работа с позицией Window вполне очевидна, а позиция Helpоткрывает доступ к справке. Отметим особенности работы трех первых позиций менюсистемы MATLAB любой версии.
Меню File
Меню File содержит рядопераций и команд для работы с файлами:
• New – открытие подменюс позициями:
• M_file – открытие окнаредактора/отладчика m-файлов;
• Figure – открытиепустого окна графики;
• Model – открытиепустого окна для создания Simulink-модели;
• GUI – открытие окнаразработки элементов графического интерфейса
пользователя;
• Deployment Project –открытие окна разработки;
• Open – открытие окназагрузки файла;
• Close Command Windows –закрытие окна командного режима работы (оно при этом исчезает с экрана);
• Import data – открытиеокна импорта файлов данных;
• Save Workspace As… –открытие окна записи рабочей области в виде файла с заданным именем;
• Set Path – открытиеокна установки путей доступа файловой системы;
• Preferences… – открытиеокна настройки элементов интерфейса;
• Print… – открытие окнапечати всего текущего документа;
• Print Selection… –открытие окна печати выделенной части документа;
• Exit – завершениеработы с системой.
Большинство окон,открывающихся этими операциями, хорошо известны пользователям любымиприложениями Windows. Поэтому остановимся на описании только тех окон, которыеспецифичны для систем класса MATLAB. Кстати, состав команд позиции File во всехописанных в книге версиях системы MATLAB идентичен.
Установка путейдоступа файловой системы
Поскольку MATLAB работаетсо множеством файлов, расположенных в разных папках (директориях), то неисключены случаи неправильной работы из-за указания неверного пути доступа кфайлам. Для коррекции этого пути в ходе работы с MATLAB служит редактор доступафайловой системы. Его окно открывается операцией Set Path… (Установить путь) .
Окно дает список папок сфайлами системы MATLAB. Имеется возможностьпереноса папок вверх или вниз посписку, уничтожения их и переименования. По умолчанию задается правильнаяустановка путей доступа, так что данными возможностями стоит пользоватьсятолько в особых обстоятельствах, например при случайном переносе папок в другоеместо или при их переименовании.
Настройка элементовинтерфейса
Команда Preferences…(Предпочтения) выводит окно детальной настройки элементов интерфейса. В левойчасти этого окна имеется древообразный список элементов интерфейса системы, а вправой части – поле задания параметров для выбранного типа элементов. Числопараметров и видов этого окна велико, но можно разобраться с нужнымипараметрами без особого труда.
Меню Edit – средстваредактирования документов
Меню Edit содержитоперации редактирования, типичные для большинства приложений Windows. Это менюимеет следующие операции и команды:
• Undo (Отменить) –отмена результата предшествующей операции;
• Redo (Повторить) –отмена действия последней операции Undo;
• Cut (Вырезать) –вырезание выделенного фрагмента и перенос его в буфер;
• Copy (Копировать) –копирование выделенного фрагмента в буфер;
• Paste (Вставить) –вставка фрагмента из буфера в текущую позицию курсора;
• Paste to Workspace… –открытие окна вставки в рабочее пространство;
• Clear (Очистить) –операция очистки выделенной области;
• Select All (Выделить) –выделение всей сессии;
• Delete (Стереть) –уничтожение выделенного объекта;
• Find… – открытие окнапоиска объекта (текста) в командном окне;
• Find files… – открытиеокна поиска заданного файла;
• Clear Command Windows(Очистить командное окно) – очистка текста
сессии (с сохранениемсозданных объектов);
• Clear Command History(Очистить окно истории команд) – очистка окна истории;
• Clear Workspace –очистка окна браузера рабочей области.
Назначение ряда указанныхкоманд и операций уже обсуждалось. Отметимлишь, что команда Clear CommandWindow очищает окно командного режима работы и помещает курсор в верхний левыйугол окна. Однако все определения, сделанные в течение стертых таким образомсессий, сохраняются в памяти компьютера. Напомним, что для очистки экранаиспользуется также команда clс, вводимая в командном режиме.
Интерфейс по умолчанию
Новые версии MATLAB имеютдовольно много элементов интерфейса. Пользователь может легко менять видинтерфейса, закрывая или открывая те или иные окна. Основные средства для этогов новых версиях сосредоточены в позиции меню Desktop.
Иногда полезно вернутьсяк виду интерфейса по умолчанию. Для этого можно воспользоваться командойDesktop Layout ⇒Default в позиции Desktop меню. Вид окна системыMATLAB R2006b по умолчанию показан на рисунке.
Основыредактирования и отладки m-файлов
Интерфейсредактора/отладчика m-файлов
Программы в системеMATLAB представлены m-файлами. Для подготовки, редактирования и отладки m-файловслужит специальный многооконный редактор. Он выполнен как типичное приложениеWindows. Редактор можно вызвать командой edit из командной строки или командойNew ⇒M-file из меню File. Послеэтого в окне редактора можно создавать свой файл, пользоваться средствами егоотладки и запуска. Перед запуском файла его необходимо записать на диск,используя команду File ⇒Save as в меню редактора.
На рисунке показано окноредактора/отладчика MATLAB с текстом простого файла demo.m в окне редактированияи отладки. Подготовленный текст файла (это простейшая программа на языке программированияMATLAB) можно записать на диск. Для этого используется команда Save As, котораяприменяет стандартное окно Windows для записи файла с заданным именем.
После записи файла надиск можно заметить, что команда Run в меню Tools(Инструменты) редакторастановится активной (до записи файла на диск она пассивна) и позволяетпроизвести запуск файла. Запустив команду Run, можно наблюдать исполнение m-файла– в нашем случае это вычисление выражения 2 + 3 и построение рисунка с графикомсинусоидальной функции в графическом окне.
Для удобства работы средактором/отладчиком строки программы в нем нумеруются в последовательномпорядке. Редактор является многооконным. Окно каждой программы оформляется каквкладка. Редактор-отладчик позволяет легко просматривать значения переменных.Для этого достаточно подвести к имени переменной курсор мыши и задержать его –появится всплывающая подсказка с именем переменной и ее значением.
Цветовые выделения исинтаксический контроль
Редактор/отладчик m-файловвыполняет синтаксический контроль программного кода по мере ввода текста. Приэтом используются следующие цветовые выделения:
• ключевые слова языкапрограммирования – синий цвет;
• операторы, константы ипеременные – черный цвет;
• комментарии после знака% – зеленый цвет;
• символьные переменные(в апострофах) – зеленый цвет;
• синтаксические ошибки –красный цвет.
Благодаря цветовымвыделениям вероятность синтаксических ошибок резко снижается. Однако далеко невсе ошибки диагностируются. Ошибки, связанные с неверным применением операторовили функций (например, применение оператора – вместо + или функции cos(x)вместо sin(x) и т. д.), не способна обнаружить ни одна системапрограммирования. Устранение такого рода ошибок (их называют семантическими) –дело пользователя, отлаживающего свои алгоритмы и программы.
Панель инструментовредактора и отладчика
Редактор имеет свое менюи свою панель инструментов. Она представлена на рисунке. Назначение кнопокпанели инструментов редактора/отладчика (слева направо) следующее:
• New – создание новогоm-файла;
• Open – вывод окназагрузки файла;
• Save – запись файла надиск;
• Print – печатьсодержимого текущего окна редактора;
• Cut – вырезаниевыделенного фрагмента и перенос его в буфер;
• Copy – копированиевыделенного объекта в буфер;
• Paste – размещениефрагмента из буфера в позиции текстового курсора;
• Undo – отменапредшествующей операции;
• Redo – повторотмененной операции;
• Find text – нахождениеуказанного текста;
• Show function – показфункции;
• Set/Clear Breakpoint –установка/сброс точки прерывания;
• Clear All Breakpoints –сброс всех точек прерывания;
• Step – выполнение шагатрассировки;
• Step In – пошаговаятрассировка с заходом в вызываемые m-файлы;
• Step Out – пошаговаятрассировка без захода в вызываемые m-файлы;
• Save and Run – запись исохранение;
• Exit Debug Mode – выходиз режима отладки.
Заключение
В данной работепредставлена лишь малая часть возможностей MATLAB в связи с тем, что объем книгпо этой системе и пакетам ее расширения непрерывно растет, как и их стоимость.Достаточно отметить, что книги только по системе MATLAB 7.0 (без пакетоврасширения) учебного характера имеют объем более 1100 и более 750 страниц и,будучи ориентированными на профессионалов, выпущены в твердом переплетенебольшим тиражом.
Фирменная документация посистеме (англоязычная) представлена уже многими десятками книг. Она настолькоразрослась, что разработчики MATLAB были вынуждены прекратить поставки ее ввиде PDF-файлов на отдельном DVD и разместили ее на своем Интернет-сайте.Однако из-за большого объема ее файлов скачать документацию весьма проблематичнодаже для тех наших пользователей, которые имеют доступ в Интернет. Кроме того,вся фирменная документация англоязычная и труднодоступна для чтения и перевода,так как содержит огромное число специальных англоязычных терминов, переводкоторых отнюдь не прост и не тривиален.
Все это делает книги поMATLAB доступными лишь для малой части наших инженеров, научных работников,аспирантов, студентов и преподавателей университетов и вузов. Достаточноотметить, что стоимость всего одной книги среднего объема по системе MATLAB вРоссии составляет примерно трехмесячную выплату на приобретение литературы,предусмотренную в государственных вузах и университетах Российской Федерациидля преподавателей.
Такая мощная система, какMATLAB, должна быть отражена в книгах различного толка и стиля: справочниках,руководствах пользователя, учебных изданиях, монографиях и т. д. И автор многиегоды старался подготовить книги по MATLAB разного назначения и стиля.