function Ak = approx(A, k) % given matrix A and number k of top eigenvalues % an approximation Ak is calculated via SVD % k < m,n [m, n] = size(A); lo = m; if ( n < m ) lo = n; end if ( lo < k ) k = lo; end [U, S, V] = svd(A); svk = svds(A, k); uk = U(:,[1:k]); vk = V(:,[1:k]); Ak = uk * diag(svk) * vk'; % plaatje is niet wenslijk in een functie, laten we erbuiten % weergeven % image(Ak);