⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gulf.m

📁 一个很好用的摄像机标定程序
💻 M
字号:
function [fvec,J] = gulf(n,m,x,opt)

% ***************************************************
% ***************************************************
% function [fvec, J]= gulf(n,m,x,opt)
% Gulf research and development function      [11]
% Dimensions  n=3,  n=<m=<100
% Function definition:
%       f(x)= exp[-(| y(i)mi x(2)|^x(3) / x(1))- t(i)
%       where t(i) = i/100
%       and y(i)=25 +(-50 ln(t(i))^2/3)
% Standard starting point x=(5,2.5,0.15)
% minima of f=0 at (50,25,1.5)
%
% Revised 10/23/94      PLK
% *************************************************** 


	zero = 0.d0;
	one = 1.d0;
	point1 = .01d0;
	twnty5 = 25.d0; 
	fifty = 50.d0;

      x1 = x(1);
      x2 = x(2);
      x3 = x(3);
      if (x1 == zero) 
 	disp(' +++ singularity in gulf function evaluation')
      end
      x1inv = one / x1;
      two3rd = 2.d0 / 3.d0;

      for i = 1: m
        ti       = (i)*point1;
        yi       = twnty5 + (-fifty*log(ti)) ^ two3rd;
        ai       = yi - x2;

      	if((opt==1)|(opt==3))
           fvec(i)  = exp(-((abs(ai)^x3)/x1)) - ti;
        end;

        if((opt==2)|(opt==3))
           av = abs(ai);
           bi = av ^ x3;
           ci = bi*x1inv;
           ei = exp(-ci);
           d1 =   ci * x1inv;
           d2 =   x3 * x1inv * av^(x3 - one);
           d3 = - log(av) * ci;
           J(i,1) = d1 * ei;
           if (ai >= zero)  
		J(i,2) =  d2 * ei;
           else
		J(i,2) = -d2 * ei;
           end
           J(i,3) = d3 * ei;
       end
  end;
  fvec = fvec';

if((opt<1)|(opt>3))
       disp('ERRROR: option value sent to GULF.M is either <1 or >3');
end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -