File Exchange

image thumbnail

Complex Mode Indicator Function (CMIF)

version (1.5 MB) by Dr. Erol Kalkan, P.E.
This is a robust complex mode indicator function. A clear example is provided.


Updated 07 Jan 2018

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 Compatibility
Created with R2017b
Compatible with any release
Platform Compatibility
Windows macOS Linux

Inspired by: CMIF - Complex Mode Indicator Function

Discover Live Editor

Create scripts with code, output, and formatted text in a single executable document.

Learn About Live Editor