www.pudn.com > zhichixiangliangjijiemian.rar > CUBWGT.asv


function [w,dwdx,dwdy] = cubwgt(dif,t,v,dmax,dm) 
hs=4; 
wwx=1e-005; 
% CUBIC SPLINE WEIGHT FUNCTION 
l = length(v); 
for i=1:l 
 
drdx = sign(dif(1,i))/dm(1,v(i)); 
drdy = sign(dif(2,i))/dm(2,v(i)); 
rx = abs(dif(1,i))/dm(1,v(i)); 
ry = abs(dif(2,i))/dm(2,v(i)); 
qx=abs(dif(1,i)); 
qy=abs(dif(2,i)); 
if rx>0.5 
wx = (4/3)-4*rx+4*rx*rx -(4/3)*rx^3; 
wxx=[(4/3)-4*rx+4*rx*rx -(4/3)*rx^3]/(qx^hs+wwx); 
dwx = (-4 + 8*rx-4*rx^2)*drdx; 
elseif rx<=0.5 
wx = (2/3)-4*rx*rx + 4*rx^3; 
wxx= [(2/3)-4*rx*rx + 4*rx^3]*inv(qx^hs+wwx); 
dwx = (-8*rx + 12*rx^2)*drdx; 
end 
if ry>0.5 
wy = (4/3)-4*ry+4*ry*ry -(4/3)*ry^3; 
wyy=[(4/3)-4*ry+4*ry*ry -(4/3)*ry^3]*inv(qy^hs+wwx); 
dwy= (-4 + 8*ry-4*ry^2)*drdy; 
elseif ry<=0.5 
wy = (2/3) - 4*ry*ry + 4*ry^3; 
wyy=[(2/3) - 4*ry*ry + 4*ry^3]*inv(qy^hs+wwx); 
dwy = (-8*ry + 12*ry^2)*drdy; 
end 
w(i) =wxx*wyy; 
dwdx(i) = wy*dwx*inv(qx^hs+wwx)*inv(qy^hs+wwx); 
dwdy(i) = wx*dwy*inv(qx^hs+wwx)*inv(qy^hs+wwx); 
break 
end