Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
matlab_5.3(учебник).DOC
Скачиваний:
4
Добавлен:
01.03.2025
Размер:
2 Мб
Скачать
☆

4. Программирование в системе matlab

4.1. Структура m-файла сценария и функции

     Файлы, которые содержат коды языка Matlab, называются m-файлами. Существует два типа m-файлов: m-сценарии и m-функции с характеристиками, описанными в таблице:

Таблица 4.1 - Характеристики m-файлов

m-сценарий

m-функция

Не использует входных и выходных аргументов

Использует входные и выходные аргументы

Оперирует с данными из рабочей области

По умолчанию, внутренние переменные являются локальными по отношению к функции

Предназначен для автоматического выполнения последовательности шагов, которые нужно выполнять много раз

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

     Как видно из таблицы, применение m-функций обеспечивает для системы Matlab свойства расширяемости.

     Структура m-функции состоит из следующих компонентов:

  • первая строка содержит имя функции ее входные и выходные переменные (fuction [выходние переменные (перечисляются через запятую)]=<имя функции>(входные переменные, перечисляемые через запятую));

  • после объявления имени функции обычно следуют строки коментариев, которые описывают m-функцию;

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

     Пример 4.1. В качестве примера приведем m-функцию ctrb из библиотеки Matlab (эта функция вычисляет матрицу управляемости для линейной динамической системы [10]):

function c = ctrb(a,b)

%ctrb Compute the controllability matrix.

%c=ctrb(A,B) returns the controllability matrix [B AB A^2B ...].

%c = ctrb(SYS) returns the controllability matrix of the

%state-space model SYS with realization (A,B,C,D). This is

%equivalent to ctrb(sys.a,sys.b).

%For ND arrays of state-space models SYS, c is an array with N+2

%dimensions where c(:,:,j1,...,jN) contains the controllability

%matrix of the state-space model SYS(:,:,j1,...,jN).

%See also ctrb, ss.

%Copyright (c) 1986-1999 Mathworks, Inc. All Rights Reserved.

%$Revision: 1.5 $ $Date: 1999/01/05 12:08:31 $

error(nargchk(2,2,nargin))

n = size(a,1);

c = b;

for i=1:n-1,

c = [b a*c];

end

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

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

     Каждой m-функции выделяется дополнительная область памяти, не пересекающаяся с рабочей областью системы Matlab. Такая область называется рабочей областью функции. Каждая функция имеет свою собственную рабочую область. При работе с системой можно получить доступ только к переменным, размещенным в рабочей области системы или в рабочей области функции. Если переменная объявлена глобальной, то ее можно рассматривать как бы принадлежащей нескольким рабочим областям. Примеры m-сценариев и m-функций приведены в разделе 4.8 (см. примеры 4.7, 4.8).

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]