Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методичка Matlab.DOC
Скачиваний:
143
Добавлен:
29.03.2015
Размер:
619.01 Кб
Скачать
  1. Действия над файлами

Таблица №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)

  1. Поддерживаемые графические форматы

Таблица№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)

  1. Форматы файлов и их краткое описание

Таблица№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