Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Лабораторная работа №2. Скрипты и функции в MATLABСодержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте Теоретическая часть М-файлы М-файл – это текстовый файл, содержащий инструкции языка MATLAB, с расширением.m. Для вызова М-файла достаточно записать в окне команд MATLAB (или в другом М-файле) его имя без расширения. Создать М-файл можно в любом текстовом редакторе, но предпочтительней использовать встроенный редактор MATLAB. Чтобы его вызвать, надо воспользоваться пунктом File главного меню MATLAB; например, для создания File /New/M-file. Для открытия существующего М-файла также можно ввести команду: edit имя_файла (без расширения). Для закрытия М-файла надо воспользоваться командой главного меню окна редактора File/Save имя_файла. Существует два вида М-файлов: скрипты и функции. Их мы рассмотрим в следующих параграфах. Скрипты Скрипты – это простейшие М-файлы. Они имеют с командным окном (или с вызвавшим скрипт М-файлом) общее рабочее пространство переменных. При вызове скрипта просто выполняются содержащиеся в нем команды. Например, создадим текстовый файл z2_5_2.m, содержащий команды s=sum(a'); k=length(find(s>0)); Тогда из командного окна с помощью инструкции >> z2_5_2 мы вычислим число строк матрицы а с положительной суммой элементов. Функции Функции – это подпрограммы языка MATLAB. Общий вид функции: function [ СписокВыхода ]= ИмяФункции (СписокВхода) % комментарии исполняемые операторы Первая строка, начинающаяся с ключевого слова functionявляется заголовком функции. СписокВхода и СписокВыхода – это списки входных и выходных формальных параметров; элементы списков перечисляются через запятую. В отличие от Паскаля, функция MATLAB может иметь несколько выходных значений, и поэтому нет необходимости в процедурах общего назначения. Если выходной параметр один, то его можно не заключать в квадратные скобки. После заголовка идут строки комментариев. Как во всех алгоритмических языках, комментарии не обрабатываются транслятором, а используются для пояснения программы. В языке MATLAB комментарием считается текст от символа % до конца строки. Комментарии, которые стоят между заголовком функции MATLAB и первой пустой или исполняемой строкой, выводятся как информационный текст при вызове команды Исполняемые операторызаписываются как обычно при кодировании алгоритма. Текст функции хранится в М-файле, причем имя файла (без расширения) должно совпадать с именем функции. Функция имеет собственное рабочее пространство переменных, независимое от пространства рабочего окна или вызвавшего функцию М-файла (базового пространства или базовой рабочей области). Вызов функции осуществляется инструкцией: [ СписокВыхода ]= ИмяФункции (СписокВхода), в которой участвуют списки фактических параметров, т. е. переменных базовой рабочей области. Пример 2. Функция sumk определяет сумму каждой строки произвольной матрицы а и число ее строк с положительной суммой: function [s,k]=sumk(a) % s-sums of rows, k- number of positive sums s=sum(a');% calculate sums k=length(find(s>0));%calculate number of positive sums Текст функции должен быть сохранен в файле sumk.m. Тогда операторы, набранные в командном окне: [sa,ka]=sumk(a); [sb,kb]=sumk(b); обеспечат вычисление sa (sb) – массива сумм строк матрицы a (b), и ka (kb) числа положительных значений среди этих сумм. Глобальные переменные Память функции отделена от рабочей области, из которой вызывается функция (базовой рабочей области). При обращении к функции осуществляется копирование данных из базовой рабочей области в рабочую область функции. Студенты, знающие Паскаль, должны ответить на вопрос: какие переменные передаются по ссылке, а какие по значению? При необходимости использования функцией данных базовой рабочей области без пересылок данных следует воспользоваться описателем global. Глобальные переменные должны объявляться как в функции, так и в базовой рабочей области. Чтобы отличать их от других переменных, принято именовать их большими буквами, но это правило не является обязательным. Пример 3. Функция function h=falling(t) global GRAVITY h=1/2*GRAVITY*t.^2; может быть вызвана следующими командами: global GRAVITY GRAVITY=9.8; y=falling(0.1:0.1:1); Ответьте на вопрос: в каких ситуациях оправдано использование глобальных переменных? Для удаления глобальной переменной из рабочей области используется команда clear global имя_переменной. Отладка М-файлов Встроенный редактор М-файлов является также и отладчиком (Editor/Debugger). Приемы отладки такие же, как в Паскале. Рассмотрим минимальный набор средств отладки. Установка (снятие) точек прерывания осуществляется следующими способами: · щелчком на полосе точек отладки (см. рис. 2.1) возле оператора, на котором необходимо сделать прерывание; · командой Breakpoints/Set (Clear) Breakpoints (курсор должен стоять на нужном операторе); · клавишей F12; · кнопками панели инструментов. Активные точки отладки имеют красный цвет, неактивные серый. Причиной неактивности точек отладки может быть наличие синтаксических ошибок в М-файле или несохранение последней версии файла.
Step – пооператорное выполнение М-файла, вызов функции считается одним оператором (аналогично Trace в Delphi); Step In – пооператорное выполнение М-файла c заходом в функции (аналогично Trace Into в Delphi); Step Out – после захода в функцию выполнение ее до конца и после выхода из функции пауза; Continue – выполнение М-файла до его конца или до следующей точки прерывания. Просмотр значений переменных во время паузы может осуществляться следующими способами: · установкой курсора слева от переменной в окне редактора/отладчика, при этом на несколько секунд появится небольшой прямоугольник с ее текущим значением; · оцениванием выделенного выражения; после выделения вызвать контекстное меню или выбрать пункт Evaluate Selection; · использованием редактора массивов рабочей области функции; для входа в редактор сделать щелчок мышью на пиктограмме интересующей переменной в рабочей области функции; нужная рабочая область выбирается из раскрывающегося списка Stack; · просмотром значения в командном окне; в процессе отладки приглашение в командном окне изменит свой вид с «>>» на «K>>»; после приглашения достаточно ввести имя переменной и нажать Enter. Профилирование М-файлов Профилирование (profiling) программного кода – это измерение времени выполнения подпрограмм и скриптов, вызываемых из этого кода. Профилирование необходимо для выяснения причин медленной работы программы и является мощным средством оптимизации программ. MATLAB имеет специальный инструмент профилирования – профилер. Окно профилера (см. рис. 2.2) вызывается с помощью команды главного меню View/Profiler. В поле Run this code записывается команда вызова профилируемого М-файла. Нажатие кнопки Start Profiling запускает процесс профилирования. Индикатор Profile time показывает время профилирования; его исходный цвет черный, во время профилирования меняется на зеленый. После завершения профилирования его итоги выводятся в окне профилера. На рис. 2.2 представлен результат профилирования М-файла prof, в котором в цикле 10000 раз вызывается функция sumk (см. п. 1.3): b=[-8,7;7,7]; for i=1:10000 [sb,kb]=sumk(b); end
Ниже дан перевод итогов профилирования. Последний столбец итоговой таблицы содержит диаграмму общего времени выполнения функций.
1. Сделайте скрипт для алгоритма задачи [3] 2.5.2.N+1. Ввод исходных данных и вывод результатов не включайте в скрипт. Вызовите скрипт несколько раз из окна команд для обработки матрицы, значения которой задавайте двумя способами: присваиванием и вводом из файла. 2. Оформите алгоритм задачи [3] 2.5.2.N+1 как функцию MATLAB. Вызовите эту функцию несколько из окна команд для обработки матриц с различными именами. 3. Выполните в среде MATLAB задачу [3] 4.2.6.N+1. 4. Для отладки каждого М-файла организуйте его пооператорное выполнение, в ходе которого проанализируйте, правильно ли изменяются значения переменных. 5. Выполните профилирование разработанных М-файлов. Чтобы время выполнения было значимым, организуйте многократный вызов М-файла в цикле по образцу п.1.6.
|
||||||||
|
Последнее изменение этой страницы: 2017-02-05; просмотров: 2685; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.008 с.) |