Следует отметить, что набор входящих в список средств зависит от набора пакетов расширения, которыми располагает версия системы MATLAB, заказанная или полученная конкретным пользователем. Этот набор может заметно отличаться от приведенного. Кроме того, в MATLAB 6.0 для доступа к пакетам расширения может потребоваться указание пути к их файлам на диске в панели браузера файловой системы.
Справка по конкретному объекту
Для получения справки по какому-либо конкретному объекту используются команды
» help имя
или
» doc имя
где имя — имя объекта, для которого требуется вывод справочной информации. Мы уже приводили пример помощи по разделу операторов ops. Ниже дается пример для функции вычисления гиперболического синуса, намеренно введенной с неверным указанием имени:
» help hsln hsin.m
not found.
Нетрудно заметить, что система помощи сообщает, что для функции с именем hsin соответствующий m-файл отсутствует. Введем имя верно:
» help slnh
SINH Hyperbolic sine.
SINH(X) Is the hyperbolic sine of the elements of X.
Overloaded methods
help sym/slnh.m
Теперь полученное сообщение содержит информацию о функции slnh. Хотя имена функций в MATLAB задаются малыми (строчными) буквами, в сообщениях справочной системы имена функций и команд выделяются большими (прописными) буквами. Этот не слишком удачный прием использован для выделения заголовка текста справки в виде имени функции. В данной книге мы отказались от такого приема, вводящего начинающих пользователей в заблуждение.
Аналогичным образом можно получить справку по константам и другим объектам языка MATLAB. Ниже дан пример обращения к справке о числе п:
» help pi
PI 3.1415926535897
PI= 4*atan(1) = imagdog(-l)) = 3.1415926535897
При всей примитивности справки help надо отметить ее высокую эффективность. Особенно популярна интерактивная справка у пользователей, привыкших к работе с языками программирования, которые используются в среде операционной системы MS-DOS. Справка doc имя выводит более полную информацию в окне помощи в формате HTML.
Справка по группе объектов
Пользователя системы MATLAB часто интересует набор функций, команд или иных понятий, относящихся к определенной группе объектов. Выше были указаны имена основных групп объектов системы MATLAB. Ниже дан пример вызова справки по группе объектов timefun:
» help timefun
Time and dates.
Current date and time.
Now - Current date and time as date number.
Date - Current date as date string.
clock - Current date and time as date vector.
Basic functions.
datenum - Serial date number.
datestr - String representation of date.
datevec - Date components.
Date functions.
calendar - Calendar.
weekday - Day of week.
eomday - End of month.
datetick - Date formatted tick labels.
Timing functions.
cputime - CPU time in seconds.
tic. toe - Stop watch timer.
etime - Elapsed time.
pause - Wait in seconds.
После уточнения состава определенной группы объектов можно получить детальную справку по любому выбранному объекту. Как это делается, было описано выше.
Справка по ключевому слову
Ввиду обилия в системе MATLAB m-функций, число которых около 800, важное значение имеет поиск m-функций по ключевым словам. Для этого служит команда
lookfor Ключевое слово
или
lookfor 'Ключевые слова'
В первом случае ищутся все m-файлы, в заголовках которых встречается заданное ключевое слово, и заголовки обнаруженных файлов выводятся на экран. Следует отметить, что широкий поиск по одному ключевому слову может подчас привести к выводу многих десятков определений и длится довольно долго.
Для уточнения и сокращения зоны поиска следует использовать вторую форму команды lookfor. Вот пример ее применения:
» lookfor 'inverse sin'
ASIN Inverse sine.
ASIN Symbolic inverse sine.
В данном случае для поиска использованы слова ' inverse sin', т. е. задан поиск арксинуса. Система поиска нашла только два вида арксинуса ASIN — обычного и в символьной форме. Число найденных определений зависит от того, с каким числом пакетов прикладных программ (пакетов расширений) поставляется версия системы MATLAB.
В следующей главе мы рассмотрим гораздо более эффектные средства справочной системы, ориентированные на работу в стиле приложений операционных систем Windows 95/98/Me/2000/NT4 с графическим пользовательским интерфейсом.
Дополнительные справочные команды
В командном режиме можно получить справочные данные с помощью ряда команд:
· computer — выводит сообщение о типе компьютера, на котором установлена текущая версия MATLAB;
· help script — выводит сообщение о назначении m-файлов сценариев (Script-файлов);
· helрf unction — выводит сообщение о назначении и структуре m-файлов функций;
· info — выводит информацию о фирме Math Works с указанием адресов электронной почты;
· subscribe — позволяет создать файл с бланком регистрации;
· ver — выводит информацию о версиях установленной системы MATLAB и ее компонентов;
· version — выводит краткую информацию об установленной версии MATLAB,
· version -Java — выводит информацию об установленной в составе MATLAB версии Ява (Java);
· what — выводит имена файлов текущего каталога;
· what name — выводит имена файлов каталога, заданного именем name;
· whatsnew name — выводит на экран содержимое файлов readme заданного именем name класса для знакомства с последними изменениями в системе и в пакетах прикладных программ;
· which name — выводит путь доступа к функции с данным именем.
Как правило, эти команды выводят довольно обширные сообщения. Ниже показаны примеры применения отдельных команд этой группы:
» computer
ans=
PCWIN
» version
ans =
6.0.0.88 (R12)
» ver
MATLAB Version 6.0.0.88 (R12) on PCWIN MATLAB License Number: 0
MATLAB Toolbox Version 6.0 (R12) 06-0ct-2000
Simulink Version 4.0 (R12) 16-Jun-2000
Stateflow Version 4.0 (R12) 04-0ct-2000
Приведенный выше сокращенный список пакетов расширения системы MAT-LAB 6.0 дает весьма ценную информацию об их версиях и датах выпуска. Он свидетельствует о весьма существенном обновлении не только базовой системы MATLAB, но и стандартных пакетов расширения (toolbox). Более полный список пакетов расширения дан в уроке 23. Рекомендуем приобрести издание [44] для работы с Simulink и издание [39] для работы с пакетами расширения. В дальнейшем мы рассмотрим и другие команды, которые могут быть отнесены к группе дополнительных справочных команд.
Примеры, вызываемые из командной строки
Вызов списка демонстрационных примеров
Одним из самых эффективных методов знакомства со сложными математическими системами является ознакомление со встроенными примерами их применения.
Система MATLAB содержит многие сотни таких примеров — практически по примеру на каждый оператор или функцию. Наиболее поучительные примеры можно найти в разделе demos, исполнив команду
» help demos
Ниже представлен выводимый этой командой список примеров:
» help demos
Examples and demonstrations.
Type 'demo' at the command line to browse more demos of
MATLAB. the Toolboxes, and SIMULINK.
MATLAB/Introduction.
Demo - Browse demos for MATLAB. Toolboxes, and SIMULINK.
MATLAB/Matrices.
Intro - Introduction to basic matrix operations in MATLAB.
Inverter - Demonstrate the inversion of a matrix.
Buckydem - Connectivity graph of the Buckminster Fuller geodesic dome.
Sparsity - Demonstrate effect of sparsity orderings.
Matmanip - Introduction to matrix manipulation.
Eigmovie - Symmetric eigenvalue movie.
Rrefmovie - Computation of Reduced Row Echelon Form.
Delsqdemo - Finite difference Laplacian on various domains.
Sepdemo - Separators for a finite element mesh.
Airfoil - Display sparse matrix from NASA airfoil.
Eigshow - Graphical demonstration of matrix eigenvalues.
Svdshow - Graphical demonstration of matrix singular values.
MATLAB/Numerics.
Funfuns - Demonstrate functions that operate on other functions.
Fitdemo - Nonlinear curve fit with simplex algorithm.
Sunspots - FFT: the answer is 11.08, what .is the question?
e2pi - 2D visual solutions: Which is greater. e~pi or pi x e?
bench - MATLAB Benchmark.
Fftdemo - Use of the fast finite Fourier transform.
Census - Try to predict the US population in the year 2000.
spline2d - Demonstrate GINPUT and SPLINE in two dimensions.
Lotkademo - An example of ordinary differential equation solution.
Quaddemo - Adaptive quadrature.
Zerodemo - Zerofinding with fzero.
Fplotdemo - Plot a function.
Quake - Loma Prieta Earthquake.
Qhulldemo - Tessellation and interpolation of scattered data.
MATLAB/Visualization.
graf2d - 2D Plots: Demonstrate XY plots in MATLAB.
graf2d2 - 3D Plots: Demonstrate XYZ plots in MATLAB.
Grafcplx - Demonstrate complex function plots in MATLAB.
Lorenz - Plot the orbit around the Lorenz chaotic attractor.
Imageext - Image colormaps: changing and rotating colormaps.
Cmdlnwin - Demo gateway routine for playing command line demos.
Cmdlnbgn - Set up for command line demos.
Cmdlnend - Clean up after command line demos.
Finddemo - Find demos available for individual toolboxes.
Helpfun - Utility function for displaying help text conveniently.
Pltmat - Display a matrix in a figure window.
MATLAB/Helper functions.
Bucky - The graph of the Buckminster Fuller geodesic dome.
Peaks - A sample function of two variables.
Membrane - Generate MathWorks' logo.
See also SIMDEMOS
demos Is both a directory and a function.
DEMOS Demo list for the CDMA Reference Blockset.
Мы настоятельно рекомендуем пользователям системы MATLAB просмотреть с десяток примеров из интересующих их областей. Это займет от силы полчаса или даже меньше, но зато позволит оценить поистине неисчерпаемые возможности системы при решении сложных математических и физических задач, а также превосходные средства графической визуализации решений.
Пример — тест на быстродействие компьютера
Большинство пользователей, включая автора данной книги, очень ревниво относится к вычислительной мощности своего компьютера. Поэтому в качестве первого демонстрационного примера возьмем тест на сравнительную оценку скорости работы — bench. Исполнив команду » bench можно наблюдать исполнение комплексного теста по оценке быстродействия компьютера при работе с MATLAB. Его итоги представляются в виде столбцовой диаграммы и таблицы, которые показаны на рис. 4.1.
Увы, в тесте системы MATLAB 6.0 компьютер автора занял последнее место, хотя в тесте системы MATLAB 5.3.1 он занимал достаточно почетное место в середине списка. Однако это вовсе не говорит о снижении производительности данного конкретного компьютера в новой реализации MATLAB. На самом деле производительность даже немного возросла. Просто в новом примере изрядно морально постаревший за год компьютер автора сравнивается с более новыми компьютерами. Кстати, в этом тесте ПК автора переместился на куда более почетное шестое место сверху после замены процессора на Pentium III 600 и установки видеокарты с видеопамятью 32 Мбайта и поддержкой OpenGL.
Приведенные данные говорят о том, что вычислительная мощность современного персонального компьютера (теперь у автора компьютер с процессором Pentium III 600 МГц со 100-мегагерцовой шиной под управлением Windows 98) с системой MATLAB уже приближается к таковой для суперкомпьютеров недавнего прошлого. Новые суперкомпьютеры, разумеется, куда мощнее компьютера с процессором Pentium III и даже Pentium IV, но и для них MATLAB — одна из основных систем для выполнения математических расчетов.
Что больше — e ^ pi или pi ^ e?
Рассмотрим еще один простой пример, дающий ответ на сакраментальный вопрос о том, какое значение больше — e^pi или pi^e? Для запуска этого примера надо исполнить команду » e2pi и наблюдать красочное шоу — графики степенных функций х^у и у^х с построением на них линий заданных функций и оценкой их значений. Заключительный слайд этого примера показан на рис. 4.2.
Этот пример — наглядная демонстрация перехода от узких понятий к более широким. Разумеется, вы могли бы вместо приятного обозрения слайд-шоу просто вычислить соответствующие значения:
» e=exp(1)
e =
2.7183
» e ^ pi
ans =
23.1407
» pi^e
ans =
22.4592
Так можно легко убедиться в том, что все же е ^ рi больше, чем pi^e. Но тогда это означало бы, что вы просто технарь или физик-экспериментатор, а не истинный математик. Впрочем, у каждого есть свои взгляды на применение математики. И чьи лучше — вопрос весьма спорный.
Анимация в пространстве — аттрактор Лоренца
Современная трехмерная графика — одна из причин большой популярности системы MATLAB. В этом разделе мы не будем рассматривать конкретные реализации тех или иных видов трехмерной графики. Вы можете самостоятельно вывести на экран дисплея текст (листинг) любого файла примеров трехмерной графики с помощью команды type. Ограничимся лишь тремя примерами визуализации сложных математических задач, когда используется оживление изображений — анимация.
На рис. 4.3 показан пример визуализации динамического процесса в так называемом аттракторе Лоренца (пример lorenz) — колебательной системе, создающей хаотические и довольно замысловатые колебания. Наиболее наглядна их визуализация с помощью трехмерного фазового портрета колебаний, который приведен на рис. 4.3. К сожалению, на рис. 4.3 показана лишь завершающая стадия — на экране можно реально видеть движение образующей точки во времени и убедиться в своеобразной хаотичности колебаний. Для запуска анимации надо нажать кнопку Start (Пуск) окна графики.
Встроенные фигуры
MATLAB имеет ряд встроенных фигур, которые можно легко выводить на построение простым указанием их названия. Так, введя команду knot,можно задать построение сложной пространственной фигуры узла с функциональной окраской (рис. 4.4). При запуске этого примера нажатием кнопки Spinmap можно наблюдать изменение окраски, имитирующее как бы движение жидкости внутри замкнутой трубки, образующей данную фигуру.
Таким образом, можно сделать вывод о том, что для имитации и моделирования математических и физических задач система MATLAB предоставляет значительные графические возможности — от простейших графиков функций в декартовой системе координат до сложных анимационных графиков с динамической цветной функциональной окраской. Среди множества примеров такой графики всегда можно подобрать наиболее подходящие для решения конкретных задач пользователя, в какой бы области науки, техники или образования он ни работал.
В паутине нейронных сетей
Даже десятка таких книг, как эта, едва ли хватит для исчерпывающего описания системы MATLAB со всеми ее пакетами расширения. Пакетам расширения посвящена монография [39]. Многие из таких пакетов, например по нейронным сетям, сплайнам, обработке сигналов, проектированию систем управления и т. д., относятся к самым современным и актуальным направлениям науки и техники. Нередко создание таких пакетов для системы MATLAB возглавили основатели указанных научных направлений, и по каждому такому направлению опубликованы десятки научных монографий.
Примером одного из таких направлений является пакет Neural Networks (нейронные сети). Эти сети основаны на аналогии с ячейкой нашего мозга — нейроном. Важное свойство нейрона — возможность к самообучению и распознаванию различных образных представлений и сигналов. В разделе справочной системы Examples and Demos (Примеры и демо) имеется множество конкретных примеров применения нейронных сетей. На рис. 4.5 показан вид демонстрационной панели одного из этих примеров.
Вы имеете возможность задавать различные параметры нейронной сети, позволяющей распознать букву Т в ее искаженном изображении. Демонстрационная панель построена в виде виртуальной лаборатории и позволяет мышью менять вид образцов (вводя закрашенные квадратики) и оценивать погрешность и вероятность распознавания образа.
Просмотр текстов примеров и m-файлов
Хотя наблюдение за тем, как MATLAB расправляется со сложными примерами и задачами, само по себе довольно поучительно, жаждущие применить систему на деле пользователи, безусловно, захотят узнать, а как же конкретно реализовано решение той или иной задачи? Для этого вам достаточно просмотреть соответствующий демонстрационный (или любой другой) m-файл. Это можно сделать с помощью любого текстового редактора, редактора и отладчика m-файлов, встроенного в систему, или с помощью команды
type Имя_М-файла
Ниже представлена часть файла демонстрационного примера e2pi:
» type e2pi
function slide=e2pi
% This is a slideshow file for use with playshow.m and makeshow.m
% To see it run. type 'piayshow e2pi',
% ' Copyright 1984-2000 The MathWorks. Inc.
% SRevision: 5.12 $
If nargout<1.
playshow e2pi
else
%========== Slide 1 ==========
slide(l).code={
'x=0:0.16:5;'.
'y=0:0.16:5;'.
'[xx,yy]=meshgrid(x,y);',
'zz=xx.*yy-yy.~xx:',
'h=surf(x.y,zz):'.
'set(h,"EdgeColor".[0.7 0.7 0.7]);',
'view(20.50);',
'colormap(hsv);.' };
slide(l).text={
' Press the "Start" button to see an example of visualization'
' in MATLAB applied to the question:',
' "which is greater, e A pi or pi^e?"'};
Используя команду help, можно получить справку по любой конкретной функции или команде. Ввиду того что текст примера имеет довольно большой объем, мы ограничились приведением только его фрагмента, относящегося к первому слайду. Остальные слайды просто опущены — на их месте стоит многоточие.