ii_mmif#
Purpose
Mode indicator functions and signal processing.
Syntax
OUT = ii_mmif('command',IN,'waitbar') ci=iiplot; ii_mmif('command',ci,'CurveName')
Description
This function supports all standard transformations of response datasets in particular mode indicator functions and signal processing.
With data stored in a iiplot figure, from the GUI, open the Stack tab of the property figure (accessible through iicom('CurtabStack') or by clicking on ) then select Compute ... in the context menu to transform a given dataset. This has the advantage of allowing interactive changes to signal processing results, see section 2.1.7.
From the command line, use ii_mmif('command',ci,Curve) (where ci is a handle referring to iiplot figure). Curve can be a string defining a curve name or a regular expression (beginning by #) defining a set of curves. One can also give some curve names as strings in a cell array. Without output argument, computed mmif is stored in the stack with name mmif(CurveName). Accepted command options are
 reset to compute a mmif which has already been computed before (otherwise old result is reused). The existence is based on the name in the iiplot stack.
 display displays the result in the associated iiplot figure.
ci=iicom('curveload','gartid'); % load curve gartid example ii_mmif('mmif',ci,'Test'); % compute mmif of set named Test iicom('iixonly',{'mmif(Test)'});% display result
When used with idcom, the Show ... context menu supports the automated computation of a number of transformations of ci.Stack{'Test'}. These mode indicator functions combine data from several input/output pairs of a MIMO transfer function in a single response that gives the user a visual indication of pole locations. You can then use the idcom e command to get a pole estimate.
With data structures not in iiplot use mmif=ii_mmif(command,Curve). Use command option struct to obtain output as curve data structure.
ci=iicom('curveload','gartid'); % load curve gartid example R1=ci.Stack{'Test'}; % get Test dataset in variable R1 R2=ii_mmif('mmifstruct',R1); % compute mmif
MMIF#
The Multivariate Mode Indicator Function (MMIF) (can also be called using iicom Show mmi) was introduced in [65]. Its introduction is motivated by the fact that, for a single mode mechanical model, the phase at resonance is close to 90^{o}. For a set of transfer functions such that {y(s)}=[H(s)]{u(s)}, one thus considers the ratio of real part of the response to total response
(10.42) 
For structures that are mostly elastic (with low damping), resonances are sharp and have properties similar to those of isolated modes. The MMIF (q) thus drops to zero.
Note that the real part is considered for force to displacement or acceleration, while for force to velocity the numerator is replaced by the norm of the imaginary part in order to maintain the property that resonances are associated to minima of the MMIF. A MMIF showing maxima indicates improper setting of idopt.DataType.
For system with more than one input (u is a vector rather than a scalar), one uses the extreme of q for all possible real valued u which are given by the solutions of the eigenvalue problem [A] {u} q + [B] {u} = 0.
The figure below shows a particular set for MMIF. The system has 3 inputs, so that there are 3 indicator functions. The resonances are clearly indicated by minima that are close to zero.
The second indicator function is particularly interesting to verify pole multiplicity. It presents a minimum when the system presents two closely spaced modes that are excited differently by the two inputs (this is the case near 1850 Hz in the figure). In this particular case, the two poles are sufficiently close to allow identification with a single pole with a modeshape multiplicity of 2 (see id_rm) or two close modes. More details about this example are given in [16].
This particular structure is not simply elastic (the FRFs combine elastic properties and sensor/actuator dynamics linked to piezoelectric patches used for the measurement). This is clearly visible by the fact that the first MIF does not go up to 1 between resonances (which does not happen for elastic structures).
At minima, the forces associated to the MMIF (eigenvector of [A] {u} q + [B] {u} = 0) tend to excite a single mode and are thus good candidates for force appropriation of this mode [66]. These forces are the second optional output argument ua.
CMIF#
The Complex Mode Indicator Function (CMIF) (can also be called using iicom Show cmmi, see [67] for a thorough discussion of CMIF uses), uses the fact that resonances of lightly damped systems mostly depend on a single pole. By computing, at each frequency point, the singular value decomposition of the response
(10.43) 
one can pick the resonances of Σ and use U_{1},V_{1} as estimates of modal observability / controllability (modeshape / participation factor). The optional u, v outputs store the left/right singular vectors associated to each frequency point.
AMIF#
ii_mmif provides an alternate mode indicator function defined by
(10.44) 
which has been historically used in force appropriation studies [66]. Its properties are similar to those of the MMIF except for the fact that it is not formulated for multiple inputs.
This criterion is supported by iiplot (use iicom Show amif).
SUM, SUMI, SUMA#
Those functions are based upon the sum of data from amplitude of sensors for a given input.
One can specify dimensions affected by the sum using command option dim i (i is one ore more integers).
SUM,
(10.45) 
is the sum of the square of all sensor amplitude for each input.
SUMI,
(10.46) 
is the sum of the square of the imaginary part of all sensors for each input.
SUMA,
(10.47) 
is the sum of the amplitude of all sensors for each input.
Those functions are sometimes used as mode indicator functions and are thus supported by ii_mmif (you can also call them using iicom Show sumi for example).
NODEMIF#
Undocumented.
Stats#
Statistical indicators can be applied to one or more curve dimensions. One can specify dimensions affected by the sum using command option dim i (i is one ore more integers). The following indicators are supported :
 min
 max
 mean
 median
 amp (max  min)
Sevaral indactors can be computed at once. For instance, command XF2=ii_mmif('statsdim 2 3 max mean median',XF) send back a curve whith indicators max, mean and median computed over dimensions 2 and 3.
Signal processing#
Following commands are related to signal processing. Section section 2.1.7 illustrates the use of those functions through iiplot.
Integrate, DoubleInt, Vel, Acc#

Integrate integrates the frequency dependent signal
(10.48)  DoubleInt integrates twice the frequency dependent signal
(10.49)  Vel computes the velocity (first derivative) of the signal.
For a frequency dependent signal
(10.50) For a time dependent signal, finite differences are used
(10.51) V_{j,k}(t_{end}) is linearly interpolated in order to obtain a signal of the same length.
 Acc computes the acceleration (second derivative) of the signal.
For a frequency dependent signal
(10.52) For a time dependent signal, finite differences are used
(10.53) with h_{n+1}=t_{n+1}−t_{n} and h_{n+1/2}=h_{n}+h_{n+1}/2.
A_{j,k}(t_{end}) and A_{j,k}(t_{1}) are linearly interpolated in order to obtain a signal of the same length.
FFT,FFTShock, IFFT,IFFTShock#
Computes the Discrete Fourier Transform of a time signal. FFT normalizes according to the sampling period whereas FFTShock normalizes according to the length of the signal (so that it is useful for shock signal analysis).
IFFT and IFFTShock are respectively the inverse transform.
Accepted command options are
 nostat to remove static component (f=0) from fft response.
 newmark to shift frequencies of computed time integration with a mean acceleration Newmark scheme (γ=0.5 , β=0.25) in order to correct the periodicity error Δ T/T=ω^{2}h^{2}/12. This correction is especially true for low frequencies. Command option newmarkbetaval allows specifying another value of β, using the general shift value Δ T/T=1/2(β − 1/12)ω^{2}h^{2}.
 tmin value, tmax value, fmin value, fmax value to use parts of the time trace or spectrum.
 zp value is used to apply a factor value on the length of the signal and zeropad it.
 window name is used to apply a window on the time signal. Use fe_curve('window') to get a list of implemented windows. For windows with parameters, use double quotes. For example
R1_FFT=ii_mmif('FFTShock struct window "Exponential 10 20 100"',R1).  display force display in iiplot after computing
[model,def]=fe_time('demobar10run'); R1=ii_mmif('FFTstruct window "hanning" wmax 400',def); % To allow interaction ci=iiplot;ci.Stack{'curve','def'}=def; ii_mmif('FFTstruct window "hanning" fmax 400 display',ci,'def'); iicom('CurtabStack') % Show the property figure
BandPass#
ii_mmif('BandPass fmin fmin fmax fmax') Performs a true band pass filtering (i.e. using fft, truncating frequencies and go back to time domain with ifft) between fmin and fmax frequencies.
OctGen, Octave#
filt=ii_mmif('OctGen nth',f) computes filters to perform a 1/nthoctave analysis.
As many filters as frequencies at the 1/nthoctave of 1000 Hz in the range of f (vector of frequencies) are computed. Each band pass filter is associated to a frequency f_{0} and a bandwidth Bw depending on f_{0}. Filters are computed so that their sum is almost equal to 1. Filter computed are, for each f_{0} :
(10.54) 
With command option plot, filters are plotted.
ii_mmif('Octave nth',ci) performs the 1/nth octave analysis of active curve displayed in iiplot figure.
The 1/nth octave analysis consists in applying each filter on the dataset. Energy in each filtered signal is computed with 10log(S) (where S is the trapezium sum of the filtered signal, or of the square of the filtered signal if it contains complex or negative values) and associated to the center frequency of corresponding filter.
See also