|
PLearn 0.1
|
#include <SDBVMat.h>


Public Member Functions | |
| SDBVMFieldMultiDiscrete (const FieldArray &fields, real missing_values_mapping=MISSING_VALUE, SDBVMOutputCoding oc=SDBVMNumeric, VMField::FieldType ft=VMField::DiscrGeneral) | |
| const FieldArray & | getFields () const |
| Accessor and mutator for field array. | |
| void | setFields (const FieldArray &fields) |
| virtual real | getDiscreteValue (const SDBWithStats &sdb, const Row &row) const |
| virtual int fieldWidth() const; | |
Protected Attributes | |
| FieldArray | fields_ |
| Vec | field_multipliers_ |
| factor by which to multiply | |
Private Types | |
| typedef SDBVMFieldDiscrete | inherited |
typedef SDBVMFieldDiscrete PLearn::SDBVMFieldMultiDiscrete::inherited [private] |
Reimplemented from PLearn::SDBVMFieldDiscrete.
| PLearn::SDBVMFieldMultiDiscrete::SDBVMFieldMultiDiscrete | ( | const FieldArray & | fields, |
| real | missing_values_mapping = MISSING_VALUE, |
||
| SDBVMOutputCoding | oc = SDBVMNumeric, |
||
| VMField::FieldType | ft = VMField::DiscrGeneral |
||
| ) |
The constructor accepts an array of discrete fields; this class assumes ownership of the fields; the array can be empty, and later set with setFields().
Definition at line 899 of file SDBVMat.cc.
References setFields().
: inherited(FieldPtr() /* "null pointer" */, 0, missing_values_mapping, oc, ft) { setFields(fields); }

| real PLearn::SDBVMFieldMultiDiscrete::getDiscreteValue | ( | const SDBWithStats & | sdb, |
| const Row & | row | ||
| ) | const [virtual] |
virtual int fieldWidth() const;
Compute the "array index" corresponding to the fields
Implements PLearn::SDBVMFieldDiscrete.
Definition at line 929 of file SDBVMat.cc.
References field_multipliers_, fields_, i, n, PLERROR, and PLearn::TVec< T >::size().
{
int index = 0;
int n = fields_.size();
for (int i=0; i<n; ++i) {
real value = fields_[i]->getDiscreteValue(sdb,row);
if (value != int(value) || value < 0)
PLERROR("SDBVMFieldMultiDiscrete::getDiscreteValue: negative or "
"non-integer value %f returned for field %d", value, i);
index += int(value)*int(field_multipliers_[i]);
}
return real(index);
}

| const FieldArray& PLearn::SDBVMFieldMultiDiscrete::getFields | ( | ) | const [inline] |
| void PLearn::SDBVMFieldMultiDiscrete::setFields | ( | const FieldArray & | fields | ) |
Definition at line 909 of file SDBVMat.cc.
References field_multipliers_, fields_, i, n, PLearn::TVec< T >::resize(), PLearn::SDBVMFieldDiscrete::setNumClasses(), and PLearn::TVec< T >::size().
Referenced by SDBVMFieldMultiDiscrete().
{
fields_ = fields;
int n = fields.size();
field_multipliers_.resize(n);
setNumClasses(0);
// Compute all partial products from i to n
if (n>0) {
int prod = 1;
field_multipliers_[n-1] = 1;
for (int i=n-2; i>=0; --i) {
prod *= fields[i+1]->getNumClasses();
field_multipliers_[i] = prod;
}
prod *= fields[0]->getNumClasses();
setNumClasses(prod);
}
}


factor by which to multiply
Definition at line 894 of file SDBVMat.h.
Referenced by getDiscreteValue(), and setFields().
FieldArray PLearn::SDBVMFieldMultiDiscrete::fields_ [protected] |
Definition at line 893 of file SDBVMat.h.
Referenced by getDiscreteValue(), and setFields().
1.7.4