Довольно распространено сохранить другие классы, такие как структуры или массивы ячеек, в структуре Карты. Однако Карты являются большей частью памяти, эффективной, когда данные, хранившие в них, принадлежат одному из основных типов MATLAB® такой как дважды, char, целые числа и logicals.
Следующий пример сопоставляет места авиакомпании со структурами, которые содержат номера билетов и места назначения. Запустите с Карты ticketMap
, который сопоставляет номера билетов с пассажирами:
ticketMap = containers.Map(... {'2R175', 'B7398', 'A479GY', 'NZ1452'}, ... {'James Enright', 'Carl Haynes', 'Sarah Latham', ... 'Bradley Reid'});
Затем создайте следующий массив структур, содержа номера билетов и места назначения:
s1.ticketNum = '2S185'; s1.destination = 'Barbados'; s1.reserved = '06-May-2008'; s1.origin = 'La Guardia'; s2.ticketNum = '947F4'; s2.destination = 'St. John'; s2.reserved = '14-Apr-2008'; s2.origin = 'Oakland'; s3.ticketNum = 'A479GY'; s3.destination = 'St. Lucia'; s3.reserved = '28-Mar-2008'; s3.origin = 'JFK'; s4.ticketNum = 'B7398'; s4.destination = 'Granada'; s4.reserved = '30-Apr-2008'; s4.origin = 'JFK'; s5.ticketNum = 'NZ1452'; s5.destination = 'Aruba'; s5.reserved = '01-May-2008'; s5.origin = 'Denver';
Сопоставьте пять мест с этими структурами:
seatingMap = containers.Map( ... {'23F', '15C', '15B', '09C', '12D'}, ... {s5, s1, s3, s4, s2});
Используя этот объект Map, найдите информацию о пассажире, который зарезервировал место 09C:
seatingMap('09C') ans = ticketNum: 'B7398' destination: 'Granada' reserved: '30-Apr-2008' origin: 'JFK'
Используя ticketMap
и seatingMap
вместе, можно найти имя человека, который зарезервировал место 15B:
ticket = seatingMap('15B').ticketNum; passenger = ticketMap(ticket) passenger = Sarah Latham
Как со структурами, можно также сопоставить с массивом ячеек в объекте Map. Продолжая пример авиакомпании предыдущих разделов, у некоторых пассажиров на полете есть учетные записи “часто летающего пассажира” с авиакомпанией. Сопоставьте имена этих пассажиров к записям количества миль, которые они использовали и количество миль, которые они все еще имеют в наличии:
accountMap = containers.Map( ... {'Susan Spera','Carl Haynes','Anna Latham'}, ... {{247.5, 56.1}, {0, 1342.9}, {24.6, 314.7}});
Используйте Карту, чтобы получить сведения об аккаунте на пассажирах:
name = 'Carl Haynes'; acct = accountMap(name); fprintf('%s has used %.1f miles on his/her account,\n', ... name, acct{1}) fprintf(' and has %.1f miles remaining.\n', acct{2}) Carl Haynes has used 0.0 miles on his/her account, and has 1342.9 miles remaining.
ячейка
| containers.Map
| isKey
| ключи
| struct ()
| значения