【问题标题】:Matlab code optimization [closed]Matlab代码优化[关闭]
【发布时间】:2011-11-03 23:11:21
【问题描述】:
f = @(w) test(w, phis, t, r_coeff);

function test(w, phis, t, r_coeff)    
  M = size(phis, 2);
  expt = exp(-t .* (phis * w'));
  coeff = expt .* t .^ 2 ./ (1 + expt) .^ 2;
  averaging_coef = 1.0 / M; % mean replace
  G = bsxfun(@times, phis', coeff' * averaging_coef) * phis + 2 * r_coeff * eye(M);
end
  • w - 大小为 (1xM)
  • phis - 大小为 (NxM)
  • t - 大小为 (Nx1)
  • r_coeff 是常数

请帮我优化这段代码,因为函数f 运行了一千次,N 在 300-800 左右,M 的大小几乎相同。当我这样做时* phis 性能下降。

如您所见,它仅取决于 w - 我不知道。

【问题讨论】:

标签: performance algorithm optimization matlab


【解决方案1】:

它已经很好地“优化”了。仅仅因为你想让它跑得更快是不可能的。

您可以购买/查找/借用/租用更快/更大的计算机。您可以选择解决较小的问题。你可以让它在一夜之间运行。或者,您可以将问题更改为更简单、更近似的问题,从而更快地运行。

这就是研究问题中发生的情况。它们会扩展到你的能力极限,甚至更多,因为解决简单的事情不值得一篇论文或论文。计算机也可以很容易地收集大量数据,因此问题会很快变得非常大。

数学和建模方面的一项特殊而罕见的技能是知道如何简化您的问题,删除不真正重要的术语,同时保留您希望研究的相同基本行为。这通常涉及非线性项的线性逼近。

【讨论】:

    猜你喜欢
    • 2011-11-03
    • 2011-11-30
    • 1970-01-01
    • 2011-11-02
    • 2017-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-04
    相关资源
    最近更新 更多