КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Описание m-функции
Описание m-функции должно начинаться с обязательного заголовка, после которого следуют операторы тела функции. Конец текста функции специально никак не отмечается (совпадает с концом m-файла). Заголовок определяет интерфейс функции (способ взаимодействия с ней) и устроен следующим образом: function [ выход_арг ] = function_name (вход_арг) Здесь function – служебное слово, обозначающее функцию; выход_арг – список выходных аргументов (параметров) в квадратных скобках; function_name – имя функции; вход_арг – список входных аргументов (параметров) в круглых скобках. Обязательными в заголовке являются слово function и имя функции, остальные компоненты могут отсутствовать (если функция никаких данных не получает и никаких результатов не возвращает). В конце заголовка точка с запятой не ставится. Из структуры заголовка следует, что Matlab четко разделяет входные и выходные аргументы функций. Выходные аргументы объявляются как массив результатов (объединяются в единый массив конкатенацией – записываются в квадратных скобках). Для создания и сохранения в текущем каталоге текста m-функции необходимо выполнить следующую последовательность действий: 1. В окне Matlab в главном меню выбрать команду File и из выпадающего меню – команды New/M-file (новый m-файл). 2. В раскрывшемся окне редактора Editor набрать текст программы построчно, соблюдая синтаксис языка Matlab. 3. Для сохранения m-файла выбрать в главном меню команду File/Save as (сохранить как). 4. В раскрывшемся окне Save as присвоить имя новому m-файлу (без расширения m) и нажать Save (сохранить). Внимание: имя m-файла рекомендуется задавать совпадающим с именем функции, которая в нем будет сохранена. Эту рекомендацию следует соблюдать в обязательном порядке, так как обращение к функции происходит по имени файла. Например, если в файле file1.m содержится функция, вычисляющая сумму квадратов синусов значений аргумента function [y]=summa_sin2(x) y=sum(sin(x).^2); то ее следует вызывать так >> result=file1(vect) а вовсе не как >> result=summa_sin2(vect) Несоблюдение рекомендации неизбежно приведет к снижению мнемоничности текста программы и может вызвать различного рода недоразумения. При выборе имени функции следует также позаботиться об отсутствии конфликтов с занятыми именами Matlab, т.е. имя должно быть уникальным. Узнать занято имя или нет можно при помощи стандартной функции exist. Например exist('my_function') Возможно несколько вариантов ответов 0 – имя не конфликтует со словами Matlab; 1 – в рабочей среде уже определена переменная с таким именем (имя в данный момент занято); 2 – в пути поиска Matlab есть такой m-файл; 3, 4, 6 – в пути поиска Matlab есть соответственно такой mex-, mdl- или р-файл; 5 – это имя одной из встроенных функций Matlab; 6 – это имя директории. Список входных аргументов это перечень через запятую имен переменных, заключенный в круглые скобки. Список выходных аргументов – перечень через запятую имен переменных, заключенный в квадратные скобки. В случае одного выходного аргумента квадратные скобки можно не ставить. Для размещения значений формальных параметров и переменных, используемых в теле функции, каждой m-функции выделяется дополнительная область памяти, не пересекающаяся с рабочей областью системы Matlab. Такая область называется рабочей областью функции. Каждая функция имеет свою собственную рабочую область. Поэтому имена входных и выходных формальных параметров, а также переменные, используемые в теле функции, являются локальными по отношению к m-файлу (никому кроме самой функции они не доступны). Вследствие этого они не могут конфликтовать с переменными рабочей области Workspace даже при совпадении имен. Примечание: Если в/из функции кроме формальных переменных, указанных в заголовке, требуется переслать из/в другую программную единицу, например, скрипт еще какие-либо данные то необходимо определить глобальные данные (перечисление через пробел) global имя1 имя2 имя3 и поместить это определение и в скрипт и в функцию. Для редактирования существующих m-файлов необходимо выполнить следующие действия: 1. Открыть редактируемый m-файл, для чего в окне Matlab выбрать пункт меню File/Open. 2. В раскрывшемся окне Open выделить имя m-файла и нажать Open. 3. В раскрывшемся окне Editor выполнить редактирование текста m-файла. 4. Сохранить редактированный m-файл с тем же именем, для чего выбрать пункт меню File/Save. Каталог, в котором содержится файл-функция, должен быть текущим, или путь к нему должен быть добавлен в путь поиска, иначе Matlab не найдет функцию. Внимание: При отладке программного обеспечения текст файла-функции может неоднократно корректироваться. Внесение изменений в текст функции без сохранения обновлений m-файла – распространенная ошибка начинающего пользователя. Если файл не сохранен, то вычисления будут выполняться в соответствии с предыдущим текстом функции (не смотря на то, что в окне редактора отображается новая версия текста). О том, что в файл были внесены изменения и они не сохранены, свидетельствует звездочка в заголовке окна редактора рядом с именем редактируемого файла (рис. 5.1). При сохранении текущей редакции файла (например нажатии на кнопку ) звездочка исчезает. Рис. 5.1. Окно редактора с текстом редактируемой файл-функции
Примечания: 1. Обратите внимание, в конце второй строки функции (рис. 5.1) стоит точка с запятой. Как и для скрипта, это – подавление эхо-печати. Отсутствие символа ";" приведет к тому, что при каждом вызове функции summa_sin2 в командном окне будет выполняться печать значений элементов вектора y. Во избежание вывода на экран нежелательных промежуточных результатов необходимо в тексте функции все вычислительные операторы завершать символом ";". 2. Для вычисления квадрата используется операция поэлементного (.^) возведения в квадрат: sin(x) – вектор, т.к. вектором является аргумент х. Использование не поэлементного, а матричного возведения в квадрат вызовет ошибку ??? Error using ==> mpower Matrix must be square. Error in ==> summa_sin2 at 2 sin(x)^2 Что означает "Ошибочное использование матричного произведения. Матрица должна быть квадратной. Ошибка в summa_sin2 во второй строке, а именно при вычислении sin(x)^2".
Дата добавления: 2014-11-08; Просмотров: 652; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |