我有一个1000x2数据文件,我正在使用这个问题。
我应该用Acos(wt + phi)拟合数据。 t是时间,它是数据文件中的第一列,即自变量。我需要找到拟合参数(A,f和phi)及其不确定性。
我的代码如下:
%load initial data file
data = load('hw_fit_cos_problem.dat');
t = data(:,1); %1st column is t (time)
x = t;
y = data(:,2); %2nd column is y (signal strength)
%define fitting function
f = fittype('A*cos(w*x + p)','coefficients','A','problem',{'w','p'});
% check fit parameters
coeffs = coeffnames(f);
%fit data
[A] = fit(x,y,f)
disp('confidence interval/errorbars');
ci = confint(A)
产生4种我不理解的错误消息。
错误讯息:
使用fit时出错> iAssertNumProblemParameters(第1113行) 缺少问题参数。将值指定为单元格数组,每个问题参数都包含一个元素 在fittype中。
适合度错误> iFit(第198行) iAssertNumProblemParameters(probparams,probnames(model));
合身错误(第109行) [fitobj,goodness,output,convmsg] = iFit(xdatain,ydatain,fittypeobj,...
问题2中的错误(第14行) [A] =拟合(x,y,f)
答案 0 :(得分:1)
代码行
f = fittype('A*cos(w*x + p)','coefficients','A','problem',{'w','p'});
将A
指定为模型中的“系数”,将值w
和p
指定为“问题”参数。
因此,拟合工具箱希望您提供有关w
和p
的更多信息,然后它会变化A
。如果没有向拟合工具提供有关w
和p
的更多信息,则会导致错误。
我不确定此项目的目标,或者为什么w
和p
被指定为问题参数。但是,一个简单的解决方案是允许工具箱将A
,w
和p
视为“系数”,如下所示:
f = fittype('A*cos(w*x + p)','coefficients', {'A', 'w', 'p'});
在这种情况下,代码不会引发错误,并会在A
,w
和p
上返回95%的置信区间。
我希望有所帮助。
答案 1 :(得分:0)
您问题的直接答案是生成错误“Missing problem parameters”,因为您已将w和p识别为特定于问题的固定参数, 但你没有告诉fit函数这些固定值是什么。
您可以通过更改行
来完成此操作[A] = fit(x,y,f)
到
[A] =拟合(X,Y,F, '问题',{100,0.1})
在拟合中提供值w = 100和p = 0.1。这应解决您指定的错误(此错误导致所有4条错误消息)
通常将拟合方程中的一些量指定为特定问题的固定参数可能是有效的事情 - 例如,如果您已经独立确定它们并且有充分的理由相信您获得的值是可靠的。在这种情况下,您可能会以这种方式知道频率w,但您很可能不会知道相位p,因此它应该是拟合系数。
希望有所帮助。