Esempio n. 1
0
 static void sdev(const AzSmat *m, AzDvect *v_sdev) {
   AzDvect v_avg(m->rowNum()), v_avg2(m->rowNum()); 
   int cx;
   for (cx = 0; cx < m->colNum(); ++cx) {
     v_avg.add(m->col(cx)); 
     AzDvect v(m->col(cx)); v.square(); 
     v_avg2.add(&v); 
   }
   v_avg.divide(m->colNum()); 
   v_avg2.divide(m->colNum()); 
   v_sdev->reform(m->rowNum()); 
   AzDvect::sdev(&v_avg, &v_avg2, v_sdev); 
 }
Esempio n. 2
0
/*-------------------------------------------------------------*/
void AzDmat::average_sdev(AzDvect *v_avg, 
                          AzDvect *v_sdev) const 
{
  v_avg->reform(row_num); 
  if (v_sdev != NULL) v_sdev->reform(row_num); 
  if (col_num <= 0) return; 
  AzDvect v_avg2(row_num); 
  int cx;
  for (cx = 0; cx < col_num; ++cx) {
    v_avg->add(col(cx)); 
    if (v_sdev != NULL) {
      AzDvect v(col(cx)); v.square(); 
      v_avg2.add(&v); 
    }
  }
  v_avg->divide((double)col_num); 
  if (v_sdev != NULL) {
    v_avg2.divide((double)col_num); 
    AzDvect::sdev(v_avg, &v_avg2, v_sdev); 
  }
}