p align="left"> A{1,2}(1,2) = {'Test 1'}; A{1,2}(2,1) = {[2-4i 5+7i]}; A{1,2}(2,2) = {cell(1,2)} A{1,2}{2,2}(1) = {17}; Отметим использование фигурных скобок до последнего уровня вложенных индексов. Вы также можете конструировать вложенные массивы ячеек непосредственно с использова-нием операторов присваивания, как это показано в шаге 3 выше. Индексация вложенных массивов ячеек Для индексации вложенных ячеек нужно объединить выражения индексов. Первый набор индексов обеспечивает доступ к верхнему уровню ячеек, а последующие наборы скобок обеспечивают последовательный доступ к последующим уровням. Например, следующий массив имеет три уровня вложения · Для доступа к массиву 5х5 ячейке (1,1) используйте A{1,1}. · Для доступа к массиву 3х3 в позиции (1,1) ячейки (1,2) используйте A{1,2}{1,1}. · Для доступа к ячейке 2х2 в ячейке (1,2) используйте A{1,2}. · Для доступа к пустой ячейке в позиции (2,2) ячейки (1,2) запишем A{1,2}{2,2}{1,2}. Преобразования между массивами ячеек и числовыми массивами Для перехода от формата массива ячеек к числовому массиву следует воспользоваться прог-раммой, включающей цикл. Например, создадим массив ячеек F: F{1,1} = [1 2; 3 4]; F{1,2} = [-1 0; 0 1]; F{2,1} = [7 8; 4 1]; F{2,2} = [4i 3+2i; 1 - 8i 5]; Используем теперь три вложенных цикла для копирования содержимого массива F в число-вой массив NUM. for k = 1:4 for i = 1:2 for j = 1:2 NUM(i,j,k) = F{k}(i,j); end end end Аналогично, вы должны использовать петли for для присваивания каждого значения число-вого массива одной ячейке массива ячеек: G = cell(1,16); for m = 1:16 G{m} = NUM(m); end Массивы ячеек, содержащие структуры Для хранения групп структур с различной архитектурой полей можно использовать массивы ячеек c_str = cell(1,2); c_str{1}.label = '12/2/94 - 12/5/94'; c_str{1}.obs = [47 52 55 48; 17 22 35 11]; c_str{2}.xdata = [-0.03 0.41 1.98 2.12 17.11]; c_str{2}.ydata = [-3 5 18 0 9]; c_str{2}.zdata = [0.6 0.8 1 2.2 3.4]; Ячейка l массива c_str содержит структуру с двумя полями, где в одном поле хранится стро-ка символов, а во втором - вектор. Ячейка 2 содержит структуру с тремя полями векторов. При создании массивов ячеек, содержащих структуры, вы должны применить индексирова-ние фигурными скобками. Аналогично, вы должны применить фигурные скобки для получе-ния структур, содержащихся внутри ячеек. Общий синтаксис при этом имеет вид: 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 всякий раз, когда вы вводите в командное окно строку
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28
|