File Exchange

Complex Mode Indicator Function (CMIF)

version 1.0 (1.5 MB) by

This is a robust complex mode indicator function. A clear example is provided.

Updated

COMPLEX MODE INDICATOR FUNCTION
CMIF is defined as the eigenvalues solved from the normal matrix, which is formed from frequency response function (FRF) matrix.
CMIF can be computed from multiplication of normal matrix with its Hermitian matrix or by singular value decomposition (SVD) of normal matrix at each spectral line.

This function computes CMIF using "economy size" SVD.

Syntax:
[W, CMIF] = cmif(Y,window,noverlap,nfft,fs,fmax)

Input:
Y = p by m matrix of multiple reference time signals; "m" is
the number of reference measurements and "p" is the length of
measurement. For example, if you have data from seven
reference measurements (seven channels) with 1000 samples in
each measurement. Y should be a 1000x7 matrix

window = windowing function and number of samples to use for each
section (e.g., 1024)

noverlap = number of samples by which the sections overlap (e.g.,
window/2)

nfft = FFT length which determines the frequencies at which the PSD
is estimated. If nfft is greater than the signal length, the
data is zero-padded. If nfft is less than the signal length,
the segment is wrapped so that the length is equal to nfft
[e.g., length(Y)]

fs = sampling frequency (e.g., 100 samples-per-second)

fmax = maximum value of frequency output vector (e.g., 20 Hz)

Output:

W = Frequency vector in Hz (1xn)

CMIF = CMIF function (mxn)

Example: Input matrix (Y) is seven channels time-signal sampled at 200
samples-per-second. Let us compute CMIF functions and plot them on
semi-log scale to identify fundamental frequencies.

fs = 200;
window = 1024;
noverlap = window/2;
nfft = length(Y);
fmax = 20;
[W,CMIF] = cmif(Y,window,noverlap,nfft,fs,fmax);
figure; semilogy(W,CMIF);
xlabel('Frequency, Hz','FontSize',[18],'fontname','times');
ylabel('CMIF, db','FontSize',[18],'fontname','times');
set(gca,'fontname','times','fontsize',18);

Reference:

Shih, C.Y., Y.G. Tsuei, R.J. Allemang, and D.L. Brown (1988). Complex
mode indication function and its applications to spatial domain
parameter estimation, Mech. Syst. Signal Process. 2, no. 4, 367-377.

Acknowledgements:

In preparing this function, I have benefitted from MatLAB help
document for CPSD, JZCMIF function written by Jaroslaw
Zwolski (also available at MathWorks file exchange), and the MatLAB
function written by H.Ulusoy.

 7 Jan 2018 1 Updated description
MATLAB Release
MATLAB 9.3 (R2017b)