I think I learned this morning the hard way of making test cases, something I do often, but not always.......
Thanks! Have a look in the src/test directory of [math] to see how we do unit tests in [math] using JUnit <http://www.junit.org/>.
I have been travelling, cut off from CVS, so have not been able to commit this stuff, but I will get it in in the next day or two.
Phil
public static void main(String args[]) { double[][] data = {{1, 2, 3, 4}, {1.5, 2.5, 3.5, 4.5}, {2, 4, 6, 8}, {4, 5, 6, 7}}; Matrix m = new Matrix(data); int[] rows = {0, 3}; int[] columns = {1, 2}; System.out.println(m.toSquareString()); System.out.println("Rows 0 to 2; columns 1 to 3"); System.out.println(m.getSubMatrix(0,2,1,3).toSquareString()); System.out.println("Rows 0 & 3; columns 1 & 2"); System.out.println(m.getSubMatrix(rows,columns).toSquareString()); System.out.println("Rows 0 to 2; columns 1 & 2"); System.out.println(m.getSubMatrix(0, 2 ,columns).toSquareString()); System.out.println("Rows 0 & 3; columns 1 to 3"); System.out.println(m.getSubMatrix(rows,1, 3).toSquareString()); System.out.println(); }
And that showed that this is the correct method:
/** * Get a submatrix. Rows and columns are indicated * counting from 0 to n-1. * * @param startRow Initial row index * @param endRow Final row index * @param startColumn Initial column index * @param endColumn Final column index * @return The subMatrix containing the data of the * specified rows and columns * @exception MatrixIndexException matrix dimension * mismatch */ public Matrix getSubMatrix(int startRow, int endRow, int startColumn, int endColumn) throws MatrixIndexException { Matrix subMatrix = new Matrix(endRow - startRow+1, endColumn - startColumn+1); double[][] subMatrixData = subMatrix.getDataRef(); try { for (int i = startRow; i <= endRow; i++) { for (int j = startColumn; j <= endColumn; j++) { subMatrixData[i - startRow][j - startColumn] = data[i][j]; } } } catch (ArrayIndexOutOfBoundsException e) { throw new MatrixIndexException("matrix dimension mismatch"); } return subMatrix; }
O, I do have and do use two additional subMatrix versions as you can see....
Cheers,
kim
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]