Matlab使用多个容器。Map引发索引超出矩阵维数的错误
下面是一个示例代码: A类:Matlab使用多个容器。Map引发索引超出矩阵维数的错误,matlab,map,Matlab,Map,下面是一个示例代码: A类: classdef classA properties mapOfB end methods function self = classA(names) self.mapOfB = containers.Map(); for i = 1:numel(names) self.mapOfB(names{i}) = classB(names
classdef classA
properties
mapOfB
end
methods
function self = classA(names)
self.mapOfB = containers.Map();
for i = 1:numel(names)
self.mapOfB(names{i}) = classB(names);
end
end
end
end
B类:
classdef classB
properties
mapTest
end
methods
function self = classB(names)
self.mapTest = containers.Map();
for i = 1:numel(names)
self.mapTest(names{i}) = rand(1,3);
end
end
end
end
主脚本:
names = {'one', 'two', 'three', 'four'};
a = classA(names);
a.mapOfB
a.mapOfB.keys
a.mapOfB('one')
a.mapOfB('one').mapTest
a.mapOfB('one').mapTest.keys
a.mapOfB('one').mapTest('one')
控制台输出:
a.mapOfB('one').mapTest.keys
ans =
'four' 'one' 'three' 'two'
a.mapOfB('one').mapTest('one')
Error using subsref
Index exceeds matrix dimensions.
我不明白为什么在调用映射中的映射项时会出现索引超出矩阵维度错误。这是一个限制 这一行完全等同于“a.mapOfB('one').mapTest('one')”,不会引发错误
builtin('_paren', a.mapOfB('one').mapTest, 'one')
因此,这不是一个“真实”错误,而是对MATLAB语法或containers.Map的subsref()运算符实现的限制
另请参见我不知道确切的答案,但我想这与matlab中的两种工作方式有关。