You are on page 1of 8

Modal Analysis of Identified Models - MATLAB & Simulink https://www.mathworks.com/help/signal/ug/modal-analysis-of-identifie...

Modal Analysis of Identified Models


Identify state-space models of systems. Use the models to compute
frequency-response functions and modal parameters. This example This example uses:
requires a System Identification Toolbox™ license. System Identification Toolbox
Signal Processing Toolbox
Hammer Excitation
Load a file containing three-input/three-output hammer excitation data
Try it in MATLAB
sampled at 4 kHz. Use the first samples for estimation and samples
to for model quality validation. Specify the sample time
as the inverse of the sample rate. Store the data as @iddata objects.

load modaldata XhammerMISO1 YhammerMISO1 fs

rest = 1:1e4;
rval = 2e4:5e4;
Ts = 1/fs;

Estimation = iddata(YhammerMISO1(rest,:),XhammerMISO1(rest,:),Ts);
Validation = iddata(YhammerMISO1(rval,:),XhammerMISO1(rval,:),Ts,'Tstart',rval(1)*Ts);

Plot the estimation data and the validation data.

plot(Estimation,Validation)
legend(gca,'show')

Use the ssest function to estimate a 7th-order state-space model of the system that minimizes the simulation error

1 of 8 1/2/2019, 4:45 PM
Modal Analysis of Identified Models - MATLAB & Simulink https://www.mathworks.com/help/signal/ug/modal-analysis-of-identifie...

between the measured outputs and the model outputs. Specify that the state-space model has feedthrough.

Orders = 7;
opt = ssestOptions('Focus','simulation');

sys = ssest(Estimation,Orders,'Feedthrough',true,'Ts',Ts,opt);

(To find the model order that gives the best tradeoff between accuracy and complexity, set Orders to 1:15 in the
previous code. ssest outputs a log plot of singular values that lets you specify the order interactively. The function also
recommends a model order of 7.)

Validate the model quality on the validation dataset. Plot the normalized root mean square error (NRMSE) measure of
goodness-of-fit. The model describes accurately the output signals of the validation data.

compare(Validation,sys)

2 of 8 1/2/2019, 4:45 PM
Modal Analysis of Identified Models - MATLAB & Simulink https://www.mathworks.com/help/signal/ug/modal-analysis-of-identifie...

Estimate the frequency-response functions of the model. Display the functions using modalfrf without output
arguments.

[frf,f] = modalfrf(sys);
modalfrf(sys)

3 of 8 1/2/2019, 4:45 PM
Modal Analysis of Identified Models - MATLAB & Simulink https://www.mathworks.com/help/signal/ug/modal-analysis-of-identifie...

Assume that the system is well described using three modes. Compute the natural frequencies, damping ratios, and
mode-shape vectors of the three modes.

Modes = 3;
[fn,dr,ms] = modalfit(sys,f,Modes)

fn = 3×1
103 ×

0.3727
0.8525
1.3706

dr = 3×1

0.0008
0.0018
0.0029

ms = 3×3 complex

0.0036 - 0.0019i 0.0039 - 0.0005i 0.0021 + 0.0006i


0.0043 - 0.0023i 0.0010 - 0.0001i -0.0033 - 0.0010i
0.0040 - 0.0021i -0.0031 + 0.0004i 0.0011 + 0.0003i

Compute and display the reconstructed frequency-response functions. Express the magnitudes in decibels.

[~,~,~,ofrf] = modalfit(sys,f,Modes);

clf
for ij = 1:3
for ji = 1:3
subplot(3,3,3*(ij-1)+ji)
plot(f/1000,20*log10(abs(ofrf(:,ji,ij))))
axis tight
title(sprintf('In%d -> Out%d',ij,ji))
if ij==3
xlabel('Frequency (kHz)')
end
end
end

4 of 8 1/2/2019, 4:45 PM
Modal Analysis of Identified Models - MATLAB & Simulink https://www.mathworks.com/help/signal/ug/modal-analysis-of-identifie...

Controlled Unstable Process


Load a file containing a high modal density frequency-response measurement. The data corresponds to an unstable
process maintained at equilibrium using feedback control. Store the data as an idfrd object for identification. Plot the
Bode diagram.

load HighModalDensData FRF f

G = idfrd(permute(FRF,[2 3 1]),f,0,'FrequencyUnit','Hz');
figure
bodemag(G)
xlim([0.01,2e3])

5 of 8 1/2/2019, 4:45 PM
Modal Analysis of Identified Models - MATLAB & Simulink https://www.mathworks.com/help/signal/ug/modal-analysis-of-identifie...

Identify a transfer function with 32 poles and 32 zeros.

sys = tfest(G,32,32);

Compare the frequency response of the model with the measured response.

bodemag(G,sys)
xlim([0.01,2e3])
legend(gca,'show')

6 of 8 1/2/2019, 4:45 PM
Modal Analysis of Identified Models - MATLAB & Simulink https://www.mathworks.com/help/signal/ug/modal-analysis-of-identifie...

Extract the natural frequencies and damping ratios of the first 10 least-damped oscillatory modes. Store the results in a
table.

[fn,dr] = modalfit(sys,[],10);
T = table((1:10)',fn,dr,'VariableNames',{'Mode','Frequency','Damping'})

T=10×3 table
Mode Frequency Damping
____ _________ _________

1 82.764 0.011304
2 85.013 0.015632
3 124.04 0.025252
4 142.04 0.017687
5 251.46 0.0062182
6 332.79 0.0058266
7 401.21 0.0043645
8 625.14 0.0039247
9 770.49 0.002795
10 943.64 0.0019943

See Also
modalfit | modalfrf | ssest

7 of 8 1/2/2019, 4:45 PM
Modal Analysis of Identified Models - MATLAB & Simulink https://www.mathworks.com/help/signal/ug/modal-analysis-of-identifie...

How useful was this information?

8 of 8 1/2/2019, 4:45 PM