2015-11-30 83 views
2

假设我有一个结构:是否有可能在Matlab中将结构转换为地图?

myStruct = struct() 
myStruct.a = 1; 
myStruct.b = 20; 
myStruct.c = 4; 

是否有可能将其转换映射,其中键是该结构域?例如,myMap('a')应返回1

+2

虽然@ Luis的回答是正确的,但我会注意到,您可以使用动态字段名称:'myStruct。('a')== 1'从结构中获得类似地图的行为。 – TroyHaskin

+2

@TroyHaskin好点。大概地图可以完全避免 –

+0

我不知道动态字段名称。这和路易斯的回答一样,解决了我的问题。 –

回答

5

这是可以做到如下:

myMap = containers.Map(fieldnames(myStruct), struct2cell(myStruct)); 

此使用语法myMap = containers.Map(keys, values),其中

  • keysmyStruct的字段名称的单元阵列,由该函数产生的fieldnames;
  • values是用struct2cell获得的值为mystruct的单元阵列。
相关问题