首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在没有循环的情况下计算matlab拟合单元数组中的对象?

如何在没有循环的情况下计算matlab拟合单元数组中的对象?
EN

Stack Overflow用户
提问于 2013-02-14 20:01:38
回答 2查看 1.5K关注 0票数 1

我有一个fit对象数组,我需要用几个值来计算每个对象。因为有超过数千个这样的fit对象,所以我发现循环遍历它们并使用值评估它们是非常慢的。那么有没有一种方法可以使用某种矢量化的解决方案呢?

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

代码语言:javascript
复制
fitArray{1,1}(400)

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

代码语言:javascript
复制
fitArray{1:1000}(400)

Matlab中的循环总是非常慢,在这种情况下,它真的很慢,因为我需要用多个值来计算每个拟合。

那么有没有一种不用循环就能做到的方法呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-15 19:29:06

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

代码语言:javascript
复制
vals = repmat({values}, size(fitArray));
evals = cellfun(@feval, fitArray, vals);

这将用单元数组中相应行中的值计算单元数组中的每个拟合对象。因此,结果是evals数组只包含每个fit对象的结果。

票数 0
EN

Stack Overflow用户

发布于 2013-02-15 03:08:25

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14874412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档