PLearn 0.1
Public Member Functions | Protected Attributes
PLearn::ComplementedProbSparseMatrix Class Reference

#include <SmoothedProbSparseMatrix.h>

Inheritance diagram for PLearn::ComplementedProbSparseMatrix:
Inheritance graph
[legend]
Collaboration diagram for PLearn::ComplementedProbSparseMatrix:
Collaboration graph
[legend]

List of all members.

Public Member Functions

void complement (ProbSparseMatrix &nXY, bool clear_nXY=false)
real get (int i, int j)
bool checkCondProbIntegrity ()

Protected Attributes

real grandSum
Vec rowSum
Vec columnSum

Detailed Description

Definition at line 77 of file SmoothedProbSparseMatrix.h.


Member Function Documentation

bool PLearn::ComplementedProbSparseMatrix::checkCondProbIntegrity ( )

Reimplemented from PLearn::ProbSparseMatrix.

Definition at line 468 of file SmoothedProbSparseMatrix.cc.

References PLearn::DoubleAccessSparseMatrix< real >::cols, PLearn::DoubleAccessSparseMatrix< real >::height, i, j, PLearn::DoubleAccessSparseMatrix< real >::mode, ROW_WISE, PLearn::DoubleAccessSparseMatrix< real >::rows, PLearn::sum(), and PLearn::DoubleAccessSparseMatrix< real >::width.

{
    real sum = 0.0;

    int null_size;
    // TO BE DONE

    if (mode == ROW_WISE){
        for (int i = 0; i < height; i++){
            map<int, real>& row_i = rows[i];
      
            for (map<int, real>::iterator it = row_i.begin(); it != row_i.end(); ++it){
        
            }
      
            if (fabs(sum - 1.0) > 1e-4 && (sum > 0.0))
                cout << " Inconsistent  line " << i << " sum = "<< sum;
            return false;
        }
        return true;
    }else{
        for (int j = 0; j < width; j++){
            map<int, real>& col_j = cols[j];
      
            for (map<int, real>::iterator it = col_j.begin(); it != col_j.end(); ++it){
        
            }
      
            if(fabs(sum - 1.0) > 1e-4 && (sum > 0.0)){
                cout << " Inconsistent  column " << j << " sum = "<< sum;
                return false;
            }
        }
        return true;
    }
}

Here is the call graph for this function:

void PLearn::ComplementedProbSparseMatrix::complement ( ProbSparseMatrix nXY,
bool  clear_nXY = false 
)

Definition at line 406 of file SmoothedProbSparseMatrix.cc.

References PLearn::DoubleAccessSparseMatrix< T >::clear(), COLUMN_WISE, columnSum, PLearn::DoubleAccessSparseMatrix< T >::getCol(), PLearn::DoubleAccessSparseMatrix< T >::getHeight(), PLearn::DoubleAccessSparseMatrix< T >::getMode(), PLearn::DoubleAccessSparseMatrix< T >::getRow(), PLearn::DoubleAccessSparseMatrix< T >::getWidth(), grandSum, i, PLearn::DoubleAccessSparseMatrix< T >::isDoubleAccessible(), j, PLearn::DoubleAccessSparseMatrix< real >::mode, PLERROR, PLearn::TVec< T >::resize(), ROW_WISE, and rowSum.

{
    int nXY_height = nXY.getHeight();
    int nXY_width = nXY.getWidth();

    rowSum.resize(nXY_height);
    columnSum.resize(nXY_width);
    if (mode == ROW_WISE && (nXY.getMode() == ROW_WISE || nXY.isDoubleAccessible())){
        for (int i = 0; i < nXY_height; i++){
            map<int, real>& row_i = nXY.getRow(i);
            for (map<int, real>::iterator it = row_i.begin(); it != row_i.end(); ++it){
                rowSum[i]+=it->second;
                columnSum[it->first]+=it->second;
                grandSum+=it->second;
            }
        }
    
        if (clear_nXY)
            nXY.clear();
    } else if (mode == COLUMN_WISE && (nXY.getMode() == COLUMN_WISE || nXY.isDoubleAccessible())){
    
        for (int j = 0; j < nXY_width; j++){
            map<int, real>& col_j = nXY.getCol(j);
            for (map<int, real>::iterator it = col_j.begin(); it != col_j.end(); ++it){
                rowSum[it->first]+=it->second;
                columnSum[j]+=it->second;
                grandSum+=it->second;
            }
        }
        if (clear_nXY)
            nXY.clear();
    } else{
        PLERROR("pXY and nXY accessibility modes must match");
    }
}

Here is the call graph for this function:

real PLearn::ComplementedProbSparseMatrix::get ( int  i,
int  j 
)

Definition at line 442 of file SmoothedProbSparseMatrix.cc.

References PLearn::DoubleAccessSparseMatrix< real >::cols, columnSum, grandSum, PLearn::DoubleAccessSparseMatrix< real >::height, i, j, PLearn::DoubleAccessSparseMatrix< real >::mode, PLERROR, ROW_WISE, PLearn::DoubleAccessSparseMatrix< real >::rows, rowSum, and PLearn::DoubleAccessSparseMatrix< real >::width.

{
#ifdef BOUNDCHECK      
    if (i < 0 || i >= height || j < 0 || j >= width)
        PLERROR("SmoothedProbSparseMatrix.get : out-of-bound access to (%d, %d), dims = (%d, %d)", i, j, height, width);
#endif
    if (mode == ROW_WISE){
        map<int, real>& row_i = rows[i];
        map<int, real>::iterator it = row_i.find(j);
        if (it == row_i.end()){
            return rowSum[j]/(grandSum-columnSum[i]);
        }else{
            return (rowSum[j]-it->second)/(grandSum-columnSum[i]);
        }
    } else{
        map<int, real>& col_j = cols[j];
        map<int, real>::iterator it = col_j.find(i);
        if (it == col_j.end()){
            return columnSum[j]/(grandSum-rowSum[i]);
        }else{

            return (columnSum[j]-it->second)/(grandSum-rowSum[i]);
        }
    }
}

Member Data Documentation

Definition at line 83 of file SmoothedProbSparseMatrix.h.

Referenced by complement(), and get().

Definition at line 81 of file SmoothedProbSparseMatrix.h.

Referenced by complement(), and get().

Definition at line 82 of file SmoothedProbSparseMatrix.h.

Referenced by complement(), and get().


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines