function [yh]=lqIVkregress(x,y,xh,w0,bds)
indf=isfinite(x+y); x=x(indf);y=y(indf);
sigmax=std(x);
N=length(x);
hx=bds*(4/3)^(1/5)*sigmax/N^(1/5);
XV=[ones(N,1),x,x.^2];
M=length(xh);XH=[ones(M,1),xh,xh.^2];
yh=zeros(M,1);

for i=1:M
    hxi=max(.05,hx.*abs(xh(i)));
    xt=(xh(i)-x)/hxi;
    sw=w0.*exp(-xt.^2/4);
    Xw=XV.*repmat(sw,1,3);
    hxn=hxi;inn=0;
    while (rank(Xw,1e-4)<3)&&(inn<15)
        hxn=hxn*2;
        inn=inn+1;
        xt=(xh(i)-x)/hxn;
        xt2=xt.^2;
        xt2=xt2-min(xt2);
        sw=exp(-xt2/4); mw=mean(sw);
        sw=sw/mw;
        Xw=XV.*repmat(sw,1,3);
    end
    
    
    Sy=y.*sw;
    Bi=Xw\Sy;
    yh(i)=XH(i,:)*Bi;
end
