On Mon, Jun 23, 2008 at 11:49 PM, Glynn Clements <[EMAIL PROTECTED]> wrote: > Markus Neteler wrote: ... >> r.mapcalc b10=lsat7_2000_10/10000. > > [snip] > >> Error: unreliable clustering >> try a smaller initial number of clusters >> Warning: Removed a singular subsignature; number 1; -1 remain ... > Could it be that the definition of ZERO in subcluster.c: > > #define ZERO 1e-10 > > is too high when the inputs are scaled down?
Apparently yes. > For an NxN matrix, scaling all of the the elements down by a factor of > K will scale the determinant by K^N. > > AFAICT[1], the matrix elements are roughly proportional to the squares > of the input values, so if you're scaling the values down by 1e-5, the > matrix elements are scaled down by 1e-10, and with 7 bands the > determinant would be scaled down by 1e-70. > > [1] Which isn't saying much; it's not like I actually understand the > algorithm being used here. Documentation and a potentially more advanced version I found here: http://cobweb.ecn.purdue.edu/~bouman/software/segmentation/ > Can you try dividing by 10, 100, etc rather than 10000, to see if > there's a threshold at which the accuracy starts to be an issue? > > And/or make ZERO much smaller. For /10000. it works with ZERO = 0.0 only. The result is reasonable. Keeping ZERO = 0.0 and dividing by /10. only produces the same result (but the Rissanen output differs), same for /100. Differences with r.mapcalc are NULL. Same for /100000. Looks like solved with ZERO patch to be submitted? Markus _______________________________________________ grass-dev mailing list grass-dev@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/grass-dev