关于lsqcurvefit拟合的问题-matlab
我使用lsqcurvefit函数,对一系列的数据进行方程拟合最优值,但是提示Localminimumpossible.lsqcurvefitstoppedbecauset...
我使用lsqcurvefit函数,对一系列的数据进行方程拟合最优值,但是提示
Local minimum possible.
lsqcurvefit stopped because the final change in the sum of squares relative to
its initial value is less than the default value of the function tolerance.
<stopping criteria details>
可以运行出结果,但是感觉不太对。
请问怎样解决?
附近中有我的数据和代码,谢谢、
所用公式为
result=-G + aG+r0*exp(e0(1/(15+46.02)-1/(T+46.02)))
想要拟合得到a、r0、e0。G、T、result已知,在数据中分别是第一、二、三列。
谢谢
我的代码:
clc
clear
getfilename=ls('.\*.xls'); %读取文件列表
filename=cellstr(getfilename); %转换为cell格式
num_of_files=length(filename);
paras0=[3;3;200];
result=[];
paras1=[];
for i=1:num_of_files
database(i)=struct('Name',filename(i),'Data',xlsread(filename{i}));
b=database(i).Name;
b_name=cellstr(b);
dat=database(i).Data;
[x,y]=size(dat);
xdata=[];
ydata=[];
%设置输入参数xdata和输出参数ydata
xdata(:,1) = dat(:,1); %xdata第一列为GPP
xdata(:,2) = dat(:,2); %xdata第二列为空气温度Ta
ydata(:,1) = dat(:,3); %ydata为输出的参量NEE
%进行拟合计算
paras=lsqcurvefit(@myfun,paras0,xdata,ydata);
paras1=paras';
%设置输出值
result_name(i,1)=b_name;
result=[result;paras1]; %#ok<AGROW>
end
xlswrite('结果.xls',result);
xlswrite('结果顺序.xls',result_name);
function f=myfun(paras,xdata)
f = -xdata(:,1)+paras(1).*xdata(:,1)+paras(2).*exp(paras(3)*(1/61.02-1./(xdata(:,2)+46.02)));
我的数据:
2.13984
29.80419
-2.13984
1.895173
29.22398
-1.89517
2.085606
28.32292
-2.0856
2.159606
27.75833
-2.1596
2.707552
26.92917
-2.70755
3.215198
26.74896
-3.2152 展开
Local minimum possible.
lsqcurvefit stopped because the final change in the sum of squares relative to
its initial value is less than the default value of the function tolerance.
<stopping criteria details>
可以运行出结果,但是感觉不太对。
请问怎样解决?
附近中有我的数据和代码,谢谢、
所用公式为
result=-G + aG+r0*exp(e0(1/(15+46.02)-1/(T+46.02)))
想要拟合得到a、r0、e0。G、T、result已知,在数据中分别是第一、二、三列。
谢谢
我的代码:
clc
clear
getfilename=ls('.\*.xls'); %读取文件列表
filename=cellstr(getfilename); %转换为cell格式
num_of_files=length(filename);
paras0=[3;3;200];
result=[];
paras1=[];
for i=1:num_of_files
database(i)=struct('Name',filename(i),'Data',xlsread(filename{i}));
b=database(i).Name;
b_name=cellstr(b);
dat=database(i).Data;
[x,y]=size(dat);
xdata=[];
ydata=[];
%设置输入参数xdata和输出参数ydata
xdata(:,1) = dat(:,1); %xdata第一列为GPP
xdata(:,2) = dat(:,2); %xdata第二列为空气温度Ta
ydata(:,1) = dat(:,3); %ydata为输出的参量NEE
%进行拟合计算
paras=lsqcurvefit(@myfun,paras0,xdata,ydata);
paras1=paras';
%设置输出值
result_name(i,1)=b_name;
result=[result;paras1]; %#ok<AGROW>
end
xlswrite('结果.xls',result);
xlswrite('结果顺序.xls',result_name);
function f=myfun(paras,xdata)
f = -xdata(:,1)+paras(1).*xdata(:,1)+paras(2).*exp(paras(3)*(1/61.02-1./(xdata(:,2)+46.02)));
我的数据:
2.13984
29.80419
-2.13984
1.895173
29.22398
-1.89517
2.085606
28.32292
-2.0856
2.159606
27.75833
-2.1596
2.707552
26.92917
-2.70755
3.215198
26.74896
-3.2152 展开
1个回答
VSH艾羽
2024-10-18 广告
2024-10-18 广告
ANSYS软件具有多种有限元分析的能力,包括从简单线性静态分析到复杂的非线性瞬态动力学分析。在进行任何分析之前,确保已经正确建立了有限元模型,并定义了单元类型、单元实常数、材料特性和几何模型等关键参数。详细模型以及参数可以咨询上海艾羽信息科...
点击进入详情页
本回答由VSH艾羽提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询