Bird
Raised Fist0
MATLABdata~20 mins

Singular value decomposition (svd) in MATLAB - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
SVD Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of SVD on a simple matrix
What is the output of the following MATLAB code snippet?
MATLAB
A = [3 1; 1 3];
[U,S,V] = svd(A);
disp(diag(S)');
A[2 4]
B[4 2]
C[5 1]
D[3 3]
Attempts:
2 left
💡 Hint
Recall that singular values are the square roots of eigenvalues of A'*A.
🧠 Conceptual
intermediate
1:30remaining
Properties of matrices in SVD
Which statement about the matrices U, S, and V from the SVD of a matrix A is correct?
AU and V are orthogonal matrices, and S is a diagonal matrix with non-negative entries.
BU and V are diagonal matrices, and S is an orthogonal matrix.
CU is upper triangular, V is lower triangular, and S is symmetric.
DU and V are symmetric matrices, and S is a diagonal matrix with negative entries.
Attempts:
2 left
💡 Hint
Think about the definition of orthogonal matrices and singular values.
🔧 Debug
advanced
2:30remaining
Identify the error in SVD reconstruction
What is the error in the following MATLAB code that attempts to reconstruct matrix A from its SVD?
MATLAB
A = [1 2; 3 4];
[U,S,V] = svd(A);
A_reconstructed = U * S * V;
disp(A_reconstructed);
AThere is no error; the code reconstructs A correctly.
BThe svd function returns V transposed, so V should be transposed again.
CThe multiplication order is incorrect; it should be U * S * V'.
DThe matrix S is not diagonal, so reconstruction fails.
Attempts:
2 left
💡 Hint
Recall the formula for reconstructing A from U, S, and V.
📝 Syntax
advanced
1:30remaining
Syntax error in SVD usage
Which option contains a syntax error when performing SVD in MATLAB?
A[U,S,V] = svd A;
B[U,S,V] = svd(A);
C[U,S,V] = svd(A, 'econ');
D[U,S,V] = svd(A,0);
Attempts:
2 left
💡 Hint
Check the correct syntax for function calls in MATLAB.
🚀 Application
expert
2:00remaining
Number of singular values greater than a threshold
Given matrix A, how many singular values are greater than 1.5 in the following code?
MATLAB
A = [4 0 0; 0 3 0; 0 0 0.5];
[~,S,~] = svd(A);
sv = diag(S);
count = sum(sv > 1.5);
A0
B3
C1
D2
Attempts:
2 left
💡 Hint
Look at the diagonal entries of S and count those greater than 1.5.

Practice

(1/5)
1. What does the MATLAB function svd(A) return when applied to a matrix A?
easy
A. The determinant of matrix A.
B. The inverse of matrix A.
C. Three matrices: U, S, and V such that A = U * S * V'.
D. The transpose of matrix A.

Solution

  1. Step 1: Understand the purpose of svd

    The svd function decomposes a matrix into three parts: U, S, and V.
  2. Step 2: Recall the decomposition formula

    It satisfies the equation A = U * S * V', where U and V are orthogonal matrices and S is diagonal.
  3. Final Answer:

    Three matrices: U, S, and V such that A = U * S * V'. -> Option C
  4. Quick Check:

    svd(A) = U, S, V [OK]
Hint: Remember svd splits matrix into U, S, V parts [OK]
Common Mistakes:
  • Confusing svd with inverse or transpose
  • Expecting a single matrix output
  • Thinking svd returns determinant
2. Which of the following is the correct MATLAB syntax to compute the singular value decomposition of matrix A and store the results in U, S, and V?
easy
A. [U, S, V] = svd(A);
B. svd(U, S, V) = A;
C. U, S, V = svd(A);
D. svd(A, U, S, V);

Solution

  1. Step 1: Recall MATLAB function output syntax

    In MATLAB, multiple outputs are assigned using square brackets on the left side.
  2. Step 2: Match correct svd syntax

    The correct syntax is [U, S, V] = svd(A); to get all three matrices.
  3. Final Answer:

    [U, S, V] = svd(A); -> Option A
  4. Quick Check:

    Use square brackets for multiple outputs [OK]
Hint: Use square brackets for multiple outputs in MATLAB [OK]
Common Mistakes:
  • Using parentheses instead of brackets for outputs
  • Trying to assign outputs on the right side
  • Incorrect argument order in svd
3. Given the MATLAB code:
A = [3 1; 1 3];
[U, S, V] = svd(A);
disp(diag(S));

What will be the output of disp(diag(S))?
medium
A. [0; 0]
B. [3; 1]
C. [1; 3]
D. [4; 2]

Solution

  1. Step 1: Calculate singular values of A

    Matrix A is symmetric. Its singular values are the absolute values of eigenvalues. Eigenvalues of A are 4 and 2.
  2. Step 2: Understand svd output

    The diagonal of S contains singular values in descending order: 4 and 2.
  3. Final Answer:

    [4; 2] -> Option D
  4. Quick Check:

    Singular values = eigenvalues for symmetric matrix [OK]
Hint: For symmetric matrices, singular values = absolute eigenvalues [OK]
Common Mistakes:
  • Confusing singular values with matrix entries
  • Mixing order of singular values
  • Expecting singular values to be zero
4. Consider the MATLAB code snippet:
A = [1 2; 3 4];
[U, S, V] = svd(A);
U = svd(A);

What is the error in this code?
medium
A. Matrix A is not square, so svd cannot be applied.
B. The second call to svd assigns a matrix to U instead of three outputs.
C. The variable V is not assigned in the second svd call.
D. The svd function requires four output variables.

Solution

  1. Step 1: Analyze the first svd call

    The first call correctly assigns three outputs: U, S, V.
  2. Step 2: Analyze the second svd call

    The second call assigns U = svd(A); which returns only singular values as a vector, not a matrix U.
  3. Final Answer:

    The second call to svd assigns a matrix to U instead of three outputs. -> Option B
  4. Quick Check:

    svd(A) alone returns singular values vector [OK]
Hint: svd(A) alone returns singular values vector, not matrices [OK]
Common Mistakes:
  • Expecting svd(A) to return U matrix alone
  • Thinking svd requires square matrix only
  • Ignoring number of outputs in function call
5. You want to approximate a matrix A by keeping only the largest singular value and corresponding vectors using MATLAB. Which code snippet correctly performs this low-rank approximation?
hard
A. [U, S, V] = svd(A);
A_approx = U(:,1) * S(1,1) * V(:,1)';
B. [U, S, V] = svd(A);
A_approx = U(:,1) * V(:,1)';
C. [U, S, V] = svd(A);
A_approx = S(1,1) * V(:,1)';
D. [U, S, V] = svd(A);
A_approx = U(:,1) * S(:,1) * V(:,1)';

Solution

  1. Step 1: Understand low-rank approximation using svd

    Keeping only the largest singular value means using the first column of U, the first singular value, and the first column of V.
  2. Step 2: Construct the approximation

    The approximation is A_approx = U(:,1) * S(1,1) * V(:,1)', multiplying the first singular value and vectors.
  3. Final Answer:

    [U, S, V] = svd(A); A_approx = U(:,1) * S(1,1) * V(:,1)'; -> Option A
  4. Quick Check:

    Low-rank approx = U(:,1)*S(1,1)*V(:,1)' [OK]
Hint: Multiply first U column, singular value, and V column for approximation [OK]
Common Mistakes:
  • Omitting singular value in multiplication
  • Using entire S matrix instead of first singular value
  • Incorrect matrix dimensions in multiplication
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard