import org.apache.mahout.math.DenseMatrix;
import org.apache.mahout.math.Matrix;
import org.apache.mahout.math.SingularValueDecomposition;

public class testMPInverse {
        public void test() {
                Matrix matrix = new DenseMatrix(new double[][] {
                                {1,2},
                                {3,4},
                                {5,6}
                          });
                SingularValueDecomposition svd = new 
SingularValueDecomposition(matrix);
                 Matrix u = svd.getU();
                 Matrix v = svd.getV();
                 Matrix s = svd.getS();
                 System.out.println(u);
                 System.out.println(v);
                 System.out.println(s);
        }

        public static void main(String[] args) {
                testMPInverse t = new testMPInverse();
                t.test();
        }
}

v is

{
  0  => {0:0.42866713354862623,1:-0.8059639085892977}
  1  => {0:0.5663069188480352,1:-0.1123824140965937}
  2  => {0:0.7039467041474443,1:0.5811990803961101}
}

MATLAB gives a different answer

x=[1,2,3;4,5,6];
[u s v]=svd(x);
v
v =

   -0.4287    0.8060    0.4082
   -0.5663    0.1124   -0.8165
   -0.7039   -0.5812    0.4082

Why the last column of v produced by Mahout SingularValueDecomposition is 0?

Thanks for your time.

Reply via email to