Материал: MATLAB. Довідник для користувача

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Многомерные массивы структур

Многомерные массивы структур явлеются распространением обычных двумерных, то есть плоских структур. Подобно другим типам многомерных массивов, вы можете строить их как прямым присваиванием, так и применением функции cat.

patient(1,1,1).name = 'John Doe'; patient(1,1,1).billing = 127.00;

patient(1,1,1).test = [79 75 73; 180 178 177.5; 220 210 205]; patient(1,2,1).name = 'Ann Lane';

patient(1,2,1).billing = 28.50;

patient(1,2,1).test = [68 70 68; 118 118 119; 172 170 169]; patient(1,1,2).name = 'Al Smith';

patient(1,1,2).billing = 504.70;

patient(1,1,2).test = [80 80 80; 153 153 154; 181 190 182]; patient(1,2,2).name = 'Dora Jones';

patient(1,2,2).billing = 1173.90;

patient(1,2,2).test = [73 73 75; 103 103 102; 201 198 200];

Геометрически данную структуру можно отобразить следующим образом

Применение функций к многомерным массивам структур

Для применения функций к многомерным массивам структур. нужно использовать индексирование полей. Например, найдем сумму столбцов структуры test в patient(1,1,2):

sum((patient(1,1,2).test));

Аналогично, просуммируем все поля billing в многомерном массиве patient:

total = sum([patient.billing]);

96

ПРОГРАММИРОВАНИЕ НА MATLAB-е

Программирование на языке MATLAB : Быстрый старт

М-файлы языка MATLAB могут быть или сценариями (scripts), которые просто выполняют серию операторов (выражений), или же они могут быть функциями (functions), допускающими также входные аргументы и выходные переменные. Вы можете создать М-файлы используя текстовой редактор и затем использовать их как любую другую функцию или команду системы MATLAB.

Впростейшем случае процесс выглядит так:

1.Вы создаете М-файл используя текстовой редактор.

2.Вызываете М-файл из командной строки или же из другого М-файла. Схематически это можно отобразить следующим образом:

Типы М-файлов

Как указывалось выше, имеется два типа М-файлов, общие свойства которых приведены в таблице

М-сценарии

 

М-функции

· Не допускают входных и выходных

· Допускают входные и выходные

переменных

 

аргументы

· Оперируют в данными из рабочей

·

Внутренние переменные по

области

 

умолчанию являются локальными по

 

 

отношению к функциям

· Предназначены для автоматизации

·

Предназначены для расширения

последовательности шагов, которые

 

возможностей языка MATLAB

нужно выполнять много раз

 

(библиотеки функций, пакеты

 

 

прикладных программ)

Что такое М-файл ?

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

function f = fact (n) % Строка определения функции

97

% FACT Factorial. % Первая строка помощи (H1 line)

%FACT(N) returns the factorial of N, H! % Текст помощи (Help text)

%usually denoted by N!

%Put simply, FACT(N) is PROD(1:N).

f = prod(1:n); % Тело функции

Эта функция имеет некоторые элементы, которые являются общими для всех функций систе-

мы MATLAB:

Строка определения функции. Эта строка задает имя функции , а также число и порядок входных и выходных аргументов.

Строка H1 (H1 line). H1 обозначает «первую строку» помощи. MATLAB выводит эту строку в командное окно, когда вы пользуетесь функцией lookfor или запрашиваете помощь по всей директории.

Текст помощи (Help text). MATLAB выводит в командное окно данный текст вместе со строкой H1, когда вы запрашиваете помощь по конкретной функции, то есть вводите help

Имя_Функции.

Тело функции. Эта часть функции содержит коды (команды), которые выполняют вычисления и определяют значения всех выходных переменных.

Обеспечение помощи для вашей программы

Вы можете снабдить пользователя информацией(помощью) о вашей программе, путем включения раздела текста помощи в начало М-файла. Этот раздел начинается со строки, следующей непосредственно за строкой опеределения функции и заканчивается на первой пустой строке, или строке тела функции. Каждая строка текста (эти строки окрашены в зеленый цвет) помощи должна начинаться символом процента(%). MATLAB выводит в командное окно данный текст каждый раз когда вы вводите

help Имя_Функции

Вы можете также написать текст помощи для всей директории , путем создания файла со специальным именем Contents.m, который находится в вашей директории. Этот файл долже содержать только строки комментариев, то есть каждая строка должна начинаться со знака процента. MATLAB выводит на дисплей строки файлаContents.m всякий раз, когда вы вводите в командное окно строку

help Имя_Директории

Если данная директория не содержит файл Contents.m, то при вводе help Имя_Директории в командное окно выводится первая строка помощи (H1 line) для каждого файла директории.

Создание М-файлов: Использование текстовых редакторов

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

Внимание! Для вызова редактора нужно в меню File выбрать New и затем M-File.

Другой способ вызова редактира М-файла из командной строки состоит в использовании функции edit. For example, при вводе

edit foo

98

MATLAB открывает встроенный текстовой редактор на файлеfoo.m. Если не указать имени файла, то будет вызван редактор с новым, неозаглавленным файлом. Вы можете создать функцию fact, приведенную выше, путем открытия вашего текстового редактора, ввода показанных строк, и запоминанием текста в файле под названиемfact.m в вашей текущей директории.

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

what

Можно также распечатать в командном окне файл командой

type fact

Наконец, вы можете вычислить факториал любого целого числа, например, 5-и

fact(5) ans =

120

Внимание! Сохраняйте все созданные или измененные вами М-файлы в директории(каталоге), который не находится в дереве каталоговMATLAB-а. Если вы сохраните ваши М-файлы в дереве каталогов MATLAB-а, они могут быть уничтожены при установке новой версии MATLAB-а.

Сценарии

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

Простой пример сценария

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

% An M–file script to produce

% Линия комментариев

% "flower petal" plots

 

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. Этот файл является теперь сценарием MATLAB-а. Ввод команды petals (лепестки) в командной строке MATLAB –а приводит к выполнению команд сценария. Команда pause приостанавливает выполнение

99

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

Функции

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

MATLAB-а.

Простой пример функции

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

function y = average(x)

%AVERAGE Mean of vector elements.

%AVERAGE(X), where X is a vector, is the mean of vector elements.

%Non-vector input results in an error.

[m,n] = size(x);

if (~((m == 1) | (n == 1)) | (m == 1 & n == 1)) error('Input must be a vector')

end

y = sum(x) / length(x) ; % Фактические вычисления

При вводе не векторной величины, данная функция выдает сообщение об ошибке (более точно, на дисплей выводится фраза «Вход должен быть вектором»). Вы можете ввести эти команды в М-файл, названный average.m. Функция average допускает единственный вход и возвращает единственный выходной аргумент. Для обращения к данной функции, введите

z = 1:99; average(z)

что даст следующий результат

ans =

50

Основные части синтаксиса М-функций

Функции в общем случае состоят из следующий частей:

·Строка определения функции (The Function Definition Line)

·Строка помощи H1 (The H1 Line)

·Текст помощи (Help Text)

·Тело функции (The Function Body)

·Комментарии (Comments)

Строка определения функции

Строка определения функции информирует систему MATLAB , что М-файл содержит функцию, и задает последовательность входных и выходных переменных. Для функции average эта строк имеет следующий вид:

100