- •Введение
- •Лабораторная работа ип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
2. Описание 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".