Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2008-03-25
年龄: 39
帖子: 5
声望力: 0 ![]() |
![]()
大家好,最近在做非线性最小二乘拟合,到最后遇到一点问题,不知是否我的数据处理的不对,希望会的朋友能给与帮助。
x=lsqnonlin(@myfun,x0); 其中myfun.m如下: function y=myfun(x,data) SitaS=data(:,1); SitaV=data(:,2); FaiV=data(:,3); BRDF=data(:,4); CosSitaS=cos(SitaS); CosSitaV=cos(SitaV); SinSitaS=sin(SitaS); SinSitaV=sin(SitaS); CosFaiV=cos(FaiV); Cos2SitaA=CosSitaS.*CosSitaV+SinSitaS.*SinSitaV.*CosFaiV; CosSitaA=sqrt((Cos2SitaA+1)/2); CosAlpha=(CosSitaS+CosSitaV)./(2*CosSitaA); TanAlpha=sqrt(ones(size(CosAlpha))-CosAlpha.^2)./CosAlpha; g=sqrt(x(1)^2*ones(size(CosSitaA))+CosSitaA.^2-ones(size(CosSitaA))); F=1/2*((g-CosSitaA)./(g+CosSitaA)).^2*(1+((CosSitaA.*(g+CosSitaA)-ones(size(CosSitaA)))./((CosSitaA.*(g-CosSitaA)+ones(size(CosSitaA))))).^2); D=exp(-(TanAlpha.^2)./(x(2)^2*ones(size(TanAlpha))))./(x(2)^2*ones(size(TanAlpha)).*CosAlpha.^4); g1=ones(size(CosSitaA)); g2=2*CosAlpha.*CosSitaV./CosSitaA; g3=2*CosAlpha.*CosSitaS./CosSitaA; G=myMin(g1,g2,g3); brdf_spec=F.*G.*D./(2*pi^2*CosSitaS.*CosSitaV); brdf_diff=x(3)*ones(size(BRDF))/pi; y=brdf_spec+brdf_diff-BRDF; 先谢了! |
![]() |
![]() |
|
|
![]() |
||||
主题 | 主题作者 | 版面 | 回复 | 最后发表 |
[求助]请指教下面程序哪里不对 | sfang9902 | MATLAB论坛 | 3 | 2008-08-26 21:14 |
问高手画三维图的问题 | rocflying | MATLAB论坛 | 0 | 2008-05-23 11:02 |
[求助]用单片机采样,用PC显示波形 | hhqq | MATLAB论坛 | 1 | 2008-04-14 22:45 |
【求助】想问一下有没有不用考虑期望输出的自适应算法 | klz | MATLAB论坛 | 1 | 2008-04-05 12:55 |
MATLAB计算中的小问题,那位大神帮帮忙! | stormbird | MATLAB论坛 | 2 | 2007-06-19 23:57 |