matlab nlinfit数据拟合,数据少还行,数据多了结果全是复数。这个怎么解决。 30
1个回答
2016-09-24
展开全部
matlab nlinfit数据拟合,数据少还行,数据多了结果全是复数。这个怎么解决。
问题一:初值选择不合适;解决对策:p0=rand(1,3)
问题二:表述的自定义函数只适用单个数据计算;解决对策:采用数组的形式参与计算,即应改为
fun=inline('exp(-p(1)*t).*exp(-p(2)*t).*((p(1)*p(3)*exp(p(1)*t))./(p(1)-p(2))-(p(1)*p(3)*exp(p(2)*t))/(p(1)-p(2)))','p','t');
程序改后的运行结果为
问题一:初值选择不合适;解决对策:p0=rand(1,3)
问题二:表述的自定义函数只适用单个数据计算;解决对策:采用数组的形式参与计算,即应改为
fun=inline('exp(-p(1)*t).*exp(-p(2)*t).*((p(1)*p(3)*exp(p(1)*t))./(p(1)-p(2))-(p(1)*p(3)*exp(p(2)*t))/(p(1)-p(2)))','p','t');
程序改后的运行结果为
追问
myfunc=inline('a(1).*(x-a(2)).^a(3)','a','x');
a=nlinfit(finalout(:,1),finalout(:,2),myfunc,[0.5,100,2]);
修改初值确实可以,但是要处理的数据太多了,不能一个一个调初值。像origin数据再多都不会出现类似问题,matlab有解决的好办法吗?
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询