MATLAB: Right hand plane pole/zeros

system identificationSystem Identification Toolboxtransfer function

Hello,
I have an experimental frequency response function to which I am trying to fit a model using the System Identification GUI. The model seems to look and behave much like the experimental system, but all of the poles/zeros of the transfer function are in the right-hand plane. It is my understanding that this sort of model should be unstable, but it is not. Can anyone provide an explanation for this behavior? Is there any way to coerce Matlab to model only left hand plane pole/zeros? Any help would be greatly appreciated!
Thank you, Jeremy

Best Answer

This is a discrete-time model and so the test of stability is whether the poles are inside the unit circle; test abs(pole(sys))<1.
Your model still has 5 poles outside the unit circle and is thus unstable. A few tips:
1. When you estimate, set 'Focus' to 'simulation' which will force the estimator to return a stable model.
2. ARX is not a good estimator of frequency response data. Try OE (transfer function form) or N4SID (state space) instead.
3. If you were hoping to get a continuous-time model, you would have to use a frequency response data that is "continuous-time" (Ts=0). If the data was collected experimentally directly as amplitude/phase values vs frequency, you should be able to set the sample time to zero for the data without introducing errors. Then, OE or N4SID would directly yield a continuous-time system. If on the other hand, the data was obtained by transforming some time domain data (say, acquired input-output signals from an experiment), you will have to look closely at the conditions on input signal. If the input was not measured but rather known to be piecewise constant or piecewise linear (this happens when you have a holding device in the path of your signal entering the system), your best bet would be estimate a discrete-time model for it and then do d2c on the resulting model after estimation. If the input was measured using an acquisition device (assuming you used a good anti-aliasing filter), you could still set Ts to zero in the FRF that you derive using that data.
All these subtleties with input behavior may appear too complex for a simple data fitting task, but sometimes it is important to obtain the best possible answers. On the other hand, simply/blindly setting Ts=0 in the FRD data and using it to derive a transfer function can often return acceptable results. So my advice would be to start there.
To summarize: (1) When you import your FRF data into the GUI, set the sampling interval (Ts) to zero if you want a CT model.
(2) Choose OE or N4SID as estimator, using Focus = simulation.
HTH, Rajiv