Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
matlab_manual.rtf
Скачиваний:
354
Добавлен:
21.03.2016
Размер:
9.57 Mб
Скачать

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

Фигурные скобки, “{}”, являются такими же конструктурами массивов ячеек, как квадрат-ные скобки являются конструкторами числовых массивов. Фигурные скобки используются совершенно аналогично квадратным скобкам, за тем исключением, что их можно использо-вать для вложения массивов ячеек (см. ниже).

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

C = {[1 2], [3 4]; [5 6], [7 8]};

приводит к следующему массиву ячеек размера 2х2

Для объединения отдельных массивов ячеек в новые массивы, вы можете использовать квадратные скобки, как и при объединении числовых массивов.

Задание массивов ячеек при помощи функции cell

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

B = cell(2, 3);

Для заполнения ячеек массива В нужно прменить операторы присваивания:

B(1,3) = {1:3};

Доступ к данным массивов ячеек

Вы можете извлекать данные из массивов ячеек или же запоминать данные в имеющемся или вновь созданном массиве ячеек двумя способами:

  • Использованием индексации содержимого ячеек при помощи обычных индексов.

  • Использованием индексов, заключенных в фигурные скобки.

Доступ к данным массивов ячеек с использованием фигурных скобок

Вы можете использовать индексирование содержимого в правой части выражения для обра-щения ко всем данным в какой-либо отдельной ячейке. Для этого в левой части выражения следует задать переменную для записи содержимого ячейки. Заключите индексы ячеек в фигурные скобки. Это означает, что вы обращаетесь к содержимому ячейки. Рассмотрим следующий массив N размера 2х2:

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

N{1,2} = 'Name';

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

N{2,2} = 7;

Вы можете получить строку в N{1,2} записав

c = N{1,2}

При вводе данной строки MATLAB выдаст

c =

Name

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

A{1, :} = value и B = A{1, :} являются неправильными.

Для обращения к подмножествам содержимого одной ячейки нужно объединить индексиро-вание. Например, чтобы получить элемент (2,2) массива в ячейке N{1,1}, следует записать:

d = N{1,1} (2,2)

что даст

d =

5

Обращение к подмножествам массива ячеек

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

Удаление ячеек

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

.

A(:, 2) = [ ]

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

Изменение формы (размерностей) массива ячеек

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

A = cell(3, 4);

size(A)

ans =

3 4

B = reshape(A,6,2);

size(B)

ans =

6 2

Замена списка переменных массивами ячеек

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

  • В списке входных аргументов.

  • В списке выходных переменных.

  • В операциях отображения на дисплей.

  • При конструировании массивов (квадоатные скобки и фигурные скобки).

Если вы используете оператор двоеточия для индексации набора ячеек в сочетании с фигур-ными скобками, то MATLAB обращается с каждой ячейкой как с отдельной переменной. Например, допустим вы имеете массив ячеек T, где каждая ячейка содержит отдельный век-тор. Выражение T{1:5} эквивалентно списку векторов в первых пяти ячейках массива T, то есть оно равносильно записи

[ T{1} , T{2} , T{3} , T{4} , T{5} ]

Рассмотрим массив ячеек C:

C(1) = {[1 2 3]};

C(2) = {[1 0 1]};

C(3) = {1:10};

C(4) = {[9 8 7]};

C(5) = {3};

Для свертки векторов в C(1) и C(2) с использованием функции conv, нужно записать

d = conv(C{1:2})

d =

1 2 4 2 3

Для вывода на дисплей векторов со второго по четвертый введем

C{2:4}

Это даст

ans =

1 0 1

ans =

1 2 3 4 5 6 7 8 9 10

ans =

9 8 7

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

B = [ C{1}; C{2}; C{4} ]

что приводит к

B =

1 2 3

1 0 1

9 8 7

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

[D{1:2}] = eig (B)

D =