Frequency Domain System Identification

Make sure the application is loaded.

<< NumericalControlMethods`

Load the collection of test examples.

<< NumericalControlMethods`Examples`

This is a discrete-time state-space system of a simple process control of a paper machine.

ss = PaperMachine[]  //  N

Here is the transfer function of the defined system.

tf = Chop[ExpandRational[TransferFunction[ss]]]

This is an a priori estimate of the order of the state-space system to be identified.

maxorder = 6;

Here is the number of measurements that is enough to identify the system.

len = 2 (maxorder + 1);

This is the sampling rate of the system.

ν = (1/SamplingPeriod)[ss]

Here are some selected frequencies.

frequencies = 
        Rest[Range[0, 
            2 π ν, ((2 π ν)/len)]];

These points in the z-plane correspond to the selected frequencies.

z = Exp[((I frequencies)/ν)];

The frequency points are coupled with the corresponding transfer matrices.

tfsample = Transpose[{z, tf /@ z}];

This identifies the state-space system from its sampled transfer function.

\(ss\&^ = 
      FrequencyResponseIdentify[tfsample, MaxOrder -> maxorder, 
        Sampled -> Period[1. ]]\)

Here is the transfer function of the identified state-space system.

\(Chop[ExpandRational[TransferFunction[ss\&^]]]\)