- •Федеральное агенство по образованию
- •1.Вывод списка пакетов расширения
- •Определение переменных, нечетких правил и функций принадлежности;
- •Интерактивный просмотр нечеткого логического вывода;
- •Современные методы: адаптивный нечеткий вывод с использованием нейронных сетей, нечеткая кластеризация;
- •Интерактивное динамическое моделирование в Simulink;
- •2. Пакеты анализа и синтеза систем управления
- •Проектирование регуляторов, оптимальных в равномерной и интегральной норме;
- •Оценка действительного и комплексного сингулярного параметра мю;
- •3. Пакеты идентификации систем
- •4. Дополнительные пакеты расширения matlab
- •5. Пакеты для обработки сигналов и изображений
- •Часть №2
- •Часть №3
- •1. Работа с матрицами Обращение к элементу матрицы
- •2. Операции и функции в matlab
- •3. Основные операции с массивами
- •4. Арифметические операторы
- •5. Операторы отношения
- •Действия над файлами
- •Поддерживаемые графические форматы
- •Форматы файлов и их краткое описание
- •4. Типы м-файлов
- •Задание и порядок выполнения работы
- •Решатели оду в matlab
- •Задание и порядок выполнения работы
- •Содержание отчЕтА
- •Вопросы для защиты лабораторной работы:
- •Список литературы
Действия над файлами
Таблица №1
fopen |
Открыть файл |
fclose |
Закрыть файл |
fread |
Прочитать двоичные данные из файла |
fwrite |
Записать двоичные данные в файл |
fscanf |
Прочитать форматированные данные из файла |
fprintf |
Записать форматированные данные в файл |
fgetl |
Прочитать строку файла, удалив символ конца строки |
fgets |
Прочитать строку файла, сохранив символ конца строки |
input |
Интерактивный ввод |
ferror |
Запросить информацию об ошибке ввода-вывода |
feof |
Проверить признак конца файла |
fseek |
Установить указатель в заданную позицию |
ftell |
Запросить позицию указателя в файле |
frewind |
Установить указатель в начало файла |
load |
Прочитать переменные из MAT-файла |
save |
Записать переменные в MAT-файл |
csvread |
Преобразовать файл, элементы которого разделены запятыми, в массив |
csvwrite |
Преобразовать массив в файл, элементы которого разделены запятыми |
dlmwrite |
Преобразовать массив в файл с ASCII-разделителем |
dlmread |
Преобразовать файл с ASCII-разделителем в массив |
wk1read |
Прочитать файл электронной таблицы Lotus123 |
wk1write |
Записать файл в электронную таблицу Lotus123 |
imread |
Считать графический образ из файла |
imwrite |
Записать графический образ в файл |
wavwrite |
Записать звуковой файл .wav |
wavread |
Считать звуковой файл .wav |
auread |
Чтение звукового файла с расширением .au (формат фирмы SUN Microsystems) |
auwrite |
Запись данных в звуковой файл с расширением .au (формат фирмы SUN Microsystems) |
Поддерживаемые графические форматы
Таблица№2
'bmp' |
Windows Bitmap (BMP) |
'hdf ' |
Hierarchical Data Format (HDF) |
'jpg' или 'jpeg' |
Joint Photographic Experts Group (JPEG) |
'pcx' |
Windows Paintbrush (PCX) |
'tif 'или 'tiff ' |
Tagged Image File Format (TIFF) |
'xwd' |
X Windows Dump (XWD) |
Форматы файлов и их краткое описание
Таблица№3
BMP |
1-битовые, 4-битовые, 8-битовые и 24-битовые несжатые изображения; 4-битовые и 8-битовые изображения со сжатием RLE |
HDF |
8-разрядные растровые изображения, содержащие или не содержащие цветовую палитру; 24-разрядные растровые изображения |
JPEG |
Любые JPEG-изображения; JPEG-изображения с некоторыми обычно используемыми расширениями |
PCX |
1-битовые, 8-битовые и 24-битовые изображения |
TIFF |
Любые TIFF-изображения, включая!-битовые, 8-битовые и 24-битовые несжатые изображения; 1-битовые, 8-битовые и 24-битовые изображения с packbit-сжатием; 1-битовые изображения со сжатием CCITT |
XWD |
1-битовые и 8-битовые Zpixmaps; XYBitmaps; 1-битовые XYPixmaps |
4. Типы м-файлов
М-файлы в MATLAB бывают двух типов: файл-программы (Script M-Files), содержащие последовательность команд, и файл-функции (Function M-Files), в которых описываются функции, определяемые пользователем.
Файл-программы представляют собой простейший тип М-файлов, Они не имеют входных и выходных аргументов и оперируют переменными, существующими в рабочей среде, или могут создавать новые переменные. Все переменные, объявленные в файл-программе, становятся доступными в рабочей среде после ее выполнения. Запустите файл-программу, перейдите в окно Workspace и убедитесь, что все введенные в М-файле переменные появились в рабочей среде.
Все созданные при исполнении М-файла переменные остаются в рабочей среде после его завершения, и их можно использовать в других файл-программах и в командах, выполняемых из командной строки.
Запуск файл-программы осуществляется двумя способами,
1. Из редактора М-файлов.
2. Из командной строки или другой файл-программы, при этом в качестве команды используется имя М-файла (без расширения).
Применение второго способа намного удобнее, особенно если созданная файл-программа будет неоднократно использоваться впоследствии. Фактически созданный М-файл становится командой, которую понимает MATLAB. Закройте все графические окна и наберите в командной строке имя существующей файл-программы без расширения, появляется графическое окно, соответствующее командам данной файл-программы.
После ввода такой команды MATLAB производит следующие действия.
1. Проверяет, является ли введенная команда именем какой-либо из переменных, определенных в рабочей среде. Если введена переменная, то выводится ее значение.
2. Если введена не переменная, то MATLAB ищет введенную команду среди встроенных функции. Если команда оказывается встроенной функцией, то происходит ее выполнение.
3. Если введена не переменная и не встроенная функция, то MATLAB начинает поиск М-файла с названием команды и расширением m. Поиск начинается с текущего каталога (Current Directory); если М-файл в нем не найден, то MATLAB просматривает каталоги, установленные в пути поиска (Path) Найденный М-файл выполняется в MATLAB.
Последовательность поиска MATLAB говорит о том, что очень важно правильно задавать имя собственной файл-программы при сохранении ее в М-файле. Во-первых, ее имя не должно совпадать с именем существующих функции в MATLAB- Узнать, занято имя или нет можно при помощи функции exist. Во-вторых, имя файла не должно начинаться с цифры, знаков "+" или " -", словом с тех символов, которые могут быть интерпретированы MATLAB как ошибка при вводе выражения. Например, если вы назовете М-файл с файл-программой 5prog.m, то при ее запуске из меню редактора или <F5> получите сообщение
??? 5prog
I Error: Missing MATLAB operator.
Это не удивительно, т. к. MATLAB ждет от вас 5 + prog (или 5,prog) для вычисления арифметического выражения с переменной prog (или добавления 5 в качестве первого элемента к вектор-строке prog). Следовательно, правильным было бы имя prog5.m (или хотя бы p5rog.m), но только начинающееся с буквы.
Файл-функции. Рассмотренные выше файл-программы являются последовательностью команд MATLAB, они не имеют входных и выходных аргументов. Для решения вычислительных задач и написания собственных приложений в MATLAB часто требуется программировать файл-функции, которые производят необходимые действия с входными аргументами и возвращают результат в выходных аргументах. Число входных и выходных аргументов зависит от решаемой задачи - может быть только один входной и один выходной аргумент, несколько и тех и других, или только входные аргументы. Возможна ситуация, когда входные и выходные аргументы отсутствуют.Рассмотрим несколько простых примеров, позволяющих понять работу с файл-функциями.
Файл-функции, так же как и файл-программы, создаются в редакторе М-файлов.
Файл-функции с одним входным аргументом
Предположим, что в вычислениях часто необходимо использовать значение функции:
Имеет смысл еще раз написать файл-функцию, а потом вызывать ее всюду, где необходимо вычисление этой функции для заданного аргумента:
function f = myfun(x)
f = exp(-x)*sqrt((x^2 + 1)/(x^4 + 0.1));
Слово function в первой строке определяет, что данный файл содержит файл-функцию. Первая строка является заголовком функции, в которой размещаются имя функции и списки входных и выходных аргументов. Входные аргументы -записываются в круглых скобках после имени функции. В нашем примере есть только одни входной аргумент— х. Выходной аргумент f указывается слева от знака равенства в заголовке функции При выборе имени файл-функции следует позаботиться об отсутствии конфликтов с занятыми именами в МАТLAВ. Аналогичным вопрос мы обсуждали выше: как сохранить файл-программу в файле с уникальным именем. Тот же самый подход, основанный на обращении к функции exist. вы можете применить для задания имени файл-функции.
После заголовка размещается тело файл-функции - один или несколько операторов (их может быгь достаточноно много), которые реализуют алгоритм получения значения выходных переменных из входных. В нашем примере алгоритм простой — по заданному x вычислялся арифметическое выражение и результат записывается в f.
Теперь сохраните файл в рабочем каталоге, Обратите внимание, что выбор пунктов Save или Save as... меню File приводит к появлению диалогового
окна сохранения файла, в поле File name которого уже содержится название myfun. Сохраните файл-функцию в файле с предложенным именем. Теперь
созданную функцию можно использовать так же, как и встроенные sin, cos и другие, например, из командной строки:
» у = myfun(1.3)
У =
0.2600
При создании файл-функцнн myfun мы подавили вывод значения f в командное окно, завершив оператор присваивания точкой с запятой. Если этого не сделать, то оно выведется при обращении у = myfun(1.3). Как правило, лучше избегать вывода в командное окно результатов промежуточных вычислений внутри файл-функции.
Имя файл-функции не обязательно должно совпадать с именем файла, однако обращение к ней происходит по имени файла. Например, если в файле f22.m содержится функция с заголовком g = init (z), то ее следует вызывать так:
» f = f22{-0.9)
и вовсе не
» f = init(-0.9)
Функции MATLAB обладают еще одним полезным качеством — возможностью получения информации о них при помощи команды help, например, help fplot. Собственные файл-функции так же можно наделить этим свойством, используя строки комментариев. Все строки комментариев после заголовка и до тела функции или пустой строки выводятся в командное окно командой help. Изучите содержимое файла fplot.m с файл-функцией fplot, который расположен в подкаталоге \toolbox\matlab\specgraph\ основного каталога MATLAB.
Первая строка комментариев после заголовка функции называется Hl-line и используется при поиске командой lookfor. Эта команда ищет указанное слово в строках Hl-line всех файл-функций в каталогах, указанных в путях поиска, в том числе и в текущем каталоге.
Разновидности функций. Оформление алгоритма в одной файл-функции не всегда удобно. Некоторые стандартные часто повторяющиеся действия следует оформить в виде отдельных функции, связанных с основным алгоритмом. MATLAB предоставляет различные способы организации связей между функциями - приватные функции, подфункции, вложенные функции.
Подфункции. Использование подфункций и вложенных функций основано на выделении части алгоритма в самостоятельную функцию, текст которой содержится в том же файле, что и основная функция. Рассмотрим модельный пример. Предположим, что в файл-функции simple, хранящейся в файлеsimple.m, часто приходится вычислять некоторое выражение. Конечно, можно простым копированием строк добавить соответствующие операторы:
function simple;
x = 1.1;
У = 2.1;
fl = х^3 - 2*y^3 + 3*{x^2 + y^2) - x*y + 9
x = 3.1;
У = 4.2;
f2 = x^3 - 2*у^3 + 3*(x^2 + y^2) - x*y + 9
x = -2.8;
У = 0.7;
f3 = х^3 - 2*у^3 + 3*(х^2 + у^2) - х*у + 9
Проще и нагляднее определить вычисляемое выражение в подфункции f с двумя входными и одним выходным аргументом и разместить ее в том же М-файле simple.m.:
function simple;
% Основная функция
fl = f(l.1, 2.1)
f2 = f(3.1, 4.2)
f3 = f( -2.8, 0.7)
function z = f(x, y)
% Подфункция
z = х^3 - 2*y^3 + 3*(x^2 + у^2) - x*y + 9;
Первая функция simple является основной функцией в simple.m, именно ее операторы выполняются, если пользователь вызывает simple, например, из командной строки. Каждое обращение к подфункции f в основном функции приводит к переходу к размещенным в подфункции операторам и последующему возврату в основную функцию.
Файл-функция может содержать одну или несколько подфункций со своими входными и выходными параметрами, но основная функция может быть только одна. Заголовок новом подфункции одновременно является признаком конца предыдущей. Основная функция обменивается информацией к подфункциями только при помощи входных II выходных параметров. Переменные, определенные в подфункциях и в основной функции, являются локальными, они доступны в пределах своей функции.
Подфункция доступна только внутри основной функции. Если вы решите вызвать подфункцию не из ее файл-функции , а из другой файл-функции, файл-программы или просто из командной строки, то получите сообщение об ошибке.
Вложенные функции
Другой разновидностью функций, доступных в одном М-файле, являются вложенные функции. Если подфункция является внешней по отношению к основной функции, то вложенная функция является внутренней. В силу этого обстоятельства переменные из рабочей среды основной функции доступны и во вложенной функции. Простейшая структура функции main, содержащей вложенную fnested:
function main;
ALP = 5.3;
BET = 9.1;
fl = fnested(1.1, 2.1)
function z = fnested(x, y}
z = х^3 - 2*y^3 + 3*(x^2 + y^2) - x*y + 9 + ALP'BET;
end
end
При написании вложенных функций следует использовать оператор end для закрытия тела функции. Поэтому вложенная функция может размешаться в любом месте тела функции, ее содержащей. Основная функция также завершается оператором end. В одном М-файле допускается использование подфункций и вложенных функций одновременно, но тогда последним оператором подфункции должен быть end.
Уровень вложенности функции не ограничен. Поэтому при многоуровневом вложении возникает вопрос, какие вызовы допустимы, а какие нет. Функция может обратиться к своей вложенной функции, но не может использовать вложенную функцию нижнего уровня. Вложенная функция может обратиться к функции того же уровня. Функция нижнего уровня может вызвать функцию верхнего уровня, в которую она вложена, и все функции, доступные из нее. Hа практике такой сложной структуры вложенности функций, как правило, не требуется.
Другая проблема многоуровневого вложения это доступность переменных в среде вложенных и внешних функции. Переменные, определенные во внешней функции, доступны и во вложенной, и наоборот. Исключение составляет случаи коллизии переменных для функции одною уровня. В этом случае во вложенных функциях это разные локальные переменные с одним именем. Естественно, что во внешней функции доступ к двум переменным с одним именем невозможен, поэтому ни одна из них не доступна.
Приватные функции. Простейший прием сделать некоторые функции видимыми или нет, состоит в размещении М-файлов в рабочих каталогах. Определенная структура каталога с пользовательскими файл-функциями позволяет задать некоторые вспомогательные функции, которые используются только файл-функциями, содержащимися в М-файлах данного каталога, а для файл-функцнй из других каталогов являются недоступными. Для этого следует создать подкаталог с именем private и разместить в нем вспомогательные файл-функции. Рисунок1 поясняет доступ к приватным функциям.
Рисунок1