Матричная математическая система MATLAB
Введение
Среди бурно развивающихся
систем компьютерной математики СКМ, в первую очередь ориентированных на
численные расчеты, особо выделяется матричная математическая система 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, Athlon
MP (последние версии MATLAB поддерживают двухъядерные (например серий Intel
Core 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 и выше или Microsoft
Internet 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. Оно имеет обычные средства управления
размерами, скрытия и закрытия. В окне командного режима показано окно About
MATLAB, которое выводится одноименной командой в позиции 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 <file_name>
on – включает режим вывода на экран текста Script-файла (файла-сценария);
• echo <file_name>
off – выключает режим вывода на экран текста
Script-файла;
• echo <file_name>
– меняет режим вывода на противоположный;
• 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 get
started, select "MATLAB Help" from the Help menu.
>> 2+3
ans =
5
>>
sin(1)
ans =
0.8415
>> type
sin
sin is a
built-in function.
>> help
sin
SIN Sine.
SIN(X) is the
sine of the elements of X.
Overloaded
methods
help sym/sin.m
>> V=[1
2 3 4]
V =
1 2
3 4
>>
sin(V)
ans =
0.8415 0.9093
0.1411 -0.7568
>> 3*V
ans =
3 6 9
12
>> V^2
??? Error
using ==> ^
Matrix must be
square.
>> 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, представляющий количественные данные. Числа можно считать
константами. Числа используются в общепринятом представлении о них. Они могут
быть целыми, дробными, с фиксированной и плавающей точкой. Возможно представление
чисел в хорошо известном научном формате с указанием мантиссы и порядка числа.
Ниже приводятся примеры представления действительных чисел:
0
-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 my
friend!'
'Привет'
'2+3'
Если в апострофы помещено
математическое выражение, то оно не вычисляется и рассматривается просто как
цепочка символов. Так что '2+3' не будет возвращать число 5. Однако с помощью
специальных функций преобразования символьные выражения могут быть преобразованы
в вычисляемые.
Текстовые комментарии в
программах
Поскольку MATLAB
используется для достаточно сложных вычислений, важное значение имеет
наглядность их описания. Она достигается, в частности, с помощью текстовых
комментариев. Текстовые комментарии в программах вводятся с помощью символа %,
например так:
% It is factorial
function
В новых версиях 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
>> clear
V
>> V
??? Undefined
function or variable 'V'.
>> clear
>> x
??? Undefined
function or variable 'x'.
>> M
??? Undefined
function or variable 'M'.
Обратите внимание на то,
что сначала выборочно стерта переменная V, а затем командой clear без
параметров стерты все остальные переменные.
Неопределенные переменные
используются при выполнении символьных вычислений. Специально система MATLAB
для выполнения таких вычислений не предназначена. Однако они возможны с помощью
пакета расширения символьной математики Symbolic Math.
Операторы и встроенные
функции MATLAB
Оператор – это
специальное обозначение для определенной операции над данными – операндами.
Например, простейшими арифметическими операторами являются знаки суммы +,
вычитания -, умножения * и деления /. Операторы используются совместно с
операндами. Например, в выражении 2+3 знак + является оператором сложения, а
числа 2 и 3 – операндами. Операторы также являются распространенными объектами
математических выражений и языков программирования.
Следует отметить, что
большинство операторов относятся к матричным операциям, что может служить
причиной серьезных недоразумений. Например, операторы умножения * и деления /
вычисляют произведение и частное от деления двух массивов, векторов или матриц.
Есть ряд специальных операторов, например оператор \ означает деление справа
налево, а операторы .* и ./ означают, соответственно, поэлементное умножение и
поэлементное деление массивов.
Следующие примеры
поясняют сказанное на примере операций с векторами:
>> V1=[2
4 6 8]
V1 = 2
4 6 8
>> V2=[1
2 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.
Приведем начало обширного
полного списка операторов, содержащего арифметические операторы:
>> help
ops
Operators and
special characters.
Arithmetic
operators.
Plus – Plus +
Uplus – Unary
plus +
Minus – Minus –
Uminus – Unary
minus –
Mtimes –
Matrix multiply *
times – Array
multiply .*
mpower –
Matrix power ^
power – Array
power .^
mldivide –
Backslash or left matrix divide \
mrdivide –
Slash or right matrix divide /
ldivide – Left
array 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.000
0.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.000
0.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.
Впрочем, и тут без
особенностей не обошлось. Так, при 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.938
0.242 0.030 0.002 0.0002 0.0000
А в следующем примере
вычислено шесть значений функции Бесселя нулевого порядка для значений
аргумента от 0 до 5 с шагом 1:
>> bessel(0,0:1:5)
ans = 1.0000
0.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 =
Inline
function:
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 вывести листинг созданной функции:
>> type
sc2
function
y=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.
Система сообщит об ошибке:
??? Undefined
function or variable 'sqr'.
Это сообщение говорит о
том, что не определена переменная или функция, и указывает, какая именно, –
sqr. В данном случае, разумеется, можно просто набрать правильное выражение.
Однако в случае громоздкого выражения лучше воспользоваться редактором. Для
этого достаточно нажать клавишу ↓ для перелистывания предыдущих строк. В
результате в строке ввода появится выражение
>> sqr(2)
с курсором в его конце. В
MATLAB можно теперь нажать клавишу Tab. Система введет подсказку, анализируя
уже введенные символы. Из предложенных системой трех операторов выбираем sqrt.
Теперь c помощью клавиши ↓ вновь выбираем нужную строку и,
пользуясь клавишей ←, устанавливаем курсор после буквы r. Теперь нажмем
клавишу T, а затем клавишу ENTER. Выражение примет следующий вид:
>> sqrt(2)
ans = 1.4142
Если бы был только один
вариант окончания введенных символов, то после нажатия клавиши Tab система бы
закончила наш ввод без перевода строки.
Вычисления дают ожидаемый
результат – значение квадратного корня из двух.
В системе MATLAB внешние
определения используются точно так же, как и встроенные функции и операторы.
Никаких дополнительных указаний на их применение делать не надо. Достаточно
лишь позаботиться о том, чтобы используемые определения действительно
существовали в виде файлов с расширением .m.
Впрочем, если вы забудете
об этом или введете имя несуществующего определения, то система отреагирует на
это звуковым сигналом (звонком) и выводом сообщения об ошибке:
>>
hsin(1)
??? Undefined
function 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 by
Zero.» («Внимание: деление на нуль»). Диапазон чисел, представимых в системе,
лежит от 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+32
A+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 справки или
выполнив команду:
>> help
demos
Examples and
demonstrations.
Type 'demo' at
the command line to browse more demos of
MATLAB, the
Toolboxes, and Simulink.
demo – Run
demonstrations.
Mathematics.
intro – Basic
Matrix 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=[1
2 3 4 5];
>>
M=magic(4);
>> who
Your variables
are:
M V x
>> whos
Name Size
Bytes Class
M 4x4 128
double array
V 1x5 40
double array
X 1x1 8 double
array
Grand total is
22 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 Internet
Explorer, и не всегда работоспособна. Возможно, поэтому она удалена в новых
реализациях MATLAB. Работа с позицией Window вполне очевидна, а позиция Help
открывает доступ к справке. Отметим особенности работы трех первых позиций меню
системы MATLAB любой версии.
Меню File
Меню File содержит ряд
операций и команд для работы с файлами:
• New – открытие подменю
с позициями:
• M_file – открытие окна
редактора/отладчика m-файлов;
• Figure – открытие
пустого окна графики;
• Model – открытие
пустого окна для создания Simulink-модели;
• GUI – открытие окна
разработки элементов графического интерфейса
пользователя;
• Deployment Project –
открытие окна разработки;
• Open – открытие окна
загрузки файла;
• Close Command Windows –
закрытие окна командного режима работы (оно при этом исчезает с экрана);
• 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 Command
Window очищает окно командного режима работы и помещает курсор в верхний левый
угол окна. Однако все определения, сделанные в течение стертых таким образом
сессий, сохраняются в памяти компьютера. Напомним, что для очистки экрана
используется также команда 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 разного назначения и стиля.