# # Singular value decomposition in Matlab style # svd := proc( A :: Matrix ) local UU, SS, VV, V0, m, n, k, s; m,n := LinearAlgebra[Dimension](A); # apply Maple SingularValues UU,s,V0 := LinearAlgebra[SingularValues](A, output=['U','S','Vt']); # rearrage output k := min(m,n); SS := LinearAlgebra[DiagonalMatrix](s[1..k],m,n); # get a mxn zero matrix VV := LinearAlgebra[HermitianTranspose](V0); return UU, SS, VV; end proc;