48968 (597417), страница 15

Файл №597417 48968 (Система математических расчетов MATLAB) 15 страница48968 (597417) страница 152016-07-30СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 15)

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 =

[3x3 double] [3x3 double]

Напомним, что при задании двух выходных аргументов, выходом функции eig(B) является модальная матрица, составленная из нормированных собственных векторов матрицы B и ди-агональная матрица собственных значений. Вы можете вывести в командное окно действи-тельные значения собственных векторов и значений вводя D{1} и D{2}.

Применение функций и операторов

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

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

A{1, 2} = randn (3,3);

A{1, 3} = 1 : 5;

Тогда, для применения функции sum к содержимому первой ячейки массива запишем

B = sum (A{1,1})

Что приводит к следующему результату

B =

4 6

Для применения той же функции к нескольким ячейкам не вложенных массивов ячеек, нуж-но применить цикл:

for i = 1:length(A)

M{i} = sum(A{1,i});

end

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

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

  • Вам нужен доступ ко многим полям данных при помощи одного обращения.

  • Вы хотите иметь доступ к подмножеству данных в виде списка значений.

  • У вас нету фиксированного набора имен полей.

  • Вам приходится часто удалять поля из структуры.

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

  • Массива размера 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) = {[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];

Характеристики

Тип файла
Документ
Размер
9,13 Mb
Тип материала
Учебное заведение
Неизвестно

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6549
Авторов
на СтудИзбе
300
Средний доход
с одного платного файла
Обучение Подробнее