ctrb and obsv of Modal Analysis Ex and OKID, ERA

8 次查看(过去 30 天)
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?

回答(1 个)

Zuber Khan
Zuber Khan 2024-5-9
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

类别

Help CenterFile Exchange 中查找有关 Dynamic System Models 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by