matlab 非线性曲线拟合表达式书写与初值选取本人先研究采用matlab进行非线性数据拟合,编写的函数如下[filename,filepath]=uigetfile('*.txt','选择拟合的数据文件');%弹出对话框,然后选择你要处理的文

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/03 04:44:04
matlab 非线性曲线拟合表达式书写与初值选取本人先研究采用matlab进行非线性数据拟合,编写的函数如下[filename,filepath]=uigetfile('*.txt','选择拟合的数据文件');%弹出对话框,然后选择你要处理的文

matlab 非线性曲线拟合表达式书写与初值选取本人先研究采用matlab进行非线性数据拟合,编写的函数如下[filename,filepath]=uigetfile('*.txt','选择拟合的数据文件');%弹出对话框,然后选择你要处理的文
matlab 非线性曲线拟合表达式书写与初值选取
本人先研究采用matlab进行非线性数据拟合,编写的函数如下
[filename,filepath]=uigetfile('*.txt','选择拟合的数据文件');%弹出对话框,然后选择你要处理的文件
file = [filepath filename];
fid = fopen(file,'rt');
if fid == -1
waring('Error opening the file')
end
fclose(fid);
fid=load(file);
x=fid(:,1);%读取第一列数据
y=fid(:,2);%读取第二列数据
myfunc=inline('-beta(1)*max(y)*exp(-pi*(x-beta(2)).^2/beta(3).^2))','beta','x');
beta=nlinfit(x,y,myfunc,[0.3 0.5 10]);
% beta为迭代初值,不能随便选,必须要在目标值附近,否则发散或解不出来
b=beta(1);
s0=beta(2);
r=beta(3);
%test the model
xx=min(x):max(x);
yy=b*max(y)*exp(-pi*(x-s0)^2/r^2);
plot(x,y,'o',xx,yy,'--');
set(handles.edit1,'string',num2str(b),'max',10);
set(handles.edit2,'string',num2str(s0),'max',10);
set(handles.edit3,'string',num2str(r),'max',10);
Error in inline expression ==> beta(1)*max(y)*exp(-pi*(x-beta(2)).^2)./beta(3)^2)),表达式错误,不知怎么修改,望大侠指教 ,希望有高手将表达式书写一下.

matlab 非线性曲线拟合表达式书写与初值选取本人先研究采用matlab进行非线性数据拟合,编写的函数如下[filename,filepath]=uigetfile('*.txt','选择拟合的数据文件');%弹出对话框,然后选择你要处理的文
匿名函数调用,把inline那一行改为,应该就OK
myfunc=@( beta, x) -beta(1)*max(x).*exp(-pi*(x-beta(2)).^2/beta(3).^2);
2楼基本上已经说到点上了,但是转换成(max(y))也是不可行的.num2str的变量为常数.例如
for n = 1:12
eval(['M' num2str(n) ' = magic(n)'])
end
最好还是写成具体的函数形式.
或者单个函数 function y=f(x)
或者匿名函数 fun=@(x) x.^2