【问题标题】:Fast array as argument passing in MATLAB快速数组作为参数在 MATLAB 中传递
【发布时间】:2010-11-25 05:37:47
【问题描述】:

我有一个矩阵I,我想在一个数组A 中累积,对于I 中的每个值,与I 中的这些值相对应的间隔让我们称它们为i 和@987654328 @。

function acc(i,j)
  global A
  A(i:j) = A(i:j)+1;
end

但是,传递和返回数组需要太多时间,因为我多次执行该函数,并没有那个例子那么简单。

有什么方法可以加快速度吗?如何在没有全局的情况下传递返回这些值?

【问题讨论】:

  • 如果我们建议对您的简单示例进行改进,您不会再次发帖解释为什么它们不适合您真正想做的事情吗?如果您试图保护我们免受实际问题的影响,您怎么能期望得到真正的帮助呢?
  • 看看这个答案stackoverflow.com/questions/1258761/… 把 acc 写成嵌套函数。 @zellus:我同意 - 所有答案都已经给出。
  • @Jonas: thx 嵌套函数解决了我的问题.. 它加速了算法

标签: function matlab performance arguments


【解决方案1】:

cmets 中的链接建议使用嵌套函数作为解决方案。如果您正在使用的函数在多个不同的地方使用,您可能不想在每个地方嵌套。如果是这样,我会尝试使函数修改到位。

http://blogs.mathworks.com/loren/2007/03/22/in-place-operations-on-data/

function A = acc(A,i,j)
  A(i:j) = A(i:j)+1;
end

只要您符合 Loren 博文中规定的要求,就不需要制作副本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多