Система математических расчетов MATLAB
p align="left">* Не обязательной группы операторов, начинающихся словом otherwise; эта группа обраба-тывается, если значение выражения не было перехвачено каким-либо предшествующим бло-ком с case. Обработка группы операторов за словом otherwise прекращается на команде end.* Заключительной команды end. Блок с командой switch работает путем сравнения входного выражения, которе может быть численным скаляром или строкой символов, с каждым значением ключей case. В случае чис-ленных выражений выполняется какой-либо (первый) блок, если справедливо логическое ра-венство значение == выражение. При выражениях в виде строки символов, блок выполня-ется, если истинно выражение strcmp(значение,выражение) (команда strcmp осуществляет логическое сравнение строк символов) . Приведенный ниже код дает простой пример использования команды switch. Он проверяет переменную input_num и сравнивает ее с заданными числами. Если значения input_num равны -1, 0, или 1, команды case производят вывод значений на экран в виде текста. Если переменная input_num не равна не одному из указанных значений, выполнение переходит к строке otherwise и программа выводит на экран текст 'other value' («другое значение»). switch input_num case -1 disp('negative one'); case 0 disp('zero'); case 1 disp('positive one'); otherwise disp('other value'); end Внимание ! В отличие от соответствующих операторов языка C, оператор switch в MATLAB-е «доходит» только до первого оператора case, который удовлетворяет заданному входному выражению; остальные операторы case при этом не проверяются. Команда switch позволяет оперировать с несколькими условиями при одном операторе case, путем заключения данных условий в фигурные скобки, то есть при их записи в виде массива ячеек. Соответствующий пример приводится ниже switch var case 1 disp('1') case {2,3,4} disp('2 or 3 or 4') case 5 disp('5') otherwise disp('something else') end Команда while Циклы с командой while обрабатывают оператор или группу операторов, находящихся в теле цикла, до тех пор, пока истинно проверяемой логическое условие при данной команде. Иными словами, операторы внутри цикла могут выполнться любое неопределенное заранее число раз. Ее синтаксис в общем случае имеет вид while expression statements end Если логическое выражение expression имеет матричный вид, то для продолжения выполне-ния цикла все его элементы должны быть истинными, то есть равны логической единице. Чтобы привести матричное условие к скалярному, следует воспользоваться функциями all и any. Например, следующий цикл находит первое целое число n, для которого факториал n! является 100-значным числом n = 1; while prod(1:n) < 1e100 n = n + 1; end Для выхода из петли while в любой момент нужно применить в теле цикла команду break. При этом, естественно, следует сформировать соответствующее логическое условие выхода из цикла. Команда while и пустые массивы Если условие при while сводится к пустому массиву, то оно соответствует ложному выраже-нию, то есть последовательность команд while A S1; end никогда не выполнит оператор S1 если A есть пустой массив. Команда for Цикл с командой for обрабатывает оператор или группу опреаторов заранее заданное число раз. Ее синтаксис имеет вид for index = start:increment:end statements end где index - является изменяемым целочисленным индексом с начальным и конечным значе-ниями start и end и приращением increment. По умолчанию, приращение равно 1, но вы мо-жете задать любое приращение, включая и отрицательное. При положительных индексах, выполнение прекращается когда значение индекса превышает конечное значение end; при отрицательных приращениях выполнение прекращается когда индекс становится меньше конечного значения. Например, следующий цикл выполняется пять раз. for i = 2:6 x(i) = 2*x (i-1); end Вы можете использовать вложенные циклы с комндой for: for i = 1:m for j = 1:n A (i, j) = 1/(i + j - 1) ; end end Внимание ! Вы можете зачастую ускорить выполнение кодов в MATLAB-е путем замены циклов с for и while векторизованными кодами (см. ниже). Использование в качестве индексов массивов Индексы команды for могут быть массивом значений. Например, рассмотрим массив А раз-мера m х n . Выражение for i = A statements end приравнивает индекс I вектору A(: , k). При первой итерации значение k равно 1; при второй итерации k равно 2 , и так до тех пор, пока k не становится равным n. Иными словами, цикл повторяется n раз, где n есть число столбцов в A. При этом, при каждой итерации индекс i является вектром, содержащим один из столбцов матрицы A. Команда continue Команда continue передает управление следующей итерации в циклах for или while, что приводит к перескакиванию через все оставшиеся операторы в теле цикла. В случае вложен-ных циклов, команда continue передает управление к следующей итерации внешних по отно-шению к данному циклу команд for или while , то есть пропускаются только оставшиеся опе-раторы данного внутреннего цикла. Для применения данной команды нужно сформировать соответствующее логическое условие. Команда break Команда break прекращает выполнение циклов, образованных командами for или while. Ко-гда в теле цикла встречается данная команда, дальнейшее выполнение происходит начиная со следующей строки вне данного цикла. Во вложенных циклах, команда break приводит к выходу только из внутреннего цикла. Команды try ... catch Общая форма последовательности команд try ... catch имеет вид try statement, ..., statement, catch, statement, ..., statement, end В данной последовательности выполняются операторы между командами try и catch до тех пор, пока не происходи какая-либо ошибка вычислений. Тогда управление передается («пе-рехватывается») последовательносью операторов между командами catch и end. Для того чтобы узнать причину, приведшую к ошибке, можно воспользоваться комндой lasterr (пос-ледняя ошибка). Если ошибка случается между командами catch и end, то MATLAB прек-ращает вычисления, если только между предыдущими командами catch и end не установле-на другая последовательность команд try ... catch. Команда return Команда return прекращает выполнение текущей последвательности команд и возвращает управление в вызывающую функцию (то есть «родительскую» функцию, из которой была вызвана текущая функция) или же возвращает управление к клавиатуре. Команда return так-же приводит к окончанию режима keyboard (последняя команда, когда встречается в теле программы, передает управление клавиатуре; она часто используется при отладке програм-мы). При обычных условиях работы вызванная функция передает управление в вызываю-щую функцию когда первая выполнена полностью, то есть до конца. Команда return может быть включена в тело вызываемой функции для того чтобы прекратить ее исполнение при выполнении определенных условий. Подфункции М-функции могут содержать коды более чем одной функции. Первая функция в файле являе-тся главной функцией (primary function), которая имеет имя самого М-файла. Дополнитель-ные функции в пределах данного файла являются подфункциями (subfunctions), которые «ви-дны» (то есть могут быть вызваны) только для главной функции или других подфункций то-го же файла. Каждая подфункция начинается со своей линии определения. Все подфункции следуют непосредственно друг за другом. Порядок следования различных подфункций не имеет никакого значения, при этом главная функция должна быть обязательно записана пер-вой. Например, function [avg,med] = newstats(u) % Главная функция % NEWSTATS Находит среднее значение и медиану при помощи внутренних % подфункций. n = length(u); avg = mean(u,n); med = median(u,n); function a = mean(v,n) % Подфункция % Находит среднее значение. a = sum(v)/n; function m = median(v,n) % Подфункция % Находит медиану. w = sort(v); if rem(n,2) == 1 m = w((n+1)/2); else m = (w(n/2)+w(n/2+1))/2; end Подфункции mean и median вычисляют среднее значение и медиану входных данных. Глав-ная функция newstats находит длину входного вектора данных и вызывает подфункции, пе-редавая им данные длины n. Функции в пределах одного и того же файла не имеют общего доступа к каким-либо переменным, если только вы не объявите эти переменные глобальными или же не передадите их в виде аргументов в соответствующие подфункции, как это реализовано в приведенном выше примере. Кроме того, все средства помощи («help») име-ют доступ только к главной функции в М-файле. Когда вы вызываете какую-либо функцию из М-файла, MATLAB прежде всего проверяет, не является ли данная функция подфункци-ей. Затем проверяется, не является ли данная функция частной функцией (private function), описанной в следующем разделе, и далее ищутся стандартные М-файлы на путях доступа MATLAB . Поскольку подфункции проверяются первыми, вы можете «подавить» вызов лю-бого существующего М-файла путем применения подфункций с тем же именем, как, напри-мер, мы имели в примере с функцией mean. Вместе с тем, в пределах одного М-файла все подфункции должны иметь разные индивидуальные имена. Частные функции Частные функции являются функциями, которые находятся в подкаталоге со специальным именем private (частный). Они видны, то есть могут быть вызваны, только из функций в пре-делах родительского каталога. Например, допустим, что каталог newmath находится на пу-тях доступа MATLAB-а. Подкаталог в данной директории newmath, названный private, со-держит только функции, которые могут быть вызваны из каталога newmath. Поскольку ча-стные функции являются невидимыми вне пределов родительского каталога, они могут ис-пользовать имена, совпадающие с именами функций в других каталогах. Это свойство быва-ет полезным, если вы хотите создать свою версию какой-либо конкретной функции, сохраняя в то же время оригинальную функцию в другом каталоге. Так как MATLAB ищет среди част-ных функций прежде чем перейти к поиску в остальных каталогах, он всегда найдет частную функцию, например с именем test.m, раньше чем любую другую М-функцию, названную тем же именем test.m, но расположенную в других каталогах. Вы можете создавать свои частные директории просто путем создания стандартных подкаталогов, названных private. При этом не следует помещать директории private на ваших путях доступа. Приложение 1. Тематические направления системы MATLAB 1. matlab\general - Команды общего назначения 2. matlab\ops - Операторы и специальные символы 3. matlab\lang - Конструкции языка и функции отладки 4. matlab\elmat - Элементарные матрицы и операции на ними 5. matlab\elfun - Элементарные математические функции 6. matlab\specfun - Специальные математические функции 7. matlab\matfun - Матричные функции и линейная алгебра 8. matlab\datafun - Анализ данных и преобразование Фурье 9. matlab\audio - Поддержка звуковых сигналов 10. matlab\polyfun - Полиномы и интерполяция 11. matlab\funfun - Нелинейные численные методы и решатели обыкновенных дифференциальных уравнений (ODE solvers) 12. matlab\sparfun - Разреженные матрицы 13. matlab\graph2d - Двумерная графика 14. matlab\graph3d - Трехмерная графика 15. matlab\specgraph - Специальная графика 16. matlab\graphics - Дескрипторная графика (Handle Graphics) 17. matlab\uitools - Инструменты графического интерфейса пользователя (Graphical User Interface (GUI)) 18. matlab\strfun - Функции обработки символьных строк 19. matlab\iofun - Функции ввода/вывода 20. matlab\timefun - Функции времени и даты 21. matlab\datatypes - Типы данных и структуры 22. matlab\verctrl - Выбор версии 23. matlab\winfun - Интерфейс с операционной системой Windows (DDE/ActiveX) 24. matlab\demos - Демонстрации и примеры возможностей системы MATLAB 25. toolbox\local - Выбор характеристик (Preferences) 26. simulink\simulink - Система моделирования Simulink 27. simulink\blocks - Библиотека блоков (моделей) Simulink 28. simulink\simdemos - Демонстрация и примеры системы Simulink 4 29. simdemos\aerospace - Simulink: Демонстрация и примеры космических моделей 30. simdemos\automotive - Simulink: Демонстрация моделей САУ 31. simdemos\simfeatures - Simulink: Демонстрация основных свойств 32. simdemos\simgeneral - Simulink: Демонстрация примеров общих моделей 33. simdemos\simnew - Simulink: Демонстрация новых свойств 34. simulink\dee - Редактор дифференциальных уравнений 35. stateflow\stateflow - Система моделирования событий Stateflow 36. stateflow\sfdemos - Демонстрации возможностей и примеры Stateflow 37. stateflow\coder - Кодирующее устройство системы Stateflow 38. rtw\rtw - Моделирование систем реального времени Real-Time Workshop 39. rtw\rtwdemos - Демонстрация возможностей системы Real-Time Workshop 40. cdma\cdma - Библиотека моделей системы Simulink для систем коммуникации (CDMA Reference Blockset) 41. cdma\cdmamasks - Функции поддержки моделей CDMA 42. cdma\cdmamex - S-функции (S-Functions) системы CDMA 43. cdma\cdmademos - Демонстрации и примеры системы CDMA 44. commblks\commblks - Библиотека моделей устройств связи и коммуникации (Communications Blockset) 45. commblks\commmasks - Функции поддержки моделей Communications Blockset 46. commblks\commmex - S-функции библиотеки Communications Blockset 47. commblks\commblksdemos - Демонстрации библиотеки Communications Blockset 48. comm\comm - Системы связи и коммуникации (Communications Toolbox) 49. comm\commdemos- Демонстрация возможностей пакета Communications Toolbox 50. control\control - Системы управления (Control System Toolbox) 51. control\ctrldemos - Демонстрации возможностей Control System Toolbox 52. dspblks\dspblks - Библиотека для цифровой обработки сигналов (DSP Blockset) 53. dspblks\dspmasks - Функции поддержки моделей DSP Blockset 54. dspblks\dspmex - S-функции и МЕХ-файлы библиотеки DSP Blockset 55. dspblks\dspdemos - Демонстрации и примеры библиотеки DSP Blockset 56. daq\daq - Сбор данных в режиме реального времени (Data Acquisition Toolbox) 57. daq\daqdemos - Демонстрации и примеры пакета Data Acquisition Toolbox 58. database\database - Работа с базами данных (Database Toolbox) 59. database\dbdemos - Демонстрации возможностей пакета Database Toolbox 60. datafeed\datafeed - Пакет сбора финансовой информации (Datafeed Toolbox) 61. toolbox\dials - Интерфейс поддержки моделей Simulink ( Dials & Gauges Blockset) 62. filterdesign\filterdesign - Проектирование фильтров (Filter Design Toolbox) 63. ffilterdesign\filtdesdemos - Демонстрации пакета Filter Design Toolbox 64. finderiv\finderiv - Расширение возможностей пакета Financial Toolbox (Financial Derivatives Toolbox) 65. ftseries\ftseries - Временной анализ финансового рынка (Financial Time Series Toolbox) 66. finance\finance - Финансы (Financial Toolbox) 67. finance\calendar - Функции времени и даты пакета Financial Toolbox 68. finance\findemos - Демонстрации возможностей пакета Financial Toolbox 69. toolbox\fixpoint - Библиотека для моделирования с конечной разрядностью (Fixed-Point Blockset) 70. fixpoint\fxpdemos - Демонстрации библиотеки Fixed-Point Blockset 71. fuzzy\fuzzy - Размытые множества (Fuzzy Logic Toolbox) 72. fuzzy\fuzdemos - Демонстрации возможностей пакета Fuzzy Logic Toolbox 73. images\images - Обработка изображений (Image Processing Toolbox) 74. images\imdemos - Демонстрации и примеры пакета Image Processing Toolbox 75. instrument\instrument - Связь (поддержка интерфейса с аппаратурой пользователя) (Instrument Control Toolbox) 76. lmi\lmictrl Приложения пакета LMI Control Toolbox в управлении 77. lmi\lmilab - Синтез систем управления на основе линейных матричных неравенств (LMI Control Toolbox) 78. toolbox\compiler - Компилятор системы MATLAB (MATLAB Compiler) 79. map\map - Картография (Mapping Toolbox) 80. mpc\mpccmds - Системы управления с эталонной моделью (Model Predictive Control Toolbox) 81. mpc\mpcdemos - Демонстрации пакета Model Predictive Control Toolbox 82. mutools\commands - м-анализ и синтез систем управления (Mu-Analysis and Synthesis Toolbox) 83. nnet\nnet - Нейронные сети (Neural Network Toolbox) 84. nnet\nndemos - Демонстрации возможностей пакета Neural Network 85. toolbox\ncd - Проектирование нелинейных систем управления (Nonlinear Control Design Blockset) 86. toolbox\optim - Оптимизация (Optimization Toolbox) 87. toolbox\pde - Дифференциальные уравнения в частных производных и метод конечных элементов (Partial Differential Equation Toolbox) 88. powersys\powersys - Моделирование энергетических систем (Power System Blockset) 89. powersys\powerdemo - Демонстрации моделей Power System Blockset 90. targets\ecoder - Создание пользовательских программ на основе моделей Simulink (Real-Time Workshop Embedded Coder) 91. toolbox\robust - Синтез робастных систем управления (Robust Control Toolbox) 92. signal\signal - Обработка сигналов (Signal Processing Toolbox) 93. signal\sigdemos - Демонстрации возможностей пакета Signal Processing Toolbox 94. toolbox\splines - Сплайн-аппроксимация (Spline Toolbox) 95. toolbox\stats - Статистика (Statistics Toolbox) 96. toolbox\symbolic - Символьная математика (Symbolic Math Toolbox) 97. ident\ident - Идентификация параметров систем управления (System Identification Toolbox) 98. wavelet\wavelet - Импульсная декомпозиция сигналов и изображений (Wavelet Toolbox) 99. wavelet\wavedemo - Демонстрация возможностей пакета Wavelet Toolbox 100. xpc\xpc - Пакет макетирования и контроля систем реального времени (xPC Target) 101. xpc\xpcdemos - Демонстрации возможностей пакета xPC Target Примечание. Нзвание каждого тематического направления определяет соответствую-щую директорию (каталог) системы MATLAB. Приложение 2. Команды общего назначения (General purpose commands) Директория - matlab\general Общая информация (General information) 1. help - Оперативная справка, выводит текст в командную строку. 2. helpwin - Оперативная справка, выводит информацию в специальном окне (help browser). 3. helpdesk - Исчерпывающая информация в рабочем окне помощи. 4. support - Открывает Web-страницу технической помощи фирмы MathWorks. 5. demo - Выполняет демонстрационные ролики. 6. java - Использование средств Java из MATLAB-а. 7. ver - Информация о версиях MATLAB-а, SIMULINK-а и прикладных пакетов. 8. whatsnew - Вызов информации о новых свойствах версий. Управление рабочим пространством ( Managing the workspace) 9. who - Выводит в командное окно список текущих переменных. 10. whos - Выводит в командное окно список текущих переменных в длинном формате, с указанием размеров, числа байтов и классов. 11. workspace - Вызывает Окно Просмотра Рабочего Пространства (Workspace Browser), т.е.специальный Графический Интерфейс Пользователя (GUI) для выполнения действий с переменными рабочего пространства. 12. clear - Удаляет переменные и функции из памяти. 13. pack - Дефрагментация рабочей области памяти. 14. load - Загрузка переменных в рабочее пространство из диска. 15. save - Сохранение переменных рабочего пространства на диск. 16. quit - Прекращение сеанса работы системы MATLAB. Управляющие команды и функции (Managing commands and functions) 17. what - Выводит список файлов MATLAB-а в текущей директории в командное окно. 18. type - Печатает содержимое заданного М.-файла в командном окне. 19. edit - Вызывает окно Редактора/Отладчика. 20. open - Открывает файлы по расширению. 21. which - Локализирует (выводит в командное окно) путь доступа к функциям и файлам. 22. pcode - Создает Р-файл псевдокода с выполнением грамматического анализа. 23. inmem - Выводит список функций в памяти. 24. mex - Компилирует МЕХ-файлы. Управление путями доступа (Managing the search path)25. path - Вывод/изменение путей доступа.26. addpath - Прибавляет директорию к путям доступа.27. rmpath - Удаляет директорию из путей доступа .28. pathtool - Модифицирует пути доступа.29. rehash - Управление кеш-памятью.30. import - Импортирование пакетов Java в текущую область. Управление командным окном (Controlling the command window)31. echo - Вывод в командное окно исполняемых в М-файлах команд.32. more - Управление постраничным выводом информации на экран.33. diary - Сохранение записи (дневника) сеанса работы системы MATLAB .34. format - Контроль формата вывода данных на экран.35. beep - Производит звуковой сигнал (beep). Команды операционной системы (Operating system commands)36. cd - Изменить текущей директории.37. copyfile - Копировать файла.38. pwd - Показать (напечатать) текущую рабочую директорию.39. dir - Вывод на экран листинга каталога.40. delete - Удалить файл.41. getenv - Получение значения переменной из внешней операционной среды.42. mkdir - Создать директорию.43. ! - Выполнить команды операционной системы.44. dos - Выполнить команду DOS и вернуть результат.45. unix - Выполнить команду UNIX и вернуть результат.46. vms - Выполнить команду VMS DCL и вернуть результат.47. web - Вызвать Web browser.48. computer - Выдать тип компьютера.49. isunix - Истинно, если установлена UNIX-версия MATLAB-а.50. ispc - Истинно, если установлена PC (Windows)-версия MATLAB-а. Отладка М-файлов ( Debugging M-files)51. debug - Вывести список команд отладки и редактирования файлов.52. dbstop - Установить точку останова (контральнуюточку).53. dbclear - Удалить контрольную точку.54. dbcont - Продолжить выполнение.55. dbdown - Переход между рабочими пространствами редактируемых функций сверху вниз.56. dbstack - Вывести в командное окно стек вызываемых функций.57. dbstatus - Вывести список всех контрольных точек.58. dbstep - Выполнить одну или более строк.59. dbtype - Напечатать в командном окне редактируемый файл с указанием номеров строк.60. dbup - Переход между рабочими пространствами редактируемых функций снизу вверх.61. dbquit - Выход из режима отладки.62. dbmex - Отладка MEX-файлов (только для системы UNIX). Профилировщик М-файлов (Profiling M-files)63. profile - Измерить и вывести на экран временные затраты при выполнении файла 64. profreport - Сформировать отчет о профилировании файла. Функции для определения местонахождения зависимых функций М-файла (Tools to locate dependent functions of an M-file).65. depfun - Определить местонахождение функций, от которых зависит М-файл.66. depdir - Определить местонахождение директории, гдерасположены функции, от которых зависит М-файл.67. inmem - Вывести в командное окно список функций в памяти.Приложение 3. Операторы и специальные символыДиректория - matlab\ general Арифметические операторы (Arithmetic operators)1. plus - Plus + - Сложение.2. uplus - Unary plus + - Унарное сложение. 3. minus - Minus - - Вычитание. 4. uminus - Unary minus - - Унарное вычитание.5. mtimes - Matrix multiply * - Умножение матриц.
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
|