在Matlab中保存您的对象

时间:2013-06-18 13:27:10

标签: matlab object collections

我想将一组对象存储在一个带有键对象的关联数组中。目标是以后能够使用密钥查找对象。

我希望我能够使用containers.map内置类。我编写了以下示例代码来说明我的意思:

classdef clsMyClass < handle
   properties 
      dblMyProperty1
   end 
   methods
      function self = clsMyClass(dblValue)
        if nargin > 0
          for intCounter = numel(dblValue):-1:1
              self(intCounter).dblMyProperty1 = dblValue(intCounter);
          end                
        end
      end      
   end
end 

classdef clsMyClassCollection < handle
   properties 
      contMyCollection
   end 
   methods
      function self = clsMyClassCollection(strValues,strKeys)
        if nargin > 0
          self.contMyCollection= containers.Map(strKeys, clsMyClass(strValues));
        end
      end      
   end
end 

for i=10:-1:1 ; vecKeys{i} = ['A' num2str(i)];end;
objMyClassCollection = clsMyClassCollection ([0:10:90],vecKeys);

这将导致以下错误:

??? Error using ==> containers.Map
The values must be a cell array when the keys are a cell array.

如果我可以在修复此错误方面获得一些帮助,并且如果您可以告诉我这是否是实现关键对象集合的最佳方式,那就太棒了。

1 个答案:

答案 0 :(得分:2)

尝试

self.contMyCollection= containers.Map(strKeys, num2cell( clsMyClass(strValues)) );