8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 75 76 77 78 79 80 81 ... 365

Файл-функции, так же как п файл-программы, создаются в редакторе М-файлов.

Файл-функции с одним входным аргументом

Предположим, что в вычислениях часто необходимо использовать значение функции

Имеет смысл один раз написать файл-функцию, а потом вызывать ее всюду, где необходимо вычисление этой функции для заданного аргумента. Откройте в редакторе М-файлов новый файл н наберите текст листинга 5.2.

j Листинг 5.2. Файл-функция с одним входным и одним выходным аргументом

function f = myfun(x)

f = exp(-x)*sqrt((x"2 + l)/(x"4 + 0.1));

Слово function в первой строке определяет, что данным файл содержит файл-функцию. Первая строка является заголовком функции, в которой размещаются имя функции и списки входных и выходных аргументов. Входные аргументы записываются в круглых скобках после имени функции. В нашем примере есть только один входном аргумент — х. Выходной аргумент t указывается слева от знака равенства в заголовке функции. При выборе имени файл-функции следует позаботиться об отсутствии конфликтов с запятыми именами в MATLAB. Аналогичный вопрос мы обсуждали выше: как сохранить файл-программу в файле с уникальным именем. Тот же самый подход, основанный на обращении к функции exist, вы можете применить для задания имени файл-функции.

После заголовка размещается тело файл-функции - один пни несколько операторов (их может быть достаточно много), которые реализуют алгоритм получения значения выходных переменных из входных. В нашем примере алгоритм простой — по заданному х вычисляется арифметическое выражение и результат записывается в г.

Теперь сохраните файл в рабочем каталоге. Обратите внимание, что выбор пунктов Save пли Save as... меню File приводит к появлению дпалоговою окна сохранения файла, в поле File name которого уже содержится название myfun. Сохраните файл-функцию в файле с предложенным именем. Теперь


созданную функцию можно использовать так же, как и встроенные sin, cos и другие, например, из командной строки:

» у = myfun(1.31

У =

0.2600

При создании файл-функции myfun мы подавили вывод значения f в командное окно, завершив оператор присваивания точкой с запятой. Если этого не сделать, то оно выведется при обращении у = myfun(1.3). Как правило, лучше избегать вывода в командное окно результатов промежуточных вычислений внутри файл-функции.

Имя файл-функции не обязательно должно совпадать с именем файла, однако обращение к ней происходит по имени файла. Например, если в файле f22.m содержится функция с заголовком g = init(z), то ее следует вызывать так:

» f = f22(-0.9)

а вовсе не

» f = init(-0.9)

Вызов собственных функций может осуществляться из файл-программы и из другой файл-функции.

Предупреждение

Каталог, в котором содержатся файл-функции, должен быть текущим, или путь к нему должен быть добавлен в пути поиска, иначе MATLAB просто не найдет функцию или вызовет вместо нее другую с тем же именем (если она находится в каталогах, доступных для поиска).

Файл-функция, приведенная в листинге 5.2, имеет один существенный недостаток. Попытка вычисления значений функции от массива приводит к ошибке, а не к массиву значений так, как это происходит при использовании встроенных функций.

» х = [1.3 7.2],-

>> у myfun(х)

??7 Error using ==> mpower

Matrix must be square.

Error in --> myfun at 2

f = exp(-x)*sqrt((x"2 + l)/(x"4 + 0.1));


Если вы изучили работу с массивами, то устранение этого недостатка не вызовет затруднений. Необходимо просто при вычислении значения функции применить поэлементные операции (см. разд. "Поэлементные операции с векторами» главы 2).

Измените тело функции, как указано в листинге 5.3. Не забудьте сохранить изменения в файле myfun.m!

Примечание

Внесение изменений в текст файл-функции без сохранения файла — часто распространенная ошибка начинающих пользователей. Если файл не сохранен, то, как не сложно убедиться, будет вычисляться старая функция. О том, что файл изменен и не сохранен, свидетельствует звездочка в заголовке окна редактора рядом с именем редактируемого файла.

- Листинг 5.3. Файл-функция, работающей с массивом значений

function f = myfun(х)

f = exp(-x).*sqrt((х.л2 + 1)./(х.л4 + 1));

Теперь аргументом функции myf un может быть как число, так и вектор или матрица значений, например:

» х = [1.3 7.2]; » у = niyfun(x) У =

0.2600 0.0001

Переменная у, в которую записывается результат вызова функции myfun, автоматически становится вектором нужного размера.

Постройте график функции myfun на отрезке [0,4] при помощи файл-программы или из командной строки:

» х = 0:0.5:4; » у = myfun(х); » plotfx, у)

Решение вычислительных задач средствами MATLAB потребует от вас умения программировать файл-функции, соответствующие поставленной задаче (например, правая часть системы дифференциальных уравнений или подынтегральная функция).



0 ... 75 76 77 78 79 80 81 ... 365