Markus Neteler wrote: > I wanted to run a linear regression on a DEM and a temperature > map but got an error: > awk: cmd. line:2: (FILENAME=- FNR=3) fatal: division by zero attempted > > I have reduced everything to this part (added --lint): > > #!/bin/sh > > unset LC_ALL > LC_NUMERIC=C > export LC_NUMERIC > > echo "345.551054 1 1 > 364.229489 1 1 > 382.907925 1 3" | awk --lint '{tot += $3;sumX +=$1 * $3; > sumsqX > +=$1*$1*$3;sumY +=$2 * $3; sumsqY +=$2*$2*$3; sumXY > +=$1*$2*$3;} > END {B=(sumXY - sumX*sumY/tot)/(sumsqX - sumX*sumX/tot); > R= (sumXY - sumX*sumY/tot)/((sumsqX - sumX^2/tot)*(sumsqY - > sumY^2/tot))^0.5; > mediaX=sumX/tot;sumsqX=sumsqX/tot;varX=sumsqX-(mediaX^2);sdX=varX^0.5; > mediaY=sumY/tot;sumsqY=sumsqY/tot;varY=sumsqY-(mediaY^2);sdY=varY^0.5; > A=mediaY - B*mediaX; F= R^2/(1-R^2/tot-2); > print A, B, R, tot, F, mediaX, sdX, mediaY, sdY}' > > Running this, I get: > awk: (FILENAME=- FNR=1) warning: reference to uninitialized > variable `tot' ....
it starts with "tot += $3" [aka "tot = tot + $3"], but tot is unused at that point so undefined. (maybe awk can be trusted to always init new vars to 0? no idea) adding a 'BEGIN { tot = 0; sumX = 0; ... }' section at the start of the awk script might help. ? Hamish _______________________________________________ grass-dev mailing list grass-dev@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/grass-dev