# Extraction of modal parameters from state space system

16 views (last 30 days)
Murray on 12 Feb 2021
Answered: Khaled Aljanaideh on 24 Feb 2021
I have transformed my experiemtnal input - output responses data into a data object
Sample.Data=iddata(y,x,Ts);
where sampling frequency is 2048 Hz. I have then constructed state-space matrices of my system using an estimate 20th model order
ss.System = n4sid(Sample.Data,20,'Ts',Sample.Data.Ts);
How / what is the most efficient method of extracting the modal parameters frequencies (Hz), modal damping ratios (%) and mode shapes from the state-space matrices in matlab? To find the natural frequencies and damping ratios I have written the following however I seem to have issues with my modeshapes:
%Obtain the Eigenvalues and Eigenvectors
[V,D] = eig(ss.System.a);
%Ensure eigen values and vectors are sorted correctly
[d,ind] = sort(diag(D));EigenFreq= D(ind,ind);EigVector=V(:,ind);
% Calculate the frequencies and damping ratios from the eigenvalues of A
for jj=1:1:length(EigenFreq)
wk(jj)=abs(log(EigenFreq(jj,jj)))/Dt;
fk(jj)=wk(jj)/(2*pi);
Dk(jj)=-real(log(EigenFreq(jj,jj)))/(wk(jj)*Dt);
end
%Calculate the mode shapes from eigenvectors and C matrix
UnorderedEig(1:length(EigenFreq))=(ss.System.c*V)';
Phi=UnorderedEig(:,ind);
The mode shapes I obatin are complex numbers and I am unsure of how to convert them to real modeshapes.
Any help on the subject would be greatly appreciated. Thank you in advance

Khaled Aljanaideh on 24 Feb 2021
The modal frequencies and damping ratios can be obtained using the Matlab command 'damp' as follows:
damp(ss.System.a)
This will show a list of the system's poles and their corresponding modal frequencies and damping ratios.
n4sid has an option to select the form of the estimated state space model. This will return the state space model in the modal form
ss.System = n4sid(Sample.Data,20,'Ts',Sample.Data.Ts,'Form','modal');
Please check the documentation of n4sid here for more information