Name

qr_blocktoep — QR factorization of a block Toeplitz matrix

Calling Sequence

[Q,R] = qr_blocktoep(BC,BR)

Parameters

BC

M*r x s matrix

BR

r x N*s matrix

Q

orthonormal M*r x N*s matrix

R

upper triangular N*s x N*s matrix

Description

The routine computes the QR factorization of the block Toeplitz matrix T=[T(0) T(1) T(2) ... T(N-1); T(-1) T(0) T(1) ... T(N-2) ; ... ; T(-M+1) T(-M+2) T(-M+3) ... T(abs(-M+N))]. The blocks T(-M+1),...,T(N-1) are r x s matrices, and BC=[T(0);T(-1);...;T(-M+1)] is the first block column and BR=[T(0),T(1),...,T(N-1)] is the first block row of T. We have to assume that the matrix [T'*T T';T eye()] is strongly regular (i.e., all leading minors are non-zero). The results Q and R are such that T=Q*R.

Note: it is a known problem with this algorithm that the computed Q may suffer from a loss of orthogonality. The matrix T should be well-conditioned with sufficiently large gaps between the singular values.

Examples

BC = (1:3)';			// first column
BR = 1:2:9;			// first row
T = toeplitz(BC,BR);		// corresponding Toeplitz matrix
[Q,R] = qr_blocktoep(BC,BR);	// perform QR factorization
disp(clean(T-Q*R));		// show residual; should be zero
disp(clean(Q*Q'));		// check that Q is orthonormal; should be eye()
disp(clean(R));			// R should be upper triangular

Authors

Sander WAHLS