File Exchange

image thumbnail

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.



View License

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.

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

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.,

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)


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.

load input.mat
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');


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.


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.

Comments and Ratings (0)



Updated description

MATLAB Release
MATLAB 9.3 (R2017b)

Inspired by: CMIF - Complex Mode Indicator Function

MATLAB Online Live Editor Challenge

Win cash prizes and have your live script featured on our website

Learn more

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video