Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 2398; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.116.15.124 (0.007 с.) |