Лекции по Matlab

Автор: Пользователь скрыл имя, 12 Ноября 2010 в 00:08, курс лекций

Описание работы

Переменные рабочего пространства. Арифметические выражения. Типы данных. Скрипты и функции. Операторы MATLAB. Работа с файлами. Работа с текстовыми файлами.

Работа содержит 1 файл

Лекции по MATLAB.doc

— 650.00 Кб (Скачать)

     Скрипт  может быть подготовлен в любом  текстовом редакторе и сохранен с расширением m или с помощью встроенного в MATLAB редактора m-файлов, вызываемого по команде "File/New/M-file" (рис. 5).

Для запуска  фрагмента, представленного на рис. 5 (вычисление факториала 5) необходимо сохранить скрипт, например, под именем fact5.m и в текущей строке командного окна набрать имя файла: 

>> fact5

a =

   120

Рис. 5. M-файл

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

     Особенности функций:

    • могут получать исходные данные в виде списка входных параметров и возвращать результаты своей работы также в виде списка выходных параметров;
    • возможен доступ к глобальным переменным рабочего пространства (через оператор global);
    • все переменные, появляющиеся в теле функции, являются локальными;
    • имя m-файла должно совпадать с именем функции.

     Пример m-файл с именем factn.m для вычисления факториала любого числа n:

         function y=factn(n)

         k=1;

         for (i=1:1:n)

             k=k*i;

         end

         y=k;

     Для вычисления 6! нужно набрать в командной строке:

         >> k=factn(6)

         k =

            720 

     В любом m-файле можно описать несколько функций, но извне можно вызвать только первую. Остальные функции называются подфункциями.

     MATLAB выполняет m-файлы, как правило в режиме интерпретации, что существенно снижает скорость работы по сравнению с компилирующими системами. Для повышения производительности MATLAB при первом обращении к скрипту (функции) формирует псевдокод (p-code), который остается в оперативной памяти либо до конца сеанса, либо до очистки оперативной памяти одной из следующих команд.

clear имя-функции удаление конкретного  псевдокода
clear functions удаление псевдокодов  всех функций
clear all удаление всех функций и переменных

     Любой m-файл может быть превращен в псевдокод с помощью процедуры pcode:

     pcode имя_m-файла

     Результатом работы является двоичный файл с тем  же именем и расширением p. 

     Операторы MATLAB

1 var=expr Присваивание  – вычисляет значение выражения  expr и заносит результат в переменную var.
2 if условие_1

 операторы_1

[elseif условие_2

 операторы_2

elseif условие_3

………

else

 операторы]

end

Условный оператор – если справедливо условие_1, то выполняется группа операторов операторы_1 и т.д. Если все условия_i ложны, то выполняются операторы между else и end.
3 switch expr

  case val1

  операторы_1

  case val2

  операторы_2

………

[othervise

  операторы]

end

Переключатель по значению выражения expr. Если совпадает с val1, то выполняются операторы операторы_1 и т.п. Если не совпадает ни с одним значением из case, то выполняются операторы между othervise и end.
4 for var=a:[h]:b

 операторы

end

Цикл, в котором  переменная var меняется от значения a до b с шагом h.
5 while условие

 операторы

end

Цикл с предусловием, повторяющийся до тех пор, пока истинно  указанное условие.
6 try

 операторы_1

catch

 операторы_2

end

Попытка выполнить  группу операторы_1. Если возникает  ошибка, то управление передается группе операторы_2. Если ошибка не возникла, то группа операторы_2 не выполняется.
7 break Досрочный выход  из управляющих конструкций for, while, switch, try-catch.
8 function [y1, y2, …]=f(x1,x2,…) Заголовок функции.
9 return Досрочный выход из тела функции.
 

     Комментарии

     Комментарии в m-файлах начинаются с символа %. Могут находиться сначала строки или правее любого оператора.

     Первая  группа строк с подряд идущими  комментариями до пустой строки образует текст, выдаваемый в командном окне по команде help с именем m-файла.

     Например, добавим комментарий к файлу  fact5.m.

         %Эта программа находит 5! 

         a=1;

         for i=1:1:5

             a=a*i;

         end

         a

     Тогда возможен следующий результат выполнении команды:

         >> help fact5

           Эта программ находит 5! 

     Параметры функций

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

     Все входные параметры используют позиционный принцип и задаются в круглых скобках после имени функции. Для переменного числа аргументов MATLAB упаковывает все входные параметры в массив ячеек с именем varargin, а количество передаваемых аргументов – в глобальной переменной nargin.

     Все выходные параметры объявляются как массив результатов и в операторах присваивания обычно записываются в квадратных скобках. Для переменного числа аргументов используется запись заголовка

     function [varargout]=имя_функции(аргументы)

то есть результаты работы функции должны присваиваться  компонентам массива ячеек varargout. При этом к функции можно обращаться с разным количеством выходных параметров:

    [y1,y2,y3]=имя_функции(аргументы)

    w1=имя_функции(аргументы)

     Через переменную nargout передают требуемое число результатов.

     Например, функция polyline.m получает массив переменной длины с координатами точек (x,y1), (x2,y2),… и строит ломаную линию, соединяющую эти точки.

         % Рисует полилинию

         function polyline(varargin)

         if nargin<1

             warning('No arguments')

             return

         end

         for k=1:length(varargin)

             x(k)=varargin{k}(1);

             y(k)=varargin{k}(2);

         end

         plot(x,y)

     Вызов

     >> polyline([2 3],[1 5],[4 8],[6 5])

построит  полигон, приведенный на рис.6. 

Рис. 6. График полигона

     Функция array2vec получает массив размерности nx2, первый столбец которого содержит координаты x1, x2, …, а второй – координаты y1, y2, …. Результатом работы функции являются выходные вектора, содержащие координаты точек (x1, y1), (x2, y2).

         function [varargout]=array2vec(a)

         for k=1:nargout

             varargout{k}=a(k,:);

         end

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

         >> a1=[1 2; 3 4; 5 6; 7 8; 9 10; 11 12];

         >> [p1 p2]=array2vec(a1)

         p1 =

              1     2

         p2 =

              3     4

         >> [q1 q2 q3]=array2vec(a1)

         q1 =

              1     2

         q2 =

              3     4

         q3 =

              5     6 

     Работа  с файлами

     Файлы – именованные области внешней  памяти, с которыми программы могут  обмениваться информацией.

     Работа  с файлами ограничивается следующими операциями:

    • открытие файла (выделение ресурсов и приведение файла в состояние готовности к обмену)
    • чтение (ввод из файла) или запись (вывод в файл)
    • закрытие файла (возврат выделенных ресурсов и завершение неоконченных операций.

     MATLAB работает с файлами в двоичном и текстовом форматах.

     Открытие  файла осуществляется с помощью функции fopen, которая в случае удачного завершения возвращает целочисленный положительный идентификатор файла f_id (номер файла) и возможное сообщение об ошибке err-txt.

     [f_id err_txt] = fopen('name_file');

     В случае ошибки открытия f_id=-1. Сокращенный вызов:

     f_id = fopen('name_file');

     Второй  необязательный аргумент функции fopen определяет режим доступа к открываемому файлу.

fopen('name_file','r') открытие существующего  двоичного файла для чтения
fopen('name_file','rt') открытие существующего  текстового файла для чтения
fopen('name_file','r+') открытие существующего  двоичного файла, который можно  использовать как для чтения, так  и для записи
fopen('name_file','rt+') открытие существующего  текстового файла, который можно использовать как для чтения, так и для записи
fopen('name_file','w') открытие существующего  или создание нового двоичного файла  для записи, предыдущее содержимое стирается
fopen('name_file','wt') открытие существующего  или создание нового текстового файла для записи, предыдущее содержимое стирается
fopen('name_file','a') открытие существующего  двоичного файла для дозаписи или создание нового файла
fopen('name_file','at') открытие существующего  текстового файла для дозаписи или  создание нового файла
fopen('name_file','a+') открытие существующего  двоичного файла для чтения и  дозаписи. Если файла с указанным  именем нет, то он создается.
fopen('name_file','at+') открытие существующего  текстового файла для чтения и  дозаписи. Если файла с указанным именем нет, то он создается.
 

     Закрытие  файла выполняемое с помощью функции fclose выталкивает в файл вывода информацию, накопившуюся в буфере обмена (flash) и освобождает ресурсы, выделенные системой.

Информация о работе Лекции по Matlab