Preprocesses frequency-domain data for frequency-domain subspace identification of discrete-time state-space models. Delivers an order-estimate.


[S,R] = fdordom(H,w,s)

[S,R] = fdordom(H,w,s,Rold)


This function performs the initial data compression for discrete-time subspace identification based on measured frequency reponse function (FRF) data. In addition, it delivers information usuable for determining the required model order. The model structure is the following:

$$ \dot{x}(t) = Ax(t) + Bu(t) $$

$$ y(t) = Cx(t) + Du(t) $$

Several data batches can be concatenated, as shown below. This function acts as a preprocessor to fdmodom.


H is the measured frequency response function (FRF). This should be a matrix which follows the convention of MATLAB 6; it should be l x m x N in which H(:,:,i) contains the complex FRF at the i th complex frequency.

w is the vector of complex frequencies at which the FRF is measured:

$$ \mathtt{w} = e^{j\omega} $$

s is the block-size parameter. This scalar should be >n.

Rold is the (optional) data-matrix resulting from a previous call to fdordom.


S is the first s singular values of the rank-deficient R22 matrix (see below).

R is a compressed data matrix containing information about the measured data, as well as information regarding the system dimensions.


The MEX-implementation may generate the following warning:

Cholesky-factorization failed; falling back on QR-factorization.

This implies that the fast Cholesky-algorithm failed. The function has automatically fallen back onto a slower QR-algorithm. Results from fdordom can be used without problems if this warning appears.


The discrete-time data compression algorithm in [1] is used. In the M-file implementation, the following RQ-factorization is made:

The meaning of the various matrices can be found in the cited article. In the MEX-implementation, the following Cholesky-factorization is attempted first:

If this factorization fails, the algorithm falls back on the above RQ-factorization. In all cases, a weighted SVD of the R22 matrix is made, and its left singular vectors are appended to the R-matrix. Its first s singular values are returned in S.

Used By

This a top-level function that is used directly by the user.

Uses Functions


BLAS-functions DTRMM.

(All built into the executable)

See Also

fdmodom, fcordom


[1] T. McKElvey, H. Akcay, and L. Ljung, "Subspace-based multivariable system identification from frequency response data", IEEE Transactions on Automatic Control, vol. 41, pp. 960-979, July 1996.