Lesson10_mail (1063578)

Файл №1063578 Lesson10_mail (Все уроки)Lesson10_mail (1063578)2017-12-28СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

Написание функций

Написание функций

Увеличение автоматизации

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

В этом случае оказывается удобно «запаковать» этот участок в отдельный, вспомогательный код, который можно вызвать одной командой.

Тогда если необходимо изменение этого блока, то будет достаточно изменить его лишь в одном месте.



Создание собственных функций  «черный ящик » =
код, который:

– требует определенные типы входных данных,
– производит некоторые действия и
– возвращает некоторые данные на выходе.



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





















Создание функций

Функции создаются в текстовых файлах .m (как скрипты). Отличие синтаксиса: файлы начинаются объявлением функции

function[out1,out2,…] =function_name (in1,in2,…)

Ключевое слово function должно быть первой (не закомментированной) строкой кода. Синтаксис объявления функции (после ключевого слова function) аналогичен синтаксису для вызова функций.

Файл принято называть function_name.m.

Код, следующий за объявлением функции, описывает вычисление выходных значений на основе входных.

Каждая объявленная выходная переменная должна в коде получить значение. Для функций с одним выходным значением  квадратные скобки не обязательны.




Упражнение

Измените callmodel.m в функцию, которая принимает параметры модели и возвращает call и t в качестве выходных данных

function [call,t] = Fun_CallModel(n,f0,A0,B,fm)

>> edit callmidel_fun




Синтаксис создания функций без входа или выхода (или и того, и другого):





Вызов функции

аналогичен вызову встроенных функций MATLAB.

Синтаксис вызова определяется объявлением в первой строке кода в файле функции.



Например для запуска модели callmodel_fun.m :

>> N=4; f0=165; A0=1; B=0.8; fm=1;

>> [x,t]=callmodel_fun(N,f0,A0,B,fm);

или попросту

>> [x,t]=callmodel_fun(4,165,1,0.8,1)



Если функция возвращает множество выходных значений, а требуется исключительно значение х на выходе:

>> x=callmodel_fun(4,165,1,0.8,1);

Если нужно только t, то игнорируем х используя тильду (~):

>> [~,t]=callmodel_fun(4,165,1,0.8,1);



P.S. если не указана конкретная переменная для выходного значения, то результат будет записан в ans по умолчанию. Если функция возвращает больше одного выходного значения, первое из них будет записано в ans, остальные – проигнорированы.


Упражнение

Вызов функции с одним набором параметров

>> x=callmodel_fun(3,175,2,1.5,0.65);



и с другим набором параметров:

>> x=callmodel_fun(4,165,1,0.8,1);



Note: Сохраняйте все изменения в функции, перед тем, как ее вызвать.



Рабочие пространства

Функции работают в своем собственном рабочем пространстве, отдельном от основного рабочего пространства, используемого из Command Window или скриптами.

Если функция вызывает другую функцию, то каждая поддерживает собственное рабочее пространство.

Значения переменных локализованы в индивидуальные рабочие пространства.

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

Передача значений при вызове вида

>> a=foo(b)

где функция задана следующим образом

function y=foo(x)

a = sin(x); x=x+1; b=sin(x); y = a*b;

Упражнение

Убедитесь, что переменные функции локализованы в рабочем пространстве функций.

>> edit foo

Наблюдайте за основным рабочим пространством.

>> a=42;

>> b=foo(a);



MATLAB передает значение переменной b в foo. Переменная x в рабочем пространстве foo приобретает, таким образом, это значение, но является раздельной переменной с b (которая находится в основном рабочем пространстве). Изменение х не затронет b.

Так же, как только foo прекратила работу, она копирует текущее значение переменой у обратно в рабочее пространство, из которого функция была вызвана, – в данном случае – в основное рабочее пространство с переменной а. Как только функция завершает свою работу, ее рабочее пространство уничтожается.



Подфункции

применяют для передачи части задач функции другой функции. При этом эти вспомогательные функции доступны только родительской функции (т.е. друг другу).

Файлы функций могут содержать код для нескольких функции. Дополнительные функции внутри файла называют подфункциями. Подфункции видимы только главной функции и другим подфункциям в том же файле. Они не видимы снаружи файла (например, командной строке).

Каждая подфункция начинается с собственного объявления функции.

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

function[A,B]=primary(x,y)

A=subfunction1(x);

B=subfunction2(y);

function v= subfunction1(u)

v=rand(u,1);

function v= subfunction2(u)

v=randn(u,1);

Упражнение

Модель с шумом:

>> edit callmodel_sub

>> v=0.05

>> [x,t]=callmodel_sub(3,175,2,1.5,0.65,v);



Поддерживают собственные рабочие пространства.

Приоритет вызова

>> whale

 MATLAB выполнит поиск пока не найдет первое упоминание whale для интерпретации команды:

1. Поиск whale в качестве переменной в местном рабочем пространстве.

2. Поиск whale в качестве внутренней функции в том же файле.

3. Поиск whale в качестве подфункции в том же файле.

7. Поиск в текущей директории файла под названием whale.

8. Прочесывание по порядку путей в поисках файла под названием whale.

Упражнение

Проблема приоритетности: использование наименований файлов в качестве переменных.

Which  Locate functions and files

1)

>> which pi -all

>> pi = 2

>> which pi -all

>> R = 3

>> pi*R^2

>> clear pi

>> which pi -all

>> pi*R^2

2)

>> sin=pi

>> sin(1)

3)

>> i=1:5

>> z=1+2*i

>> abs(z)

>> clear i

>> z=1+2*i

>> abs(z)

Путь в MATLAB

Путь поиска директорий прописывается для того, чтобы указать где MATLAB осуществляет поиск файлов кода



При инсталляции все файлы MATLAB и Toolbox’ов записываются в путь поиска.

Если создаются новые связанные с MATLAB файлы, тогда их содержащие директории должны быть помещены в путь поиска

Поддиректории должны быть добавлены, даже если их родительская директория уже находится в пути.



Установка/редактирование пути  GUI Set Path. ToolStrip: закладка Home  раздел Environment  кнопка Set Path, либо:

>> pathtool

Упражнение

>> path

>> pathtool

Создайте файл функции (в рабочей директории), названный max.m

>> which max -all

Путь может также быть отредактирован программными методами при помощи функций:

path,
addpath, rmpath (Add/Remove folders from search path); savepath (Save current search path)



Порядок директорий на пути поиска важен, если более одного файла с одинаковым именем (вне зависимости от расширения). При поиске обнаруживается файл с наибольшим приоритетом.

Функция which  определяет какой вариант файла достигается.

9-2



Характеристики

Тип файла
Документ
Размер
127,35 Kb
Материал
Тип материала
Предмет
Высшее учебное заведение

Тип файла документ

Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.

Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.

Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.

Список файлов лекций

Все уроки
7
workL7
AfricaFertility.mat
EuropeFertility.mat
bluewhale.au
whalecall.m
Lesson2
workL2
cassiniData1.mat
randomChars.mat
gasprices.mat
Lesson4
workL4
cassiniData1.mat
cassiniData2.mat
flightData.mat
exchange.mat
gasprices.mat
milkactivity.mat
Lesson5
workL5
natickData.mat
exchange.mat
gasprices.mat
Lesson6
workL6
bangaloreTemps2005.mat
Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7038
Авторов
на СтудИзбе
260
Средний доход
с одного платного файла
Обучение Подробнее