序言:
我正在Matlab中设计/原型设计一段代码。
由于目前我还不清楚函数应该返回哪些矩阵,因此作为一种通用方法,我选择将返回的值绑定到containers.Map
中(例如在python中(。
因此,一般设置为
function output = myfoo(args)
output = containers.Map;
...some stuff
output('outname1') = ...
output('outname2') = ...
end
这种方法的优点是允许我添加更多返回的数据,而不会过多地扰乱其他代码或破坏向后兼容性。
问题:
如何以优雅的方式处理矩阵切片?
说我需要做一些类似的事情
output('outname1')(2:end) = ...
(这给出了一个错误,因为不允许有两个索引,还有一个无聊的解决方法,比如
temp = output('outname1')
temp(2:end) = ...
output('outname1') = temp
是必需的(。
问题:
有没有一种熟练的方法来处理这个问题,避免所有这些引用/复制工作?
不,没有临时变量是无法实现的。在Matlab中,双索引唯一有效的情况是针对单元阵列。在这种情况下,您可以使用输出{…}(…(
但是,在任何其他情况下,双重索引都会导致错误。