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