Contents     Functions         Previous Next     PDF Index



User interface function for MAC and other vector correlation criteria.


VC       = ii_mac(cpa,cpb,'PropertyName',PropertyValue, ...)
[VC,ReS] = ii_mac('PropertyName',PropertyValue, ... ,'Command')
           ii_mac(Fig,'PropertyName',PropertyValue, ... ,'Command')
Result =   ii_mac(Fig ,'Command')
VC.PropertyName = PropertyValue


The ii_mac function gives access to vector correlation tools provided by the SDT starting with the Modal Assurance Criterion (MAC) but including many others. A summary of typical applications is given in section 3.2 and examples in the gartco demo.

Vector correlations are SDT objects which contain at least two sets of deformations cpa and cpb (the names stand for [c] {φa} and [c]{φb} since these vectors typically represent the observation of modeshapes at test sensors, see section 5.1).

The details about possible fields of vector correlation objects are given after the listing of supported commands below.


If you use ii_mac without requesting graphical output, the vector correlation object is deleted upon exit from ii_mac. In other cases, the object is saved in the figure so that you can reuse it.

The II_MAC menu lets you choose from commands that can be computed based on the data that you have already provided. The context menu associated with plots generated by ii_mac lets you start the cursor, display tabular output, ...

You can link deformations shown in a feplot figure to a MAC plot using

 cf.def(1)=ID;  % display test as first def set
 cf.def(2)=FEM; % display FEM as second def set
 figure(1);clf;fecom('show2def-mac1') % overlay & show interactive MAC in fig 1
 ii_mac(1,'mac table');

You can add data to other fields or call new commands from the command line by starting the ii_mac call with a pointer to the figure where the vector correlation is stored (ii_mac(fig,'Command'), ...). An alternate calling form is to set a field of the vector correlation object.

The following commands

 [cf,def_fem,res_test]=demosdt('demo gartte cor plot');
 [m,k,mdof] = fe_mknl(cf.mdl);
 figure(1); subplot(221);
 VC=ii_mac(res_test,def_fem,'labela','Test','labelb','FEM', ...
           'sens',Sens,'Mac Pair Plot');
 VC.m = m; VC.kd = ofact(k+1e1*m);
 subplot(222); VC.MacMPairPlot;

illustrate a fairly complex case where one shows the MAC in subplot(221), all three COMAC indicators in subplot(212), then provide mass and a mass-shifted stiffness to allow computation of the mass condensed on sensors and finally show the reduced mass weighted MAC in subplot(222).


COMAC [ ,M][,A,B][,N][,S][,E] [,sort][,table,tex]

The COMAC command supports three correlation criteria (nominal, scaled and enhanced) whose objective is to detect sensors that lead to poor correlation. You can compute all or some of these criteria using the n, s, or e options (with no option the command computes all three).

The output is either graphical or tabulated (table and tex command options). Sensors are given in the nominal order or sorted by decreasing COMAC value (sort command option).

These criteria assume the availability of paired sets of sensors. The COMAC commands thus start by using MacPair (MacMPair with the M command option) to pair vectors in cpb to vectors in cpa. The B command option can be used to force pairing against vectors in set B (rather than A which is the default value).

The nominal Coordinate Modal Assurance Criterion (COMAC) measures the correlation of two sets of similarly scaled modeshapes at the same sensors. The definition used for the SDT is

COMACl = 1−

which is 1 minus the definition found in [51] in order to have good correlation correspond to low COMAC values.

The assumption that modes a similarly scaled is sometimes difficult to ensure, so that the scaled COMAC is computed with shapes in set B scaled using the Modal Scale Factor (MSF)

{cφjB}= {cφjB}MSFj={cφjB}

which sets the scaling of vectors in set B to minimize the quadratic norm of the difference between {cφjA} and {cφjB}.

The enhanced COMAC (eCOMAC), introduced in [52], is given by

eCOMACl = 
|| {clφjA}−{cφjB} ||

where the comparison is done using modeshapes that are vector normalized to 1

 {clφjA}={cφjA}/ ||cφjA||

This is an example of how to use of the COMAC command


 ii_mac(ID,FEM,'sens',sens,'comac plot')
 ii_mac(1,'comac table');

MAC [ ,PairA,PairB][Plot,Table,Tex,Thtml]

The Modal Assurance Criterion (MAC) [4] is the most widely used criterion for vector correlation (mainly because of its simplicity).

The MAC is the correlation coefficient of vector pairs in two vector sets cpa and cpb defined at the same DOFs. In general cpa corresponds to measured modeshapes at a number of sensors {cφ id j} while cpb corresponds to the observation of analytical modeshapes [c]{φk}. The MAC is given by

  MACj k   =   
| {cφ id j}H  {cφk}|2
     | {cφ id j}H  {cφ id j}| | {cφk}H      {cφk}|

For two vectors that are proportional the MAC equals 1 (perfect correlation). Values above 0.9 are generally considered as well correlated. Values below 0.6 should be considered with much caution (they may or may not indicate correlation).

The figure below shows the standard 2-D (obtained using the context menu or view(2)) and 3-D (obtained using the context menu or view(-130,20)) representations of the MAC supported by ii_mac. The color and dimensions of the patches associated to each vector pair are proportional to the MAC value.

The basic MAC shows vector pairs for all vectors in the two sets. The MacPair command seeks for each vector in cpa (cpb with PairB) the vector in cpb (cpa) that is best correlated. The result only shows vectors that are best correlated.

By default (or with MacPlot), the command plots the result as shown below. You can obtain tabulated text output using Mac Table which can be pasted into Word and transformed into a table. Mac Tex gives a format suitable for direct inclusion in LaTeX. Mac Thtml creates and gives a html file.

If cpa is defined at sensors and cpb at DOFs, ii_mac uses the sensor configuration sens to observe the motion of cpb at sensors. If cpa is defined at DOFs and cpb at sensors, ii_mac calls fe_exp to expand cpb on all DOFs. For vectors defined at all DOFs, the MAC is a poor criterion and you should really use its mass weighted counter part.

This is an example of how to use of the MAC command


 ii_mac(ID,FEM,'sens',sens,'mac paira plot')
 ii_mac(1,'mac paira table');

A few things you should know ...

The MAC measures the shape correlation without any reference to scaling of each vector (because of the denominator in (9.8)). This makes the MAC easy to use but also limits its applicability (since the modeshape scaling governs the influence of a given mode on the overall system response, a proper scaling is necessary when comparing the relative influence of different modes). In other terms, the MAC is not a norm (two vectors can be very correlated and yet different), so care must be taken in interpreting results.

As the MAC is insensitive to mode scaling, it can be used with identified normal mode residues. Thus for RealRes found with id_rc and cphi resulting from a FE analysis, ii_mac(RealRes(1:np,:)',cphi) directly gives a measure of the test/analysis correlation.

The main weakness of the MAC is linked to scaling of individual components in the correlation. A change in sensor calibration can significantly modify the MAC. If the natures of various sensors are different (velocity, acceleration, deformation, different calibration...) this can induce significant problems in interpretation.

The reference weighting in mechanics is energy. For incomplete measurements, kinetic energy can be approximated using a static condensation of the mass on the chosen sensors which can be computed using the MacM command.

MAC Auto[A,B][Plot,Table,Tex,Thtml]

Since the objective of the MAC is to estimate the correlation between various vectors, it is poor practice to have vectors known to be different be strongly correlated.

Strong correlation of physically different vectors is an indication of poor test design or poor choice of weighting. MacAutoA (B) compute the correlation of cpa (cpb) with itself. Off diagonal terms should be small (smaller than 0.1 is generally accepted as good practice).

On certain systems where the density of sensors is low on certain parts, cross-correlation levels with the mass weighted MAC can be much lower than for the non weighted MAC. In such cases, you should really prefer the mass weighted MAC for correlation.

This is an example of how to use of the MACAuto command


 subplot(1,2,1);ii_mac(ID,FEM,'sens',sens,'mac autoa plot')
 subplot(1,2,2);ii_mac(ID,FEM,'sens',sens,'mac autob plot')

 ii_mac(1,'mac autoa table');ii_mac(1,'mac autob table');

MACCo [ ,M] [,ns]

The MACCo criterion is a what if analysis. It takes modes in cpa, cpb and computes the paired MAC or MAC-M with one sensor removed. The sensor removal leading to the best mean MAC for the paired modes is a direct indication of where the poorest correlation is found. The algorithm removes this first sensor then iteratively proceeds to remove ns other sensors (the default is 3). The MACCo command prints an output of the form

   Test        1   2   3   4   5   6   7   8
    FEM        7   8  11  10  11  12  13  14
 Sensor Mean                                
    All   87 100  99  60  86  53 100  98 100
  1112z   88 100  99  59  90  62 100  98 100
  1301z   89 100  99  62  90  64 100  98 100
  1303z   90 100  98  66  90  66 100  98 100

where the indices for the vectors used in the pairing are shown first, the followed by the initial mean MAC and MAC associated to each pair. The following lines show the evolution of these quantities when sensors are removed. Here sensor 1112z has a strong negative impact on the MAC of test mode 5.

The sensor labels are replaced by sensor numbers if the sensor configuration sens is not declared.

This is an example of how to use of the MACCo command

 ii_mac(ID,FEM,'sens',sens, ...
  'inda',[1:8], ... % Select test modes to pair

MAC [ ,M] Error [,Table,Tex,Thtml]

Computes the MAC (or MAC-M), does pairing and plots a summary combining the MAC value found for paired modes and the associated error on frequencies ((fb-fa)./fa). A typical call (see gartco for example) would be

 ii_mac('cpa',IIres.','cpb',md0,'sens',sens, ...
  'fa',IIpo,'fb',f0,'labela','Test','labelb','FEM', ...
  'mac error plot'); 

By default this command displays a plot similar to the one shown below where the diagonal of the paired MAC and the corresponding relative error on frequencies are shown. With the table option, ii_mac gives the result as a table in the MATLAB command window.

This is an example of how to use of the MACError command

 ii_mac(ID,FEM,'sens',sens,'macerror plot')
 ii_mac(ID,FEM,'sens',sens,'macerror table')

Mac M ...

When cpa and cpb are defined at finite element DOFs, it is much more appropriate to use a mass weighted form of the MAC defined as

  MACMjk = 
|{φjA}T[M]{φjA}| |{φkB}T[M]{φkB}|

When cpa and cpb are defined at sensors using a mass weighting is always a good idea. If vectors are defined as sensors, the problem is to define what the mass should be. The standard approach is to use the static condensation of the full order model mass on the sensor set. The way this reduced mass is computed in the SDT is discussed in the MC section below.

If cpa is defined at sensors and cpb at DOFs, ii_mac uses the sensor configuration sens to observe the motion of cpb at sensors. If cpa is defined at DOFs and cpb at sensors, ii_mac calls fe_exp to expand cpb on all DOFs.

The MAC-M can be seen as a scale insensitive version of the Pseudo-Orthogonality check (also called Cross Generalized Mass criterion) described below.

The PairA, PairB, AutoA, AutoB, Plot, Table options are available for MacM just as for the MAC. A short call format is ii_mac(cpa,cpb,m,'mac m plot') where cpa, cpb and m are given as the first three input arguments.

POC [,Pair[A,B]][Plot,Table,Tex,Thtml]

The orthogonality conditions (6.75) lead to a number of standard vector correlation criteria. The pseudo-orthogonality check (POC) (also called Cross generalized mass (CGM)) and the less commonly used cross generalized stiffness (CGK) are computed using

  µjk = {φjA}T [M] {φkB}     κjk ={φjA}T[K]{φkB}     (9.10)

where for mass normalized test and analysis modes one expects to have µjk≈ δjk and κjk≈ ωj2δjk.

For matched modes, POC values differing significantly from 1 indicate either poor scaling or poor correlation. To distinguish between the two effects, you can use a MAC-M which corresponds to the square of a POC where each vector would be normalized first (see the MacM command).

Between unmatched modes, POC values should be close to zero. In some industries, off-diagonal cross POC values below 0.1 are required for the test verification of a model.

The PairA, PairB, Plot, Table options are available for POC just as for the MAC.

Rel [,scaled][,m]

For scaled matched modeshapes, the relative error

  ej   =  
|| {cφjA}  −  {cφjB} ||
|| {cφjA}  || + || {cφjB} ||

is one of the most accurate criteria. In particular, it is only zero if the modeshapes are exactly identical and values below 0.1 denote very good agreement.

The rel command calls MacPair to obtain shape pairs and plots the result of (9.11).

For uncalled matched modeshapes, you may want to seek for each vector in set B a scaling coefficient that will minimize the relative error norm. This coefficient is known as the modal scale factor and defined by

  MSFj   =   
{cφjA}T {cφjB}
{cφjB}T  {cφjB}

The RelScale command calls MacPair to obtain shape pairs, multiplies shapes in set B by the modal scale factor and plots the result of (9.11).

With the M option, the MacPairM is used to obtain shape pairs, kinetic energy norms are used in equations (9.11)-(9.12).

This is an example of how to use the Rel command



The following sections describe standard fields of vector correlation objects and how they can be set.

VC.vavector set A detailed below
VC.vbvector set B detailed below.
VC.senssensor description array describing the relation between the DOFs of cpb and the sensors on which cpa is defined.
VC.mfull order mass matrix
VC.mcreduced mass matrix defined at sensors (see definition below)
VC.qisensor confidence weighting
VC.kfull order stiffness matrix
VC.kdfactored stiffness or mass shifted stiffness matrix
VC.TReduced basis used for dynamic expansion


Vector set A, associated frequencies or poles and label. For identification results, you would typically use


You can also use standard data structures used in identification. Pole/residue models with .res and .po fields (see section 5.6) or frequency responses with .w and .xf fields (see section 5.8).

If cpa is defined at sensors and cpb at DOFs, ii_mac uses the sensor configuration sens to observe the motion of cpb at sensors. If cpa is defined at DOFs and cpb at sensors, ii_mac calls fe_exp to expand cpb on all DOFs.


Vector set B, associated frequencies or poles and label. If this set represents finite element vectors, you will typically declare it as


where the sensor configuration description sens is obtained using fe_sens (see the gartte demo for an example).


For criteria that use vectors defined at DOFs, you may need to declare the mass and stiffness matrices. For large models, the factorization of the stiffness matrix is particularly time consuming. If you have already factored the matrix (when calling fe_eig for example), you should retain the result and declare it in the kd field.

The default value for this field is kd=ofact(k,'de') which is not appropriate for structures with rigid body modes. You should then use a mass-shift (kd = ofact( k + alpha*m,'de'), see section 6.2.4).


The SDT supports an original method for reducing the mass on the sensor set. Since general test setups can be represented by an observation equation (4.1), the principle of reciprocity tells that [c]T corresponds to a set of loads at the location and in the direction of the considered sensors. To obtain a static reduction of the model on the sensors, one projects the mass (computes TTMT) on the subspace

  [T] = [T] [cT]−1     with     [K] [T] = [c]T     (9.13)

In cases where the model is fixed [K] is non-singular and this definition is strictly equivalent to static/Guyan condensation of the mass [16]. When the structure is free, [K] should be replaced by a mass shifted [K] as discussed under the kd field above.


Sensor configuration description. This data structure is initialized with fe_sens and contains a description of how the FE model and test configuration are related.

FEM results are always assumed to be placed in the .vb field. One thus compares and VC.sens.cta*VC.vb.def.


Reduced basis expansion methods were introduced in [16]. Static expansion can be obtained by using T defined by (9.13).

To work with dynamic or minimum residual expansion methods, T should combine static shapes, low frequency modes of the model, the associated modeshape sensitivities when performing model updating.

Modeshape expansion is used by ii_mac when cpa is full order and cpb is reduced. This capability is not currently finalized and will require user setting of options. Look at the HTML or PDF help for the latest information.

See also

ii_comac, fe_exp, the gartco demonstration, section 3.2

©1991-2010 by SDTools
Previous Up Next