org.carrot2.mahout.math.matrix.impl.WrapperDoubleMatrix2D Maven / Gradle / Ivy
/* Imported from Mahout. */package org.carrot2.mahout.math.matrix.impl;
import org.carrot2.mahout.math.matrix.DoubleMatrix1D;
import org.carrot2.mahout.math.matrix.DoubleMatrix2D;
class WrapperDoubleMatrix2D extends DoubleMatrix2D {
/*
* The elements of the matrix.
*/
private final DoubleMatrix2D content;
WrapperDoubleMatrix2D(DoubleMatrix2D newContent) {
if (newContent != null) {
setUp(newContent.rows(), newContent.columns());
}
this.content = newContent;
}
@Override
protected DoubleMatrix2D getContent() {
return content;
}
@Override
public double getQuick(int row, int column) {
return content.getQuick(row, column);
}
@Override
public DoubleMatrix2D like(int rows, int columns) {
return content.like(rows, columns);
}
@Override
public DoubleMatrix1D like1D(int size) {
return content.like1D(size);
}
@Override
protected DoubleMatrix1D like1D(int size, int offset, int stride) {
throw new UnsupportedOperationException(); // should never get called
}
@Override
public void setQuick(int row, int column, double value) {
content.setQuick(row, column, value);
}
@Override
public DoubleMatrix1D viewColumn(int column) {
return viewDice().viewRow(column);
}
@Override
public DoubleMatrix2D viewColumnFlip() {
if (columns == 0) {
return this;
}
return new WrapperDoubleMatrix2D(WrapperDoubleMatrix2D.this) {
@Override
public double getQuick(int row, int column) {
return content.get(row, columns - 1 - column);
}
@Override
public void setQuick(int row, int column, double value) {
content.set(row, columns - 1 - column, value);
}
};
}
@Override
public DoubleMatrix2D viewDice() {
DoubleMatrix2D view = new WrapperDoubleMatrix2D(this) {
@Override
public double getQuick(int row, int column) {
return content.get(column, row);
}
@Override
public void setQuick(int row, int column, double value) {
content.set(column, row, value);
}
};
view.rows = columns;
view.columns = rows;
return view;
}
@Override
public DoubleMatrix2D viewPart(final int row, final int column, int height, int width) {
checkBox(row, column, height, width);
DoubleMatrix2D view = new WrapperDoubleMatrix2D(this) {
@Override
public double getQuick(int i, int j) {
return content.get(row + i, column + j);
}
@Override
public void setQuick(int i, int j, double value) {
content.set(row + i, column + j, value);
}
};
view.rows = height;
view.columns = width;
return view;
}
@Override
public DoubleMatrix1D viewRow(int row) {
checkRow(row);
return new DelegateDoubleMatrix1D(this, row);
}
@Override
public DoubleMatrix2D viewRowFlip() {
if (rows == 0) {
return this;
}
return new WrapperDoubleMatrix2D(WrapperDoubleMatrix2D.this) {
@Override
public double getQuick(int row, int column) {
return content.get(rows - 1 - row, column);
}
@Override
public void setQuick(int row, int column, double value) {
content.set(rows - 1 - row, column, value);
}
};
}
@Override
public DoubleMatrix2D viewSelection(int[] rowIndexes, int[] columnIndexes) {
// check for "all"
if (rowIndexes == null) {
rowIndexes = new int[rows];
for (int i = rows; --i >= 0;) {
rowIndexes[i] = i;
}
}
if (columnIndexes == null) {
columnIndexes = new int[columns];
for (int i = columns; --i >= 0;) {
columnIndexes[i] = i;
}
}
checkRowIndexes(rowIndexes);
checkColumnIndexes(columnIndexes);
final int[] rix = rowIndexes;
final int[] cix = columnIndexes;
DoubleMatrix2D view = new WrapperDoubleMatrix2D(this) {
@Override
public double getQuick(int i, int j) {
return content.get(rix[i], cix[j]);
}
@Override
public void setQuick(int i, int j, double value) {
content.set(rix[i], cix[j], value);
}
};
view.rows = rowIndexes.length;
view.columns = columnIndexes.length;
return view;
}
@Override
protected DoubleMatrix2D viewSelectionLike(int[] rowOffsets, int[] columnOffsets) {
throw new UnsupportedOperationException(); // should never be called
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy