鉴于以下结构:

mapA=containers.Map('a', 1);
mapB=containers.Map('b', 2);
mapAB = containers.Map({'A', 'B'}, {mapA, mapB});

如何更改以下位置的值: mapAB('A')('a')mapAB('A')('a') 给出错误:Error: ()-indexing must appear last in an index expression.
阅读可以这样做:
p=mapAB('A');
p=p('a');

但是在索引 ('A')('a') 上写呢?

最佳答案

container.Map 对象是句柄类,因此要在您的示例中更改 mapAB('A') 您还可以修改 mapA:

mapA=containers.Map('a', 1);
mapB=containers.Map('b', 2);
mapAB = containers.Map({'A', 'B'}, {mapA, mapB});
mapA('a') = 3;

tmp = mapAB('A');
disp(tmp('a')); % will print 3

如果您以后无法访问 mapAmapB ,则必须使用临时变量进行修改,类似于上述:
tmp = mapAB('A');
tmp('a') = 5;
% The following line is not necessary, since you're dealing with handle-objects:
% mapAB('A') = tmp;

关于matlab - 在 Matlab 中索引 map ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18822517/

10-15 07:36