【发布时间】:2018-10-23 14:12:06
【问题描述】:
我有一个关于在 Matlab 中使用 polyval 函数的简单性能问题。
目前,我有一个 x 向量,它可以很长(>1000 个标量)。我想对每个 x 应用不同的多项式形式。
多项式形式存储在二维数组中,并像下面的代码一样在循环中应用。随着 polyval 的优化,代码相对较快,但循环可能很长,性能至关重要,因为它是一个目标函数,可以在一个过程中计算数千次。
关于如何提高性能的任何想法?
谢谢
% ---------- Objective Function ------------------
function [obj] = obj(x, poly_objective)
polyvalue = zeros(length(x),1);
for index = 1: length(x)
polyvalue (index) = polyval(poly_objective(index,:), x(index));
end
obj= -sum(polyvalue );
end
% -------------------------------------------------
【问题讨论】:
-
poly_objective的大小是多少?确定length(x)等于size(poly_objective,1)吗?另外,您是否需要根据您的代码仅求和的单个多项式的结果? -
感谢您在下面的回复。你是对的,我只需要总和。这会改变问题(和答案)吗?
-
不,我不知道如何加快计算总和的速度。只需获取
polyvalue,然后获取sum(polyvalue)
标签: matlab performance polynomial-math