MATLAB问题求助

clearallclct=[0.250.50.7511.522.533.544.55678910111213141516]';c1=[306875828277686858... clear all
clc
t=[0.25 0.5 0.75 1 1.5 2 2.5 3 3.5 4 4.5 5 6 7 8 9 10 11 12 13 14 15 16]';
c1=[30 68 75 82 82 77 68 68 58 51 50 41 38 35 28 25 18 15 12 10 7 7 4]';
f=@(a,t)(3.965*((-a(1)/(a(2)-a(1)))*exp(-a(2)*t)+(a(1)/(a(2)-a(1)))*exp(-a(1)*t)));
nlinfit(t,c1,f,[3 3])

运行报错:
错误使用 nlinfit (line 239)
No usable observations after removing NaNs in Y and in the result of evaluating MODELFUN at the initial value BETA0.

出错 Untitled (line 6)
nlinfit(t,c1,f,[3 3])
展开
 我来答
lhmhz
高粉答主

2017-08-21 · 专注matlab等在各领域中的应用。
lhmhz
采纳数:7264 获赞数:17008

向TA提问 私信TA
展开全部

检测你的程序代码后,就你的错误分析如下:

一、错误警告
No usable observations after removing NaNs in Y and in the result of evaluating MODELFUN at the initial value BETA0.

上述警告的意思是,初值( value BETA0)选择有问题,不能满足求解方程的条件。

二、自定义函数与实际数据有很大的偏差,实际数据不能满足自定义函数拟合要求。从t—x的散点图(可以用plot(t,x)命令)(说明,这里用x代替c1)可以看到,数据符合高斯函数,即  f(t)=a1*exp(-((t-b1)/c1)²) + a2*exp(-((t-b2)/c2)²)

自定义函数  func=@(a,t)(a(1)*exp(-((t-a(2))/a(3)).^2)+a(4)*exp(-((t-a(5))/a(6)).^2));

三、初值按t0=[0.45 0.77 0.32 0.78 0.47 0.04]初选

四、用a=nlinfit(t,x,func,t0)命令,求解自定义函数的系数

五、修改程序后,运行得到

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式