summaryrefslogtreecommitdiff
path: root/vq/metrics.c
diff options
context:
space:
mode:
Diffstat (limited to 'vq/metrics.c')
-rw-r--r--vq/metrics.c38
1 files changed, 22 insertions, 16 deletions
diff --git a/vq/metrics.c b/vq/metrics.c
index 6c7612ba..7638724a 100644
--- a/vq/metrics.c
+++ b/vq/metrics.c
@@ -12,7 +12,7 @@
********************************************************************
function: function calls to collect codebook metrics
- last mod: $Id: metrics.c,v 1.6.4.4 2000/05/04 23:08:10 xiphmont Exp $
+ last mod: $Id: metrics.c,v 1.6.4.5 2000/05/08 08:25:44 xiphmont Exp $
********************************************************************/
@@ -95,28 +95,34 @@ static double _dist(int el,double *a, double *b){
void cell_spacing(codebook *c){
int j,k;
- double min,max,mean=0.,meansq=0.;
-
+ double min=-1,max=-1,mean=0.,meansq=0.;
+ long total=0;
+
/* minimum, maximum, mean, ms cell spacing */
for(j=0;j<c->c->entries;j++){
- double localmin=-1.;
- for(k=0;k<c->c->entries;k++){
- double this=_dist(c->c->dim,_now(c,j),_now(c,k));
- if(j!=k &&
- (localmin==-1 || this<localmin))
- localmin=this;
+ if(c->c->lengthlist[j]>0){
+ double localmin=-1.;
+ for(k=0;k<c->c->entries;k++){
+ if(c->c->lengthlist[k]>0){
+ double this=_dist(c->c->dim,_now(c,j),_now(c,k));
+ if(j!=k &&
+ (localmin==-1 || this<localmin))
+ localmin=this;
+ }
+ }
+
+ if(min==-1 || localmin<min)min=localmin;
+ if(max==-1 || localmin>max)max=localmin;
+ mean+=sqrt(localmin);
+ meansq+=localmin;
+ total++;
}
-
- if(j==0 || localmin<min)min=localmin;
- if(j==0 || localmin>max)max=localmin;
- mean+=sqrt(localmin);
- meansq+=localmin;
}
fprintf(stderr,"\tminimum cell spacing (closest side): %g\n",sqrt(min));
fprintf(stderr,"\tmaximum cell spacing (closest side): %g\n",sqrt(max));
- fprintf(stderr,"\tmean closest side spacing: %g\n",mean/c->c->entries);
- fprintf(stderr,"\tmean sq closest side spacing: %g\n",sqrt(meansq/c->c->entries));
+ fprintf(stderr,"\tmean closest side spacing: %g\n",mean/total);
+ fprintf(stderr,"\tmean sq closest side spacing: %g\n",sqrt(meansq/total));
}
void process_postprocess(codebook **bs,char *basename){