1

我有一个适合对象的数组,我需要用几个值来评估它们中的每一个。因为有超过一千个合适的对象,我发现循环它们并用值评估它们非常慢。那么有没有办法使用某种矢量化解决方案呢?

例如,我可以通过以下方式评估单个 fit 对象

fitArray{1,1}(400)

但我想做的是一次评估多个 fit 对象,如下所示:

fitArray{1:1000}(400)

Matlab 中的循环总是很慢,在这种情况下它真的很慢,因为我需要评估每个适合多个值的情况。

那么有没有办法在不循环的情况下做到这一点?

4

2 回答 2

0

循环不是这里最大的问题,例如 fitoptions 的速度……内存分配很糟糕,所以尝试在循环本身之前执行所有操作(fitoptions,fittype 等......)。如果您使用多项式拟合并且不需要 cfit 结构,请尝试使用 polyfit - 应该会快得多。

于 2013-02-14T19:08:24.570 回答
0

我自己找到了答案。毕竟这很简单。我通过这样做达到了我想要的结果:

vals = repmat({values}, size(fitArray));
evals = cellfun(@feval, fitArray, vals);

这将使用 vals 数组中相应行中的值评估元胞数组中的每个 fit 对象。所以结果是 evals 数组只有每个 fit 对象的结果。

于 2013-02-15T11:29:06.073 回答