How to Perform Singular Value Decomposition (SVD) in R - Step by Step Examples
How to Perform Singular Value Decomposition (SVD) in R ?
Answer
To perform Singular Value Decomposition (SVD) in R, you can use the svd()
function. This function decomposes a matrix into three matrices representing the singular vectors and values.
✐ Examples
1 Performing SVD on a 3x2 Matrix
In this example,
- We start by creating a 3x2 matrix named
mat
using thematrix()
function. This matrix represents the data we want to decompose. - Next, we use the
svd()
function to perform SVD on the matrixmat
. We assign the result to a variable namedsvd_res
. - We extract the matrices representing the singular vectors from
svd_res
using the$u
and$v
attributes and assign them to variables namedu
andv
respectively. - We also extract the singular values from
svd_res
using the$d
attribute and assign them to a variable namedd
. - We print the matrices
u
andv
, as well as the vectord
to the console to see the results. This allows us to verify the decomposition.
R Program
mat <- matrix(c(1, 2, 3, 4, 5, 6), nrow = 3, byrow = TRUE)
svd_res <- svd(mat)
u <- svd_res$u
v <- svd_res$v
d <- svd_res$d
print('Matrix U:')
print(u)
print('Matrix V:')
print(v)
print('Vector D:')
print(d)
Output
[1] "Matrix U:" [,1] [,2] [1,] -0.2298477 0.8834610 [2,] -0.5247448 0.2407825 [3,] -0.8196419 -0.4018960 [1] "Matrix V:" [,1] [,2] [1,] -0.6196295 -0.7848945 [2,] -0.7848945 0.6196295 [1] "Vector D:" [1] 9.5255181 0.5143006
2 Performing SVD on a 4x3 Matrix
In this example,
- We start by creating a 4x3 matrix named
mat
using thematrix()
function. This matrix represents another set of data we want to decompose. - Next, we use the
svd()
function to perform SVD on the matrixmat
. We assign the result to a variable namedsvd_res
. - We extract the matrices representing the singular vectors from
svd_res
using the$u
and$v
attributes and assign them to variables namedu
andv
respectively. - We also extract the singular values from
svd_res
using the$d
attribute and assign them to a variable namedd
. - We print the matrices
u
andv
, as well as the vectord
to the console to see the results. This allows us to verify the decomposition.
R Program
mat <- matrix(c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12), nrow = 4, byrow = TRUE)
svd_res <- svd(mat)
u <- svd_res$u
v <- svd_res$v
d <- svd_res$d
print('Matrix U:')
print(u)
print('Matrix V:')
print(v)
print('Vector D:')
print(d)
Output
[1] "Matrix U:" [,1] [,2] [,3] [1,] -0.1408767 -0.82471435 0.5418041 [2,] -0.3439463 -0.42626394 -0.6625522 [3,] -0.5470159 -0.02781353 -0.3003078 [4,] -0.7500855 0.37063688 0.4210560 [1] "Matrix V:" [,1] [,2] [,3] [1,] -0.5045331 0.76077568 -0.4082483 [2,] -0.5745157 0.05714052 0.8164966 [3,] -0.6444983 -0.64649464 -0.4082483 [1] "Vector D:" [1] 2.546241e+01 1.290662e+00 2.503310e-15
Summary
In this tutorial, we learned How to Perform Singular Value Decomposition (SVD) in R language with well detailed examples.
More R Matrices Tutorials
- How to Create a Matrix in R ?
- How to Combine Matrices by Columns in R ?
- How to Combine Matrices by Rows in R ?
- How to Create Diagonal Matrices in R ?
- How to Access Matrix Elements using Indexing and Slicing in R ?
- How to get Matrix Size in R ?
- How to get Number of Rows in Matrix in R ?
- How to get Number of Columns in Matrix in R ?
- How to do Matrix Addition in R ?
- How to do Matrix Subtraction in R ?
- How to do Matrix Multiplication in R ?
- How to do Scalar Multiplication on a Matrix in R ?
- How to do Scalar Division on a Matrix in R ?
- How to do Element-Wise Operations in a Matrix in R ?
- How to Assign Row and Column Names in a Matrix in R ?
- How to get Row Names in a Matrix in R ?
- How to get Column Names in a Matrix in R ?
- How to find Transpose of a Matrix in R ?
- How to Extract the Diagonal of a Matrix in R ?
- How to find Determinant of a Matrix in R ?
- How to find Inverse of a Matrix in R ?
- How to find Rank of a Matrix in R ?
- How to Find Eigenvalues and Eigenvectors of a Matrix in R ?
- How to Perform Singular Value Decomposition (SVD) in R ?
- How to Perform QR Decomposition in R ?
- How to Perform Cholesky Decomposition in R ?
- How to Reshape Matrices in R ?
- How to Convert Data Frames to Matrices in R ?
- How to Create Identity Matrix in R ?
- How to Create Zero Matrix in R ?
- How to Create Ones Matrix in R ?
- How to Generate Random Matrices in R ?
- How to Calculate Row and Column Sums in R ?
- How to Calculate Row and Column Means in R ?
- How to Find Row and Column Max/Min in R ?
- How to Perform Element-Wise Comparisons in R ?