Смекни!
smekni.com

Система математических расчетов MATLAB (стр. 20 из 30)

При создании массивов ячеек, содержащих структуры, вы должны применить индексирова-ние фигурными скобками. Аналогично, вы должны применить фигурные скобки для получе-ния структур, содержащихся внутри ячеек. Общий синтаксис при этом имеет вид:

cell_array{index}.field

Например, чтобы получить содержимое поля label структуры в ячейке 1 нужно записать

c_str{1}.label

Многомерные массивы ячеек

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

Например, создадим простой трехмерный массив ячеек С из двух массивов А и В:

A{1,1} = [1 2; 4 5];

A{1,2} = 'Name';

A{2,1} = 2 – 4i;

A{2,2} = 7;

B{1,1} = 'Name2';

B{1,2} = 3;

B{2,1} = 0:1:3;

B{2,2} = [4 5]';

C = cat(3,A,B);

Общая структура индексации массива ячеек С имеет вид

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

Многомерные массивы структур явлеются распространением обычных двумерных, то есть плоских структур. Подобно другим типам многомерных массивов, вы можете строить их как прямым присваиванием, так и применением функции 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]);

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

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

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

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

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

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

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

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

М-сценарии

М-функции

  • Не допускают входных и выходных переменных
  • Допускают входные и выходные аргументы
  • Оперируют в данными из рабочей области
  • Внутренние переменные по умолчанию являются локальными по отношению к функциям
  • Предназначены для автоматизации последовательности шагов, которые нужно выполнять много раз
  • Предназначены для расширения возможностей языка MATLAB (библиотеки функций, пакеты прикладных программ)

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

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

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

% 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

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