Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

映射到不同值类型

在映射结构体中存储其他类很常见,例如结构体或元胞数组。但是,当映射中存储的数据属于双精度值、字符、整数、逻辑值等基本 MATLAB® 类型之一时,映射使用内存的效率最高。

映射到结构体数组

以下示例将飞机座位号映射到包含机票编号和目的地的结构体。从映射 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});

使用该映射对象,查找有关预定了座位 09C 的乘客的信息:

seatingMap('09C')

ans = 

      ticketNum: 'B7398'
    destination: 'Granada'
       reserved: '30-Apr-2008'
         origin: 'JFK'

同时使用 ticketMapseatingMap,可以查找预订了座位 15B 的人员的姓名:

ticket = seatingMap('15B').ticketNum;
passenger = ticketMap(ticket)

passenger =

Sarah Latham

映射到元胞数组

与结构体一样,您还可以映射到映射对象中的元胞数组。继续使用前面部分中的航空公司示例,该航班的一些乘客拥有该航空公司的“飞行常客”帐户。将这些乘客的姓名映射到他们已使用和仍可用的飞行里程数记录:

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.

另请参阅

| | | | |

相关主题