pro correlate_vect,x,y,n1,a=a,b=b,r=r,c=c
nan=!values.f_nan
if keyword_set(n1) then begin
ok = finite(x) and finite(y)
w= where(smooth(ok,n1) eq 0,nw)
xavg = smooth(x,n1,/nan,/edge_truncate)
x2avg = smooth(x^2,n1,/nan,/edge_truncate)
yavg = smooth(y,n1,/nan,/edge_truncate)
y2avg = smooth(y^2,n1,/nan,/edge_truncate)
xyavg = smooth(x*y,n1,/nan,/edge_truncate)
if nw ne 0 then begin
xavg[w]=nan
x2avg[w]=nan
yavg[w]=nan
y2avg[w]=nan
xyavg[w]=nan
endif
endif else begin
xavg = average(x,/nan)
x2avg = average(x^2,/nan)
yavg = average(y,/nan)
y2avg = average(y^2,/nan)
xyavg = average(x*y,/nan)
endelse
sx2 = x2avg -xavg^2
a = (yavg*x2avg - xavg*xyavg)/sx2
sxy = (xyavg-xavg*yavg)
b = sxy/sx2
r = sxy/sqrt(sx2*(y2avg-yavg^2))
c = sxy/x2avg
return
end