Matlab:容器内的切片矩阵.映射总是需要中间引用



序言:

我正在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中,双索引唯一有效的情况是针对单元阵列。在这种情况下,您可以使用输出{…}(…(

但是,在任何其他情况下,双重索引都会导致错误。

最新更新