Студопедия

КАТЕГОРИИ:


Архитектура-(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; Просмотров: 614; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.013 сек.