- •Введение
- •Лабораторная работа ип1 Знакомство с Matlab
- •1. Рабочая среда Matlab
- •2. Данные Matlab
- •Типы данных
- •Числовые константы
- •Символьные константы
- •Переменные
- •3. Выражения
- •3.1. Арифметические выражения
- •3.2. Логические выражения
- •3.3. Порядок вычисления выражений
- •4. Сообщения об ошибках и исправление ошибок
- •5. Завершение вычислений
- •6. Завершение работы с системой
- •7. Резюме
- •8. Контрольные вопросы
- •9. Индивидуальные задания
- •Лабораторная работа ип2 работа с матрицами в matlab
- •1. Общие сведения
- •2. Одномерные массивы – векторы
- •3. Двумерные массивы – матрицы
- •4. Использование двоеточия
- •4.1. Автозаполнение
- •4.2. Индексация
- •5. Поэлементные и матричные операции
- •6. Стандартные функции для работы с матрицами
- •7. Логическое индексирование
- •8. Контрольные вопросы
- •9. Индивидуальные задания
- •10. Упражнения
- •2. Диалоговый ввод/вывод
- •3. Управление последовательностью исполнения операторов
- •3.1. Оператор условия if
- •3.2. Оператор переключения
- •3.3. Оператор цикла с определенным числом повторений
- •3.4. Оператор цикла с неопределенным числом повторений
- •4. Контрольные вопросы
- •5. Индивидуальные задания
- •Лабораторная работа ип4 визуализация данных в matlab
- •1. Общие сведения
- •2. Построение таблицы значений функции
- •3. Двумерная графика
- •3.1. Общие правила построения графиков
- •3.2. Оформление графиков
- •3.3. Построение графиков
- •3.4. Управление свойствами графиков
- •4. Трехмерная графика
- •4.1. Общие принципы построения трехмерных графиков
- •4.2. Построение трехмерных графиков
- •4.3. Управление свойствами трехмерных графиков
- •5. Контрольные вопросы
- •6. Индивидуальные задания
- •Лабораторная работа ип5 файл-функции
- •2. Описание m-функции
- •3. Обращение к m-функции
- •4. Параметры-функции
- •5. Разновидности m-функций
- •5.1. Подфункции
- •5.2. Вложенные функции
- •6. Контрольные вопросы
- •7. Индивидуальные задания
- •2. Аппроксимация
- •2.1. Моделирование полиномом по методу
- •2.2. Аппроксимация произвольной функцией
- •3. Интерполяция
- •3.1. Кусочная интерполяция
- •3.2. Кубические сплайны
- •3.3. Интерполяция произвольной нелинейной функцией
- •4. Контрольные вопросы
- •5. Индивидуальные задания
- •Лабораторная работа ип7 Вычисление функций разложением в ряд
- •1. Общие сведения
- •2. Индивидуальное задание
- •Лабораторная работа ип8 Решение нелинейных уравнений в среде Matlab
- •1. Общие сведения
- •2. Поиск корней полиномов
- •3. Решение одного нелинейного уравнения
- •4. Решение систем нелинейных уравнений
- •5. Контрольные вопросы
- •6. Индивидуальные задания
- •Лабораторная работа ип9 обмен данными с текстовым файлом
- •1. Общие сведения
- •2. Открытие файла
- •3. Запись в текстовый файл
- •3.1. Запись строковых значений
- •3.2. Запись числовых значений
- •4. Чтение из текстового файла
- •4.1. Последовательное чтение строк
- •4.2. Последовательное чтение нескольких символов
- •4.3. Чтение чисел из текстового файла
- •4.4. Альтернативный доступ к текстовому файлу
- •5. Закрытие файла
- •6. Контрольные вопросы
- •7. Индивидуальные задания
- •Заключение
- •Список рекомендуемой литературы
- •Программирование в matlab
- •428015 Чебоксары, Московский просп., 15
5. Разновидности m-функций
Оформление алгоритма в виде одной файл-функции не всегда комфортно. Часто повторяющиеся действия, выполняемые в функции, следует оформлять в виде отдельной функции. Но если эту вспомогательную функцию реализовать как автономную программную единицу, то придется передавать ее через систему параметров основной функции, что не всегда удобно, а иногда и просто невозможно. Matlab предоставляет дополнительные способы организации связи между функциями – оформление подфункций и вложенных функций. Использование таких функций основано на выделении части алгоритма в самостоятельную функцию, текст которой содержится в том же m-файле, что и основная функция.
5.1. Подфункции
Основная файл-функция может содержать одну или несколько подфункций, каждая со своими входными и выходными параметрами. Текст подфункций располагается в m-файле после текста основной функции. Подфункции m-файла не могут быть вызваны извне. Это своего рода функции внутреннего использования. Вызов подфункции инициирует основная функция m-файла.
Синтаксически подфункции оформляются также как и обычные функции Matlab. Заголовок очередной подфункции одновременно является признаком конца предыдущей. Основная функция обменивается информацией со своими подфункциями при помощи системы параметров и/или глобальной пересылки данных.
Рассмотрим пример функции с подфункциями. Предположим, что в некоторой функции basik_func приходится многократно вычислять значение некоторого выражения для различных значений операндов. В простейшем случае текст функции basik_func будет содержать однотипные предложения
function basik_func(x,step)
f1=sin(x)+cos(x);
x1=x-step;
f2=sin(x-step)+cos(x-step);
x2=x+step;
f3=sin(x+step)+cos(x+step);
Проще и нагляднее определить вычисляемое выражение в подфункции sub_func и поместить ее в том же m-файле
function basik_func(x,step)
%основная функция
f1=sub_func(x);
f2=sub_func(x-step);
f3=sub_func(x+step);
function f=sub_func(arg)
%подфункция
f=sin(arg)+cos(arg);
Переменные, определенные в подфункциях и в основной функции, являются локальными, они доступны только в пределах своей функции.
5.2. Вложенные функции
Не смотря на то, что основная функция и подфункция находятся в одном m-файле, подфункция является внешней по отношению к основной функции. Вложенная функция является внутренней по отношению к основной. В силу этого обстоятельства переменные из рабочей среды основной функции доступны во вложенной. Поскольку вложенная функция охватывается основной и может размещаться в любом месте ее тела, то при написании функций следует использовать end для обозначения их концов. Например
function y1=f1(arg1,arg2)
% операторы функции f1
function y2=f2(x)
% операторы функции f2
function y3=f3(a,b)
% операторы функции f3
end %конец вложенной функции f3
% операторы функции f2
end %конец вложенной функции f2
% операторы функции f1
end %конец главной функции f1
Уровень вложенности функций не ограничен. Функция может обратиться к своей вложенной функции, но не может использовать вложенную функцию более низкого уровня. В приведенном примере функция f1 может обратиться к вложенной в нее функции f2, но не может напрямую вызвать f3. Вложенная функция может обратиться к функции того же уровня. Функция нижнего уровня может вызвать функцию верхнего уровня, в которую она вложена, и все функции, доступные из нее.
В одном m-файле допускается одновременное использование подфункций и вложенных функций. В этом случае текст подфункции должен заканчиваться оператором end.