Система математических расчетов MATLAB

Методическое пособие - Компьютеры, программирование

Другие методички по предмету Компьютеры, программирование

?ия данных в массивах ячеек

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

  • Вам нужен доступ ко многим полям данных при помощи одного обращения.
  • Вы хотите иметь доступ к подмножеству данных в виде списка значений.
  • У вас нету фиксированного набора имен полей.
  • Вам приходится часто удалять поля из структуры.

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

 

  • Массива размера 3х3, состоящего из измерений, полученных экспериментально.
  • Строки из 15 символов, содержащей имя инженера.
  • Массива размера 3х4х5, содержащего записи измерений за последние 5 эксперимен-тов.

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

Приведенный ниже пример показывает как можно обратиться к первым двум элементам мас-сива ячеек TEST.

 

[newdata, name] = deal (TEST{1:2})

 

а следующий пример демонстрирует то же при организации данных в виде структуры с тем же именем TEST:

 

newdata = TEST.measure

name = TEST.name

 

 

Вложение массивов ячеек

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

 

Создание вложенных массивов при помощи вложенных фигурных скобок

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

 

clear A

A(1,1) = {magic(5)};

A(1,2) = { { [ 5 2 8; 7 3 0; 6 7 3] Test 1; [2 4i 5 + 7i] {17 [ ] } } }

что даст

 

A =

[5x5 double] {2x2 cell}

 

Отметим, что правая часть второго оператора присваивания заключена в две пары фигурных скобок. Первая пара характеризует ячейку cell (1,2) массива ячеек A. Второй “набор” скобок представляет массив ячеек размера 2х2 внутри внешней ячейки.

 

Создание вложенных массивов при помощи функции cell

Для вложения массива ячеек при помощи функции cell, нужно назначить выход функции cell сушествующей ячейке. Например,

1. Создадим пустой массив размера 1х2

 

A = cell (1, 2);

 

2. Создадим массив ячеек размера 2х2 внутри A(1,2).

 

A(1,2) = {cell(2,2)};

 

3. Заполним массив А, используя выражения

 

A(1,1) = {magic(5)};

A{1,2}(1,1) = {[5 2 8; 7 3 0; 6 7 3]};

A{1,2}(1,2) = {Test 1};

A{1,2}(2,1) = {[24i 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

 

Массивы ячеек, содержащие структуры

Для хранения групп стру?/p>