Square Jacobi SVD HDL Optimized
Libraries:
Fixed-Point Designer HDL Support /
Matrices and Linear Algebra /
Matrix Factorizations
Description
Use the Square Jacobi SVD HDL Optimized block to perform singular value
decomposition (SVD) on square matrices using the two-sided Jacobi algorithm. Given a square
matrix A, the Square Jacobi SVD HDL Optimized block uses the
two-sided Jacobi method to produce a vector s of nonnegative elements and
unitary matrices U and V such that A =
U*diag(s)*V'
.
Note
For non-square matrices, use the Non-Square Jacobi SVD HDL Optimized block.
Examples
Extended Examples
Ports
Input
Output
Parameters
Tips
The Square Jacobi SVD HDL Optimized block computes the singular value decomposition in place. Set the fixed-point data type of the input
n
-by-n
matrixA
with enough precision and enough headroom to avoid overflow.First, use the
fixed.singularValueUpperBound
function to determine the upper bound on the singular values. Then define the integer length based on the value of the upper bound, with one additional bit for the sign, another additional bit for intermediate CORDIC growth, and one more bit for intermediate growth to compute the Jacobi rotations. Compute the fraction length based on the integer length and the desired word length.svdUpperBound = fixed.singularValueUpperBound(n,n,max(abs(A(:)))) additionalBitGrowth = 3; integerLength = ceil(log2(svdUpperBound)) + additionalBitGrowth wordLength = 16 fractionLength = wordLength - integerLength
The behavior of the Square Jacobi SVD HDL Optimized block is equivalent to
[U,s,V] = fixed.jacobiSVD(A)
whenA
is a square matrix. If the input data type is fixed point with binary-point scaling, the function and the block provide bit-exact results. However, if the input data type is floating point, small numerical differences may exist between the function and the block.The Number of Jacobi iterations block parameter is equivalent to the
numberOfSweeps
input argument for thefixed.jacobiSVD
function.The behavior of the Square Jacobi SVD HDL Optimized block is equivalent to
[U,s,V] =
whenfixed.svd
(A,'econ','vector')A
is a square matrix.
Algorithms
References
[1] Arm Developer. "AMBA AXI and ACE Protocol Specification Version E." https://developer.arm.com/documentation/ihi0022/e/AMBA-AXI3-and-AXI4-Protocol-Specification/Single-Interface-Requirements/Basic-read-and-write-transactions/Handshake-process.
[2] Jacobi, Carl G. J., "Über ein leichtes Verfahren die in der Theorie der Säcularstörungen vorkommenden Gleichungen numerisch aufzulösen." Journal fur die reine und angewandte Mathematik 30 (1846): 51–94.
[3] Forsythe, George E. and Peter Henrici. "The Cyclic Jacobi Method for Computing the Principal Values of a Complex Matrix." Transactions of the American Mathematical Society 94, no. 1 (January 1960): 1-23.
[4] Shiri, Aidin and Ghader Khosroshahi. "An FPGA Implementation of Singular Value Decomposition", ICEE 2019: 27th Iranian Conference on Electrical Engineering, Yazd, Iran, April 30–May 2, 2019, 416-22, IEEE.
[5] Golub, Gene H. and Charles F. Van Loan. Matrix Computations, 4th ed. Baltimore, MD: Johns Hopkins University Press, 2013.
[6] Athi, Mrudula V., Seyed R. Zekavat, and Alan A. Struthers. "Real-Time Signal Processing of Massive Sensor Arrays via a Parallel Fast Converging SVD Algorithm: Latency, Throughput, and Resource Analysis." IEEE Sensors Journal 16, no. 18 (January 2016): 2519-26. https://doi.org/10.1109/JSEN.2016.2517040.
[7] Brent, Richard P., Franklin T. Luk, and Charles Van Loan. "Computation of the Singular Value Decomposition Using Mesh-Connected Processors." Journal of VLSI and Computer Systems 1, 3 (1985): 242–70.
[8] Hemkumar, Nariankadu D. A Systolic VLSI Architecture for Complex SVD. Master’s thesis, Rice University, 1991.
[9] Duryea, R. A. Finite Precision Arithmetic in Singular Value Decomposition Architectures. Ph.D. thesis, Cornell University, 1987.
[10] Cavallaro, Joseph R. and Franklin T. Luk. 1987. "CORDIC Arithmetic for an SVD Processor." 1987 IEEE 8th Symposium on Computer Arithmetic (ARITH), Como, Italy, May 18-21, 1987, 113-20. IEEE. https://doi.org/10.1109/ARITH.1987.6158686.
Extended Capabilities
Version History
Introduced in R2023a