View Javadoc

1   /*
2    * $Id: Matrix.java,v 1.4 2010/01/05 21:27:57 pah Exp $
3    * 
4    * Created on 21 Nov 2008 by Paul Harrison (paul.harrison@manchester.ac.uk)
5    * Copyright 2008 Astrogrid. All rights reserved.
6    *
7    * This software is published under the terms of the Astrogrid 
8    * Software License, a copy of which has been included 
9    * with this distribution in the LICENSE.txt file.  
10   *
11   */ 
12  
13  package org.astrogrid.matrix;
14  
15  import no.uib.cipr.matrix.AGDenseMatrix;
16  import no.uib.cipr.matrix.Vector;
17  
18  public interface Matrix extends no.uib.cipr.matrix.Matrix {
19      /**
20       * slice an array - indices are 0 based. Creates a new array storage - original data is untouched.
21       * @param rowstart
22       * @param rowend
23       * @param colstart
24       * @param colend
25       * @return
26       * @deprecated too complex - use {@link #slicev(int, boolean)} or {@link #sliceCol(int, int)} instead.
27       */
28      Matrix slice(int rowstart, int rowend, int colstart, int colend);
29   
30    
31      /**
32       * Return the sum of a matrix along a dimension.
33       * @param dim the dimension along which to sum 1=sum the columns 2 = sum the rows
34       * @return
35       */
36      Vector sum(int dim);
37  
38      /**
39       * Return a matrix with elements raised to the power.
40       * @param i
41       * @return
42       */
43      Matrix pow(double i);
44  
45      /**
46       * Return a single column or row of the matrix
47       * @param idx the 0 based index of the row or column to return;
48       * @param dorow if true return a row - if false return a column.
49       * 
50       * @return
51       * @deprecated use sliceRow or SliceCol instead.
52       */
53      public Vector slicev(int idx, boolean dorow);
54      
55      
56      /**
57       * Returns a Vector of the row.
58       * matlab syntax mat(idx, :)
59       * @param idx
60       * @return
61       */
62      public Vector sliceRow(int idx);
63      /**
64       * Returns a matrix consisting of only the row.
65       * matlab syntax mat(idx, :).
66       * @param k
67       * @return
68       */
69      public Matrix sliceRowM(int k);
70     
71      /**
72       * Returns a new Matrix consisting of only the specified columns. This is equivalent to the 
73       * Matlab syntax mat(:, colstart:colstart+ncols).
74       * @param colstart
75       * @param ncols
76       * @return
77       */
78      public Matrix sliceCol(int colstart, int ncols);
79      /**
80       * Returns a new Matrix consisting of only the specified column. This is equivalent to the 
81       * Matlab syntax mat(:, col).
82       * @param colstart
83       * @param ncols
84       * @return
85       */
86      public Vector sliceCol(int col);
87      
88      /**
89       * @return
90       */
91      public Matrix ones();
92      
93      
94      /**
95       * Reshapes the matrix to have the new size. Elements are copied columnwise.
96       * @param irow
97       * @return
98       */
99      public Matrix reshape(int irow, int icol);
100 
101     
102     /**
103      * return a copy of the data as a vector. The storage is assumed to be column major. This is similar to the A(:) 'linear' addressing in matlab.
104      * @return
105      */
106     public Vector asVector();
107     
108     /**
109      * return a copy of the data as a vector. The storage is assumed to be column major. This is similar to the A(:) 'linear' addressing in matlab.
110      * @return
111      */
112     public Vector asVector(int istart, int idend);
113 
114     /**
115      * return a copy of the data as a vector. The storage is assumed to be column major. a matrix treating as one large columnwise array. - Indices are 0 based.
116      * @param istart
117      * @return
118      */
119     public Vector asVector(int istart);
120     
121     /**
122      * Return the determinant of the matrix.
123      * @return
124      */
125     double det();
126     
127     /**
128      * Produce the trace of the matrix.
129      * @return
130      */
131     public double trace();
132     
133     /**
134      * Computes the inverse of the matrix.
135      * B = A^-1
136      * @return
137      */
138     Matrix inv();
139 
140     /**
141      * C= A/B where the division is elementwise.
142      * @param b
143      * @param c
144      * @return
145      */
146     public Matrix divide(Matrix b, Matrix c);
147 
148     public Matrix add(double a);
149     
150     
151     /**
152      * Set a complete column in the matrix to the value given.
153      * @param idx
154      * @param v
155      * @return
156      */
157     public Matrix setColumn(int idx, Vector v);
158     /**
159      * Set a complete column in the matrix to the value given. Note that the matrix must have only one column.
160      * @param idx
161      * @param v
162      * @return
163      */
164     public Matrix setColumn(int idx, Matrix v);
165 
166     
167     
168     /**
169      * Append the matrix as new rows onto the existing matrix.
170      * @param m
171      * @return
172      */
173     public AGDenseMatrix append(Matrix m);
174  
175     
176     /**
177      * Append the matrix as new rows onto the existing matrix.
178      * @param m
179      * @return
180      */
181     public AGDenseMatrix append(Vector m);
182 
183     
184     public double asScalar();
185 
186     /**
187      * append double value. 
188      * @param d
189      */
190     public AGDenseMatrix append(double d);
191 
192 
193     Matrix setRow(int k, Matrix m);
194 
195 
196     Matrix setRow(int k, Vector v);
197     
198     /**
199      * Delete column k from the matrix.
200      * @param k
201      * @return
202      */
203     Matrix delCol(int k);
204     
205     Matrix delRow(int k);
206 }
207 
208 
209 /*
210  * $Log: Matrix.java,v $
211  * Revision 1.4  2010/01/05 21:27:57  pah
212  * add delete colum/row functions
213  *
214  * Revision 1.3  2009/09/22 07:04:16  pah
215  * daily checkin
216  *
217  * Revision 1.2  2009/09/08 19:24:03  pah
218  * further slicing possibilites
219  *
220  * Revision 1.1  2009/09/07 16:06:12  pah
221  * initial transcription of the core
222  *
223  */