This is a brief user's guide for a beginner to use the System/Observer/Controller Identification
Toolbox (SOCIT). System identification is the process of calculating a mathematical
representation of a physical system using experimental data. There are two types of
experimental data commonly available for system identification. One is the time history from
input actuators and output sensors. The other is the Frequency Response Function (FRF)
computed from input and output data using the Fast Fourier Transformation (FFT) technique.
The methods that use the time history to identify a mathematical model are commonly called the
time-domain methods. On the other hand, the methods that use the FRF (complex number) are
referred to as the frequency-domain methods.
There are many methods such as the Eigensystem Realization Algorithm (ERA) using the system
Markov parameters formed from the pulse response function for system identification. The pulse
response may be obtained by applying a pulse with an actuator at the point of interest to the
system. In general, the pulse response is obtained by inverting the FRF via FTF, that is the
method used most often in the modal testing community. This computational process involves
both the frequency-domain as well as the time-domain data. Nevertheless, the pulse response
can also be computed directly from the input and output time histories without first computing
the FRF and then inverting it. The Observer/Kalman filter Identification (OKID) method is the
one using the time-domain approach alone.
There are several approaches available for system identification either in the time domain or the
frequency domain. Each approach may involve several parameters and options that must be
carefully tuned to fit the problems of interest. For a beginner, it is very difficult to understand
the significance of each parameter or option. The objective of this writing is to show how to use
some simple function files with minimum number of input parameters. These function files are
served as the basis for the user to get acquainted with the toolbox.
Modal Parameter Identification
The first function file is modid.m in the time domain. This function is written for the user who is
interested in identifying modal parameters including frequencies, damping ratio, and mode
shapes at the sensor points.
[fd,zt,psi,xt]=modid(r,y,u,dt,nm);
The input parameters for this function are:
r : number of inputs.
y : N x m output matrix where N = number of data points and m = number of outputs.
If the output is the pulse response, the output matrix y becomes an N x mr matrix;
the first m columns corresponding to the first input, the second m columns corresponding to
the second input, etc.
u : N x r input matrix where N = number of data points and r = number of inputs.
If the output matrix y contains the pulse (real) response, set u to be a scalar value 0.
If the output matrix y contains frequency (complex) response data, the matrix u becomes
an N x1 column frequency vector.
Dt: sampling interval (sec.)
nm: assumed number of modes to be identified.
The output parameters are:
Fd: damped natural frequencies (Hz)
zt : damping ratio (%)
psi: rotated mode shapes for best alignment with +/- 90 deg.
xt : accuracy indicator matrix (nm x 9)
xt(:,1)=cmi :consistent-mode indicator (%) (emac*mpcw)
xt(:,2)=emac:extended modal amplitude coherence (%)
xt(:,3)=mpcw:weighted modal phase collinearity (%)
xt(:,4)=mhp :modal history prediction indicator (imp*omp)
xt(:,5)=imp :input modal prediction indicator
xt(:,6)=omp :output modal predication indicator (%)
xt(:,7)=msv :nomalized mode singular values (%) relative to the maximum one
xt(:,8)=mci:modal controllability index (%) relative to the maximum one
xt(:,9)=moi:modal observability index (%) relative to the maximum one
The assumed number of modes nm may not be obvious for any user who is not the one
performing the task of taking the data for system identification. The rule of thumb is to use a
sufficiently large number as an initial guess, say 20 to include some of the computational modes
to accommodate the presence of input and output noises. The number may be increased if
necessary when more modes are desired. To identify modes in the frequency range of interest,
the sampling interval must be properly chosen. The Nyquist frequency (half of the sampling
rate, i.e., 1/dt) should be approximately less than 10 times of the lowest frequency to be
identified. For example, assume that the lowest frequency is 5 Hz, the recommended sampling
rate should be less than 100 Hz. To avoid the aliasing problem, a filter with cut-off frequency at
less than the Nyquist frequency should be used to remove the frequencies above the Nyquist
frequency. By doing this recommended process, the assumed number modes can be chosen to be
the number of modes in the frequency range of interest. In general, the frequency range of
interest should be higher than 10% and lower than 75% of Nyquist frequency. Suppose that the
sampling rate (Hz) is much larger than the lowest frequency of interest. The assumed number of
modes, nm, must chosen sufficiently larger, for example 30, so that the lowest mode can be
identified properly.
The output parameters are the system modes including damped natural frequencies, damping
ratio and, mode shapes. Nine indicators are provided for the user to judge the accuracy of the
identified system modes. Among them, three indicators need to be examined carefully including
cmi, mhp, and msv . The modes with higher percentages of cmi and mhp indicate that the
predicted modal time history is in good agreement with the real modal time history. Those
modes with higher percentage of cmi and mhp than 80% are considered to be good system
modes. The indicator msv implies the degree of participation of the corresponding mode in the
pulse response. The msv has been normalized relative to the maximum one. It gives the degree
of controllability and observability together for each mode. Other indicators are complementary
to the three indicators cmi, mhp, and, msv for the users who would like to perform further
analysis for the identified modal parameters.
The example file xmodid.m is provided for the user to try out.
Similar to modid.m, the second function file is modidfd.m in the frequency domain. This
function identifies modal parameters directly from frequency response data without
converting to the time domain. This function is particularly good for curve-fitting
frequency response data.
[fd,zt,psi,xt]=modidfd(r,Gz,f,dt,nm,w)
The input parameters for this function are:
R : number of inputs
Gz : N x mr frequency response data matrix (complex-valued) where N = number of data
points and m = number of outputs; the first m columns corresponding to the first input,
the second m columns corresponding to the second input, etc.
f : N x 1 frequency vector
dt : sampling interval (sec.)
nm : desired number of modes to be identified
w : a scalar (1 >= w > 0) to generate exponential forgetting
or a vector chosen weight Gz at each frequency point
The output parameters are
Fd : damped natural frequencies (Hz)
zt : damping ratio (%)
psi : rotated mode shapes for best alignment with +/- 90 deg.
xt : accuracy indicator matrix (nm x 9)
xt(:,1)=cmi :consistent-mode indicator (%) (emac*mpcw)
xt(:,2)=emac:extended modal amplitude coherence (%)
xt(:,3)=mpcw:weighted modal phase collinearity (%)
xt(:,4)=mhp :modal history prediction indicator (imp*omp)
xt(:,5)=imp :input modal prediction indicator
xt(:,6)=omp :output modal predication indicator (%)
xt(:,7)=msv :nomalized mode singular values (%) relative to the maximum one
xt(:,8)=mci:modal controllability index (%) relative to the maximum one
xt(:,9)=moi:modal observability index (%) relative to the maximum one
All the statements described above for the function modid.m in the time domain also apply to
modidfd.m in the frequency domain. The weighting w is important for the case where the
resolution of frequency data is not uniformly distributed. For example, the high-frequency
response data has better resolution than the low-frequency one for the acceleration
measurements. In this case, the weighting may be chosen less than 1, say w=0.998, to help
identify the system modes at the low frequency side. The weighting may be tuned to focus on the
frequency range of interest.
The example file xmodidfd.m is provided for the user to try out.
Control-Model Identification
The third function file is conid.m. This function is written for the user who is seeking an
experimental state-space model including a state matrix, an input matrix, an output matrix, the
direct transmission term, and an observer for the purpose of controller designs.
[a,b,c,d,g,x0,xt]=conid(r,y,u,dt,nst)
The input parameters are:
r : number of inputs.
y : N x m output matrix where N = number of data points and m = number of outputs. If the
output is the pulse response, the output matrix y becomes an N x mr matrix; the first m
columns corresponding to the first input, the second m columns corresponding to the second
input, etc.
u : N x r input matrix where N = number of data points and r = number of inputs. If the output
matrix y contains the pulse (real) response, set u to be a scalar value 0. If the output matrix y
contains frequency (complex) response data, the matrix u becomes an N x1 column
frequency vector.
nst: assumed number of states
The output parameters are:
a : state matrix (nst x nst)
b : input matrix (nst x r)
c : output matrix (m x nst)
d : direct transmission matrix
g : observer gain (nst x m); g=[] if stable observer cannot be found for the assumed nst
x0: initial state
xt: modal parameters and accuracy indicator matrix
xt(:,1) =fd :damped natural frequencies
xt(:,2) =zt :damping ratio (%)
xt(:,3) =cmi :consistent-mode indicator (%) (emac*mpcw)
xt(:,4) =emac:extended modal amplitude coherence (%)
xt(:,5) =mpcw:weighted modal phase collinearity (%)
xt(:,6) =mhp :modal history prediction indicator (imp*omp) (%)
xt(:,7) =imp :input modal prediction indicator
xt(:,8) =omp :output modal predication indicator(%)
xt(:,9) =msv :nomalized mode singular values(%) relative to the maximum one
xt(:,10)=mci :modal controllability index(%) relative to the maximum one
xt(:,11)=moi :modal observability index (%) relative to the maximum one
The assumed number of states nst may not be easy to choose. In general, the number of states is
the number of system eigenvalues (modes) including their complex conjugate. Because of the
presence of noise, system states would not be as clean as desired. As a result, the integer nst is
initially chosen approximately twice larger than the desired number of states that may exist in the
noisy data to accommodate the noise modes. The number of states may be increased if necessary
when more system states are desired.
The output of the function includes the state matrix a, the input matrix b, the output matrix c, and
the direct transmission matrix d in the discrete-time domain. In addition, a deadbeat observer
gain matrix g is computed for the user who may use these system matrices for designing a full-
state feedback controller. Similar to the function modid.m, nine indicators are provided for the
user to judge the accuracy of each individual identified system mode (i.e., eigenvalues).
Nevertheless, the indicator msv for this case may carry more weight than other two indicators
cmi and mhp. In addition, the indicators mci and moi may be used to measure the degree of
controllability and observability, respectively. There are some cases where unknown periodic
disturbances are present in addition to the control inputs. The modes excited by the periodic
disturbance may have very high percentage of cmi, mhp, and moi, but with very low percentage
of mci. That clearly shows that the mode is excited by the periodic disturbance rather than the
control input.
The example file xcondid.m is provided for the user to try out.
After the exercise of these two function files, the user may be able to get deeper system
identification analysis by using other function files including okid, okid_w, okid_fq, okid_fqw,
srim, and srim_fq. Two user's guides are available for the time-domain SOCIT (84pages) and
the frequency-domain SOCIT (30 pages). These user's guides need to be updated. They are
somewhat different from the m files included in the newer version of SOCIT. Nevertheless, it
help you to start running the m files.
Reference Book: Juang, J.-N., Applied System Identification, Prentice Hall, Inc., Englewood
Cliffs, New Jersey 07632, 1994