Main Content

Cholesky Factorization

Factor square Hermitian positive definite matrix into triangular components

  • Cholesky Factorization block

DSP System Toolbox / Math Functions / Matrices and Linear Algebra / Matrix Factorizations


The Cholesky Factorization block uniquely factors the square Hermitian positive definite input matrix S as


where L is a lower triangular square matrix with positive diagonal elements and L' is the Hermitian (complex conjugate) transpose of L.

Note that L and L' share the same diagonal in the output matrix. Cholesky factorization requires half the computation of Gaussian elimination (LU decomposition), and is always stable.



expand all

Specify the input matrix as a square matrix. The block output is valid only when its input has the following characteristics:

  • Hermitian — The block does not check whether the input is Hermitian. The block uses only the diagonal and upper triangle of the input to compute the output.

  • Real-valued diagonal entries — The block disregards any imaginary component of the input diagonal entries.

  • Positive definite — The block notifies you when the input is not positive definite as described in the Non-positive definite input parameter description.

Data Types: single | double
Complex Number Support: Yes


expand all

The block outputs a square matrix with lower triangle elements from L and upper triangle elements from L'. The output is not in the same form as the output of the MATLAB® chol function. In order to convert the output of the Cholesky Factorization block to the MATLAB form, use the following equation:

R = triu(LL'); 

In order to extract the L matrix exclusively, pass the output of the Cholesky Factorization block, LL', to the Extract Triangular Matrix block. Setting the Extract parameter of the Extract Triangular Matrix to Lower extracts the L matrix. Setting the Extract parameter to Upper extracts the L' matrix.

In this diagram, LL' is the output of the Cholesky Factorization block. Due to round off error, these equations do not produce a result that is exactly the same as the MATLAB result.

Block Output Composed of L and L *

Data Types: single | double
Complex Number Support: Yes


expand all

Specify the response to nonpositive definite matrix inputs as one of these:

  • Ignore — Proceed with the computation and do not issue an alert. The output is not a valid factorization. A partial factorization will be present in the upper left corner of the output.

  • Warning — Display a warning message in the MATLAB Command Window, and continue the simulation. The output is not a valid factorization. A partial factorization will be present in the upper left corner of the output.

  • Error — Display an error dialog and terminate the simulation.

To generate a valid output, the block algorithm requires a positive definite input. See the S port description for more information.


The Non-positive definite input parameter is a diagnostic parameter. Like all diagnostic parameters on the Configuration Parameters dialog box, it is set to Ignore in the code generated for this block by Simulink® Coder™ code generation software.

Block Characteristics

Data Types

double | single

Direct Feedthrough


Multidimensional Signals


Variable-Size Signals


Zero-Crossing Detection



[1] Golub, G. H., and C. F. Van Loan. Matrix Computations. 3rd ed. Baltimore, MD: Johns Hopkins University Press, 1996.

Extended Capabilities

Version History

Introduced before R2006a