diff --git a/ex7/projectData.m b/ex7/projectData.m index 06afd5e..80391d7 100644 --- a/ex7/projectData.m +++ b/ex7/projectData.m @@ -1,26 +1,36 @@ -function Z = projectData(X, U, K) -%PROJECTDATA Computes the reduced data representation when projecting only -%on to the top k eigenvectors -% Z = projectData(X, U, K) computes the projection of -% the normalized inputs X into the reduced dimensional space spanned by -% the first K columns of U. It returns the projected examples in Z. -% - -% You need to return the following variables correctly. -Z = zeros(size(X, 1), K); - -% ====================== YOUR CODE HERE ====================== -% Instructions: Compute the projection of the data using only the top K -% eigenvectors in U (first K columns). -% For the i-th example X(i,:), the projection on to the k-th -% eigenvector is given as follows: -% x = X(i, :)'; -% projection_k = x' * U(:, k); -% - - - - -% ============================================================= - -end +function Z = projectData(X, U, K) +%PROJECTDATA Computes the reduced data representation when projecting only +%on to the top k eigenvectors +% Z = projectData(X, U, K) computes the projection of +% the normalized inputs X into the reduced dimensional space spanned by +% the first K columns of U. It returns the projected examples in Z. +% + +% You need to return the following variables correctly. +Z = zeros(size(X, 1), K); + +% ====================== YOUR CODE HERE ====================== +% Instructions: Compute the projection of the data using only the top K +% eigenvectors in U (first K columns). +% For the i-th example X(i,:), the projection on to the k-th +% eigenvector is given as follows: +% x = X(i, :)'; +% projection_k = x' * U(:, k); +% + +U_reduce = U(:, 1:K); + +m = size(X, 1); +n = size(X, 2); +for i = 1:m + x = X(i, :)'; + z = x' * U_reduce; + + Z(i, :) = z; +end + +assert(size(Z) == [m K]); + +% ============================================================= + +end