Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Создание массива символьных ячеек из массива строк

Поиск

Для создания из массива символов S строкового массива ячеек может использоваться функция cellstr(S). Каждый ряд массива символов превращается в отдельную ячейку. Следующий пример поясняет применение функции cellstr:

>> S={'Привет' 'дорогой' 'друг'};

>> C=cellstr(S)

C = 'Привет' 'дорогой' 'друг'

Это еще один способ формирования массивов ячеек.

Функция iscellstr(C) равна 1, если ее аргумент С – строковый массив ячеек, и 0, если это неверно.

Присваивание с помощью функции deal

С помощью функции deal возможно множественное присваивание входных данных выходным:

[A,B,C,…]=deal(X,Y,Z,…) обеспечивает последовательное присваивание входных данных выходным, то есть A=X, B=Y, C=Z и т. д.;

[A,B,C,…]=deal(X) присваивает единственный вход всем выходам, то есть A=X, B=X, C=X и т. д.

Возможен ряд полезных применений функции deal:

[S.FIELD]=deal(X) присваивает всем полям FIELD структуры S значения X. Если S не существует, то нужно использовать конструкцию [S(1:M).FIELD]=deal(X);

[X{:}]=deal(A.FIELD) копирует поля FIELD структуры A в массив ячеек X. Если X не существует, следует использовать конструкцию [X{1:M}]=deal(A.FIELD);

[A,B,C,…]=deal(X{:}) копирует содержимое массива ячеек X в отдельные переменные A, B, C, …;

[A,B,C,…]=deal(S.FIELD) копирует содержимое поля FIELD массива структур S в отдельные переменные A, B, C, ….

Следующий пример иллюстрирует применение функции deal:

>> [X,Y,Z]=deal(1,2+3i,'Привет!')

X = 1

Y = 2.0000 + 3.0000i

Z =Привет!

>> [X Y Z]=deal(“Привет!”)

X =Привет!

Y =Привет!

Z =Привет!

Тестирование имен массивов ячеек

Ввиду обилия типов данных в системе MATLAB часто возникает необходимость их тестирования. Для тестирования массивов ячеек может использоваться функция iscell(C), которая возвращает логическое значение 1, если C – массив ячеек, и 0 в противном случае. Это поясняют следующие примеры:

>> t=iscell(A)

t = 1

>> B=[1 2 3];

>> iscell(B)

ans = 0

Функции преобразования типов данных

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

num2cell(A) преобразует массив чисел A в массив ячеек и возвращает последний. Возвращаемый массив имеет тот же размер, что и исходный массив A;

num2cell(A,DIM) преобразует массив чисел A в массив ячеек, помещая в отдельные ячейки фрагменты, соответствующим разным значениям индекса вдоль измерения, указанного параметром DIM.

Примеры применения данной функции:

>> A=[1 2; 3 4; 5 6]

A =

1 2

3 4

5 6

>> num2cell(A,2)

ans =

[1x2 double]

[1x2 double]

[1x2 double]

>> num2cell(A,[1 2])

ans = [3x2 double]

cell2struct(C,FIELDS,DIM) преобразует массив ячеек C в массив структур вдоль размерности DIM, сохраняя размер массива C по этой размерности в записи структуры. Размерность 1 – столбцы. Размерность 2 – строки. Пример преобразования:

>> C={'Привет!',123,2+3i}

C = 'Привет!' [123] [2.0000+ 3.0000i]

>> f={'name','number','complex'};

>> S=cell2struct(C,f,2)

S =

name: 'Привет!'

number: 123

complex: 2.0000+ 3.0000i

struct2cell(S) преобразует массив структур S размером m х n, в котором содержатся p полей, в массив ячеек, так что возвращаемый массив будет иметь размер p х m х n. Если массив записей многомерный, то возвращаемый массив будет иметь размер, равный [p size(S)]. Пример такого преобразования приводится ниже:

>> C=struct2cell(S)

C =

'Привет!'

[ 123]

[2.0000 + 3.0000i]

 

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

Создание многомерных массивов ячеек

С помощью функции cat можно формировать многомерные массивы ячеек. Например, трехмерный массив C формируется следующим образом (m-файл с именем ce2.m):

A{1,1}='Курить вредно!';

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

A{2,1}=2+3i;A{2,2}=0:0.1:1;

B{1,1}='Пить тоже вредно!';

B{1,2}=[1 2 3 4];

B{2,1}=2;

B{2,2}=2*pi;

C=cat(3,A,B);

Теперь можно просмотреть данный массив, имеющий две страницы:

>> ce2

>> C

C(:,:,1) =

'Курить вредно!' [2x2 double]

[2.0000+ 3.0000i] [1x11 double]

C(:,:,2) =

'Пить тоже вредно!' [1x4 double]

[ 2] [ 6.2832]

Этот многомерный массив можно просмотреть с помощью команды cellplot(С).

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

Рис. 2. Отображение трехмерного массива ячеек командой cellplot

 

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

>> C(1,1,1)

ans = 'Курить вредно!'

>> C(1,1,2)+

ans = 'Пить тоже вредно!'

 

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

Содержимым ячейки массива ячеек может быть, в свою очередь, произвольный массив ячеек. Таким образом, возможно создание вложенных массивов ячеек – пожалуй, самого сложного типа данных. В следующем примере показано формирование массива ячеек A с вложенным в него массивом B (он был создан в примере выше):

>> clear A;

>> A(1,1)={{magic(3),{'Hello!'}}};

>> A(1,2)={B};

>> A

ans = {1x2 cell} {2x2 cell}

>> A{1}

ans = [3x3 double] {1x1 cell}

>> A{2}

ans =

'Пить тоже вредно!' [1x4 double]

[ 2] [ 6.2832]

>> cellplot(A)

На рис. 3 показано отображение массива A с вложенным в него массивом B.

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

 

Рис. 3. Графическое представление массива с вложенным в него другим массивом

Урок 6



Поделиться:


Последнее изменение этой страницы: 2016-04-23; просмотров: 335; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.233.15 (0.005 с.)