Main Content


Block-diagonal Schur factorization


[T,B,BLKS] = bdschur(A,CONDMAX)
[T,B] = bdschur(A,[],BLKS)


[T,B,BLKS] = bdschur(A,CONDMAX) computes a transformation matrix T such that B = T \ A * T is block diagonal and each diagonal block is a quasi upper-triangular Schur matrix.

[T,B] = bdschur(A,[],BLKS) pre-specifies the desired block sizes. The input matrix A should already be in Schur form when you use this syntax.

Input Arguments

  • A: Matrix for block-diagonal Schur factorization.

  • CONDMAX: Specifies an upper bound on the condition number of T. By default, CONDMAX = 1e4. Use CONDMAX to control the tradeoff between block size and conditioning of T with respect to inversion. When CONDMAX is a larger value, the blocks are smaller and T becomes more ill-conditioned.

Output Arguments

  • T: Transformation matrix.

  • B: Matrix B = T \ A * T.

  • BLKS: Vector of block sizes.

Version History

Introduced in R2008a

expand all

Behavior changed in R2022a

See Also