Clear Filters
Clear Filters

ctrb and obsv of Modal Analysis Ex and OKID, ERA

4 views (last 30 days)
i'm doing system identification
while some problem in system identification with ERA, i find matlab in-house code and example of system identification(Modal Analysis of a
Flying Wing Aircraft)
but that is not controllerble or observable. i know ERA and OKID guarantee the controllable and observable.
is there some command in matlab that guarantee the ctrb and obsv?

Answers (1)

Zuber Khan
Zuber Khan on 9 May 2024
Hi,
As per my understanding, there is no shortcut command that can guarantee that a given dynamic system will be observable or controllable. You would need to manually check for observability/controllability of a given dynamic system. For this, you can derive the state-space model of your configuration and then check whether it is controllable/observable or not. There are multiple functions in Matlab to achieve this.
One such function is "era" function which will give you a state-space model of the dynamic system. This function uses the Eigensystem Realization Algorithm to estimate a state-space model using impulse response data rather than input/output data. "era" is especially useful for identifying dynamic systems for applications such as modal analysis or structural health modeling. For more information regarding this, you can refer to the following documentation link:
Another way is to use the "ssest" function which derives state-space model using either time-domain or frequency-domain data.
sys = ssest(tt,nx)
It estimates the continuous-time state-space model 'sys' of order 'nx', using all the input and output signals in the timetable 'tt'. This can be used for both SISO and MISO systems. For more information regarding it, you can refer to the following documentation link:
Once you have the state-space model, you can check its observability as well as controllability using the "obsv" and "ctrb" functions respectively. I am attaching a code snippet for your reference:
A = ...; % System matrix
B = ...; % Input-to-State matrix
C = ...; % State-to-Output matrix
% Check Observability
ObservabilityMatrix = obsv(A,C);
isObservable = rank(ObservabilityMatrix) == size(A,1);
% Check Controllability
ControllabilityMatrix = ctrb(A,B);
isControllable = rank(ControllabilityMatrix) == size(A,1);
In order to know more about "obsv" and "ctrb" functions, kindly refer to the following documentation links:
I hope this will help.
Regards,
Zuber

Categories

Find more on Dynamic System Models in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!