MATLAB.Exponenta
–Û·Ë͇ Matlab&Toolboxes

MATLAB

В.Г.Потемкин "Введение в Matlab" (v 5.3)
Глава 3. Программирование в среде Matlab 5

  В оглавление книги \ К следующему разделу \ К предыдущему разделу \ Предметный указатель

3.2. Создание М-файлов. M-сценарии. M-функции

M-файлы являются обычными текстовыми файлами, которые создаются с помощью текстового редактора. Для операционной среды персонального компьютера система MATLAB поддерживает специальный встроенный редактор/отладчик, хотя можно использовать и любой другой текстовый редактор с ASCII-кодами.

Открыть редактор можно двумя способами:

  • из меню File выбрать опцию New, а затем M-File.
  • использовать команду редактирования edit.

Пример
Команда edit poof запускает редактор и открывает файле poof.m. Если имя файла опущено, то запускается редактор и открывается файл без имени.
Теперь можно записать, например, функцию fact, приведенную выше, вводя строки текста и сохраняя их в файле с именем fact.m в текущем каталоге.
Как только такой файл создан, можно выполнить следующие команды:

  • Вывести на экран имена файлов текущего каталога:
                      what
  • Вывести на экран текст M-файла fact.m:
                      type fact
  • Вызвать функцию fact с заданными параметрами:
                      fact (5)
                      ans= 120

М-сценарии.

Сценарии являются самым простым типом M-файла – у них нет входных и выходных аргументов. Они используются для автоматизации многократно выполняемых вычислений. Сценарии оперируют данными из рабочей области и могут генерировать новые данные для последующей обработки в этом же файле. Данные, которые используются в сценарии, сохраняются в рабочей области после завершения сценария и могут быть использованы для дальнейших вычислений.

Пример
Следующие операторы вычисляют радиус-вектор rho для различных тригонометрических функций от угла theta и строят последовательность графиков в полярных координатах.

Строка комментария
% M-file petals - сценарий построения лепесткового графика
theta = -pi:0.01:pi;
rho(1, :) = 2*sin(5*theta).^2;
rho(2, :) = cos(10*theta).^3;
rho(3, :) = sin(theta).^2;
rho(4, :) = 5*cos(3.5*theta).^3;
for i = 1:4
         polar (theta, rho(i, :))
         pause
end
Вычисления
Команды графического вывода

Создайте М-файл petals.m, вводя указанные выше операторы. Этот файл является сценарием. Ввод команды petals.m в командной строке системы MATLAB вызывает выполнение операторов этого сценария.

После того, как сценарий отобразит первый график, нажмите клавишу Return, чтобы перейти к следующему графику. В сценарии отсутствуют входные и выходные аргументы; программа petals.m сама создаёт переменные, которые сохраняются в рабочей области системы MATLAB. Когда выполнение завершено, переменные (i, theta и rho) остаются в рабочей области. Для того чтобы увидеть этот список, следует воспользоваться командой whos.

М-функции.

М-функции являются M-файлами, которые допускают наличие входных и выходных аргументов. Они работают с переменными в пределах собственной рабочей области, отличной от рабочей области системы MATLAB.

Пример
Функция average - это достаточно простой M-файл, который вычисляет среднее значение элементов вектора:

function y = average (x)
% AVERAGE Среднее значение элементов вектора.
% AVERAGE(X), где X - вектор. Вычисляет среднее значение элементов вектора.
% Если входной аргумент не является вектором, генерируется ошибка.
                 [m,n] = size(x);
                 if (~((m == 1) | (n == 1)) | (m == 1 & n == 1))
                      error('Входной массив должен быть вектором’)
                 end
                 y =sum(x)/length(x);            % Собственно вычисление

Попробуйте ввести эти команды в M-файл, именуемый average.m. Функция average допускает единственный входной и единственный выходной аргументы. Для того чтобы вызвать функцию average, надо ввести следующие операторы:

                 z = 1:99;
                 average(z)
                 ans = 50

Структура М-функции. M-функция состоит из:

  • строки определения функции;
  • первой строки комментария;
  • собственно комментария;
  • тела функции;
  • строчных комментариев;

Строка определения функции. Строка определения функции сообщает системе MATLAB, что файл является М-функцией, а также определяет список входных аргументов.

Пример
Строка определения функции average имеет вид:

           function y = average(x)

Здесь:

  1. function - ключевое слово, определяющее М-функцию;
  2. y - выходной аргумент;
  3. average - имя функции;
  4. x - входной аргумент.

Каждая функция в системе MATLAB содержит строку определения функции, подобную приведенной.

Если функция имеет более одного выходного аргумента, список выходных аргументов помещается в квадратные скобки. Входные аргументы, если они присутствуют, помещаются в круглые скобки. Для отделения аргументов во входном и выходном списках применяются запятые.

Пример

        function [x, y, z] = sphere(theta, phi, rho)

Имена входных переменных могут, но не обязаны совпадать с именами, указанными в строке определения функции.

Первая строка комментария. Для функции average первая строка комментария выглядит так:

              % AVERAGE Среднее значение элементов вектора

Это - первая строка текста, которая появляется, когда пользователь набирает команду help <имя_функции>. Кроме того, первая строка комментария выводится на экран по команде поиска lookfor. Поскольку эта строка содержит важную информацию об M-файле, она должна быть тщательно составлена.

Комментарий. Для M-файлов можно создать online-подсказку, вводя текст в одной или более строках комментария.

Пример
    Сформируем несколько строк комментария

              % Функция average(x) вычисляет среднее значение элементов вектора x.
              % Если входной аргумент не является вектором, выдается ошибка.

Тогда при вводе команды подсказки help <имя_функции>, система MATLAB отображает строки комментария, которые размещаются между строкой определения функции и первой пустой строкой, либо началом программы. Команда help <имя_функции> игнорирует комментарии, размещенные вне этой области.

Пример

         help sin
         SIN Sine.
              SIN(X) is the sine of the elements of X
              SIN(X) вычисляет функцию синуса элементов массива X.

Оглавление каталога. Можно создать комментарий для целого каталога, если сформировать специальный файл с именем Contents.m. Этот файл должен содержать только строки комментариев.

MATLAB выводит на экран строки файла Contents.m по команде help <имя_каталога>.

Если каталог не содержит файла Contents.m, то по команде help <имя_каталога> распечатывается первая строка комментария для каждого M-файла данного каталога.

Тело функции. Тело функции содержит код языка MATLAB, который выполняет вычисления и присваивает значения выходным аргументам. Операторы в теле функции могут состоять из вызовов функций, программных конструкций для управления потоком команд, интерактивного ввода/вывода, вычислений, присваиваний, комментариев и пустых строк.

Пример
Тело функции average включает ряд простейших операторов программирования:

Оператор вызова функции size
Начало оператора if
[m, n] = size(x);
if (~((m == 1) | (n == 1)) |
   (m == 1 & n == 1))
   Error('Input должно быть вектором')
end
y = sum(x)/length(x);
Сообщение об ошибке

Конец оператора if
Вычисление и присваивание

Как уже говорилось ранее, комментарии отмечаются знаком (%). Строка комментария может быть размещена в любом месте M-файла, в том числе и в конце строки.

Пример

          % Найти сумму всех элементов вектора x
                   y = sum(x)                    % Использована функция sum
.

Кроме строк комментариев в текст М-файла можно включать пустые строки. Однако надо помнить, что пустая строка может служить указателем окончания подсказки.

Имена М-функций. В системе MATLAB на имена М-функций налагаются те же ограничения, что и на имена переменных - их длина не должна превышать 31 символа. Более точно, имя может быть и длиннее, но система MATLAB принимает во внимание только первые 31 символ. Имена М-функций должны начинаться с буквы; остальные символы могут быть любой комбинацией букв, цифр и подчеркиваний.

Имя файла, содержащего М-функцию, составляется из имени функции и расширения “.m”.

Пример

          average.m
Если имя файла и имя функции в строке определения функции разные, то используется имя файла, а внутреннее имя игнорируется. Хотя имя функции, определенное в строке определения функции, может и не совпадать с именем файла, настоятельно рекомендуется использовать одинаковые имена.

Двойственность функций и команд. Команды системы MATLAB - это операторы вида:
            load
            help

Многие команды могут быть модифицированы добавлением операндов:
            load August17.dat
            help magic
            type rank

Альтернативный метод задания модификаторов - определить их в качестве строковых аргументов функции:

            load('August17.dat')
            help('magic')
            type('rank')

В этом заключается двойственность понятий команды и функции в системе MATLAB. Любая команда вида

            command argument

может быть записана в форме функции

            command('argument').

Преимущество функционального описания проявляется, когда строка аргументов формируется по частям. Следующий пример показывает, как может быть обработана последовательность файлов August1.dat, August2.dat, и т.д. Здесь используется функция int2str, которая переводит целое число в строку символов, что помогает сформировать последовательность имён файлов.

            for d = 1:31
                  s = ['August' int2str(d) '.dat']
                  load(s)    %Загрузить файл с именем August'd'.dat
                  % Операторы обработки файла
            end

  В оглавление книги \ К следующему разделу \ К предыдущему разделу \ Предметный указатель

 


Поиск по сайту:

Система Orphus

Яндекс.Метрика