package com.rapidminer.operator.similarity.attributebased;
/**
* Simple implementation of a matrix.
*
* @author
* @see de.tud.inf.operator.learner.clustering.clusterer.uncertain.FDBScanClustering
*/
public class Matrix {
//m rows (index: i)
private int m;
//n columns (index: j)
private int n;
//mxn matrix
private int[][] matrix;
/**
* constructs a mxn matrix
*/
public Matrix(int m, int n) {
this.m = m;
this.n = n;
matrix = new int[m][n];
reset();
}
/**
* constructs a quadratic matrix (m=n)
*/
public Matrix(int dim) {
this.m = dim;
this.n = dim;
matrix = new int[dim][dim];
reset();
}
/**
* gets value of row i and column j
*/
public int getValue(int i, int j) {
return matrix[i][j];
}
/**
* sets value of row i and column j
*/
public void setValue(int i, int j, int value) {
matrix[i][j] = value;
}
/**
* increments value of row i and column j
*/
public void inc(int i, int j) {
matrix[i][j]++;
}
/**
* decrements value of row i and column j
*/
public void dec(int i, int j) {
matrix[i][j]--;
}
public void reset() {
for(int i=0; i<m; i++) {
for(int j=0; j<n; j++)
setValue(i, j, 0);
}
}
public void reset(int value) {
for(int i=0; i<m; i++) {
for(int j=0; j<n; j++)
setValue(i, j, value);
}
}
public String toString() {
String s = new String();
for(int i=0; i<m; i++) {
for(int j=0; j<n; j++) {
s += "[" + getValue(i, j) + "]";
}
s += "\n";
}
return s;
}
}