24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2872  |  回复: 25

delarzhang

木虫 (著名写手)

[求助] matlab高手帮忙做个自定义复杂函数拟合,含有复数,

需要对一个带复数的复杂函数进行拟合,并求出几个参量,本人是matlab菜鸟,完成后请一定给出源代码,具体函数请查看附件说明,多谢!
其它软件也可以,我只有matlab和origin可以用,我要处理的数据比较多,那就要麻烦您多算几次了,站内联系。filename]matlab拟合.doc[/filename]

[ Last edited by delarzhang on 2012-8-17 at 08:13 ]
回复此楼

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : matlab拟合.doc
  • 2012-08-17 08:05:22, 99.5 K

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

天道酬勤
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ...
delarzhang: 金币+50, 有帮助 2012-09-04 07:21:58
delarzhang: 金币+50 2012-10-03 16:12:55
你自己试试吧,能拟合,但是结果不是很理想
CODE:
function delar
data=xlsread('delar.xlsx');
xdata=data(:,1);  %Im
ydata=data(:,2);  %
x0=[100,250,6,0.5];    %wp2,gama,T,S
options= optimset('MaxFunEvals',5000,'Maxiter',1000);
lb=[10,20,0,0];
%ub=[10000,10000,100,1000];
ub=[];
[x,resnorm]=lsqcurvefit(@myfun,x0,xdata,ydata,lb,ub,options)
y=myfun(x,xdata);
plot(xdata,ydata,'g',xdata,y,'r')
end

function F=myfun(x,xdata)  %x=[]
wl=734;
wt=533;
e8=5.5;
C=0.48;
eq1=(wl^2-wt^2)./(wt^2-xdata.^2-1i*x(3)*xdata);
eq2=x(1)./(xdata.^2+1i*xdata*x(2));
epslong=e8*(1+eq1-eq2);

delta=x(1)*x(2)*((wt^2-xdata.^2).^2+(xdata*x(3)).^2)  +  xdata.^2*x(3)*(wl^2-wt^2).*(xdata.^2+x(2)^2);
eq3=2*C*wt^2* (x(1)*x(2)*(wt^2-xdata.^2)   -  xdata.^2*x(3).*(xdata.^2+x(2)^2-x(1)))   ./delta;
eq4=C^2*(wt^4./delta)  .*(x(1)*(x(2)*(wl^2-wt^2)+x(3)*(x(1)-2*xdata.^2))  +xdata.^2*x(3).*(xdata.^2+x(2)^2))  ./(wl^2-wt^2);
A=1+eq3+eq4;
F=x(4)*A.*imag(-1./epslong);
end

showmethemoney
6楼2012-08-20 10:59:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

love_ff

新虫 (初入文坛)

引用回帖:
6楼: Originally posted by csgt0 at 2012-08-20 10:59:47
你自己试试吧,能拟合,但是结果不是很理想

function delar
data=xlsread('delar.xlsx');
xdata=data(:,1);  %Im
ydata=data(:,2);  %
x0=;    %wp2,gama,T,S
options= optimset('MaxFunEvals',5000,'Maxi ...

请问我用lsqcurvefit函数的时候我设定了上下线,但是好像没用。我把代码贴出来能帮我看看么?
而且,我拟合得到的系数都是复数,可否得到实数。麻烦了!
x0=[2,2,2,2,2];
xdata=w0';
ydata=xdl2;
lb=[1;1;1;1;1];
lu=[5;5;5;5;5];
[x,res]=lsqcurvefit(F,x0,xdata,ydata,lb,lu);
24楼2014-01-02 10:26:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
复数拟合还没见过比1stOpt更强更好用的,建议自己试试。
2楼2012-08-17 09:26:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

delarzhang

木虫 (著名写手)

引用回帖:
2楼: Originally posted by dingd at 2012-08-17 09:26:06
复数拟合还没见过比1stOpt更强更好用的,建议自己试试。

如果我自己有,就不用浪费时间在这里求助
天道酬勤
3楼2012-08-17 10:00:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

I是多少,m是多少
showmethemoney
4楼2012-08-17 17:49:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

delarzhang

木虫 (著名写手)

引用回帖:
4楼: Originally posted by csgt0 at 2012-08-17 17:49:20
I是多少,m是多少

Im是复数的虚部,Re复数的实部
天道酬勤
5楼2012-08-17 20:13:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

delarzhang

木虫 (著名写手)

引用回帖:
6楼: Originally posted by csgt0 at 2012-08-20 10:59:47
你自己试试吧,能拟合,但是结果不是很理想

function delar
data=xlsread('delar.xlsx');
xdata=data(:,1);  %Im
ydata=data(:,2);  %
x0=;    %wp2,gama,T,S
options= optimset('MaxFunEvals',5000,'Maxi ...

谢谢,我安装的是matlab2012a,运行时显示resnorm是unused,不知道该怎么办?
天道酬勤
7楼2012-08-21 07:43:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

delarzhang

木虫 (著名写手)

引用回帖:
6楼: Originally posted by csgt0 at 2012-08-20 10:59:47
你自己试试吧,能拟合,但是结果不是很理想

function delar
data=xlsread('delar.xlsx');
xdata=data(:,1);  %Im
ydata=data(:,2);  %
x0=;    %wp2,gama,T,S
options= optimset('MaxFunEvals',5000,'Maxi ...

运行过程中显示信息如下:
Error using xlsread (line 129)
XLSREAD unable to open file 'delar.xlsx'.
File 'D:\Program Files\MATLAB\R2012a\bin\raman\delar.xlsx' not found.

Error in delar (line 2)
data=xlsread('delar.xlsx');
天道酬勤
8楼2012-08-21 07:49:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

引用回帖:
8楼: Originally posted by delarzhang at 2012-08-21 07:49:39
运行过程中显示信息如下:
Error using xlsread (line 129)
XLSREAD unable to open file 'delar.xlsx'.
File 'D:\Program Files\MATLAB\R2012a\bin\raman\delar.xlsx' not found.

Error in delar (line 2) ...

把你的数据在excel里保存为两列,命名为delar.xlsx,跟程序放到一起。
resnorm那个不用的话就删掉
showmethemoney
9楼2012-08-21 09:02:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

delarzhang

木虫 (著名写手)

引用回帖:
9楼: Originally posted by csgt0 at 2012-08-21 09:02:43
把你的数据在excel里保存为两列,命名为delar.xlsx,跟程序放到一起。
resnorm那个不用的话就删掉...

请帮满看看,还是报错:
Error using snls (line 48)
Objective function is returning undefined values at initial point. lsqcurvefit
cannot continue.

Error in lsqncommon (line 175)
    [xC,FVAL,LAMBDA,JACOB,EXITFLAG,OUTPUT,msgData]=...

Error in lsqcurvefit (line 252)
[xCurrent,Resnorm,FVAL,EXITFLAG,OUTPUT,LAMBDA,JACOB] = ...

Error in delar (line 10)
[x,resnorm]=lsqcurvefit(@myfun,x0,xdata,ydata,lb,ub,options);
天道酬勤
10楼2012-08-21 10:09:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 delarzhang 的主题更新
信息提示
请填处理意见