Matlab中fittype多参数的使用
我有一个1000x2的数据文件,用于解决这个问题 我应该用Acos(wt+phi)来拟合数据。t是时间,它是数据文件中的第一列,即自变量。我需要找到拟合参数(A、f和φ)及其不确定性 我的代码如下:Matlab中fittype多参数的使用,matlab,parameters,Matlab,Parameters,我有一个1000x2的数据文件,用于解决这个问题 我应该用Acos(wt+phi)来拟合数据。t是时间,它是数据文件中的第一列,即自变量。我需要找到拟合参数(A、f和φ)及其不确定性 我的代码如下: %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 s
%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)
f = fittype('A*cos(w*x + p)','coefficients', {'A', 'w', 'p'});
这会产生4条我不理解的错误消息
错误消息:
使用fit>iAssertNumProblemParameters时出错(第1113行)
缺少问题参数。将值指定为单元格数组,每个问题参数有一个元素
在fittype中
拟合>iFit时出错(第198行)
IAssertNumberProblemParameters(probparams,probnames(model))
配合错误(第109行)
[fitobj,goodness,output,convmsg]=iFit(xdatain,ydatain,fittypeobj
问题2中的错误(第14行)
[A] =拟合(x,y,f)代码行
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
视为“系数”,如下所示:
%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)
f = fittype('A*cos(w*x + p)','coefficients', {'A', 'w', 'p'});
在这种情况下,代码不会抛出错误,并将在A
、w
和p
上返回95%的置信区间
我希望这有帮助。代码行
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
视为“系数”,如下所示:
%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)
f = fittype('A*cos(w*x + p)','coefficients', {'A', 'w', 'p'});
在这种情况下,代码不会抛出错误,并将在A
、w
和p
上返回95%的置信区间
我希望这会有所帮助。对您的问题的直接回答是,生成错误“缺少问题参数”,因为您已将w和p标识为问题特定的固定参数, 但是您没有告诉拟合函数这些固定值是什么 您可以通过更改行来完成此操作 [A] =配合(x,y,f) 到 [A] =拟合(x,y,f,'problem',{100,0.1}) 它在拟合中提供值w=100和p=0.1。这将解决您指定的错误(所有4条错误消息都是由此错误导致的) 一般来说,将拟合方程中的某些量指定为特定于问题的固定参数可能是一件有效的事情——例如,如果您独立确定了它们,并且有充分的理由相信您获得的值是可靠的。在这种情况下,您可能通过这种方式知道频率w,但您很可能不会知道知道相位p,所以这应该是一个拟合系数
希望这会有所帮助。对您的问题的简单回答是,生成错误“缺少问题参数”,因为您已将w和p标识为问题特定的固定参数, 但是您没有告诉拟合函数这些固定值是什么 您可以通过更改行来完成此操作 [A] =配合(x,y,f) 到 [A] =拟合(x,y,f,'problem',{100,0.1}) 它在拟合中提供值w=100和p=0.1。这将解决您指定的错误(所有4条错误消息都是由此错误导致的) 一般来说,将拟合方程中的某些量指定为特定于问题的固定参数可能是一件有效的事情——例如,如果您独立确定了它们,并且有充分的理由相信您获得的值是可靠的。在这种情况下,您可能通过这种方式知道频率w,但您很可能不会知道知道相位p,所以这应该是一个拟合系数
希望有帮助。请提供错误消息。请提供错误消息。