matlab 非线性曲线拟合表达式书写与初值选取
matlab 非线性曲线拟合表达式书写与初值选取本人先研究采用matlab进行非线性数据拟合,编写的函数如下[filename,filepath]=uigetfile('*.txt','选择拟合的数据文件');%弹出对话框,然后选择你要处理的文件 file = [filepath filename]; fid = fopen(file,'rt'); if fid == -1 waring('Error opening the file')endfclose(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)),表达式错误,不知怎么修改,望大侠指教 ,希望有高手将表达式书写一下.
最佳回答
匿名函数调用,把inline那一行改为,应该就OKmyfunc=@( 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
最新回答共有2条回答
-
2026-04-03 08:51:19欣慰的白云
回复匿名函数调用,把inline那一行改为,应该就OKmyfunc=@( 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
热门文章
- 康达学院专转本五年制
- 高考一个考场分ab卷吗
- not only but also用法
- 某物体做自由落体运动,从释放开始计时,则物体在前2s内的平均速度为______m/s,物体下落2m时的速度大小为______m/s.
- 三角函数公式大全表格
- 地理中考必背知识点2022
- 2013-2014学年小学六年级科学上学期期末考试试卷及答案
- 人教版2014-2015学年小学五年级英语第二学期期中教学质量检测试卷及答案
- 【Linux驱动开发】设备树详解(二)设备树语法详解
- 别跟客户扯细节
- 在别的城市买房子能落户吗
- 卖房前要把装修贷还完吗
- 高中政治教学提高教学效果的方法探究
- “互联网+”背景下的初中英语课堂教学改革与创新策略研究
- 2022年终止合同范本
- 租房合同范本范文
- 如何挑选土豆
- 如何挑选土鸡
