Example of Impact Measurement Analysis

This is an example script to view the Bar_01 impact measurement analysis, contained in the examples of MüllerBBM-VAS PAK 5.8. The ATFX header and data files were converted using PAK2Mat 2.0, available from PAKTools. This script first shows how to plot single FRFs. Thereafter some deflection shapes for resonance frequencies are plotted from the FRFs data and the geometry information that was additionally exported by PAK2Mat.

Click here to download the complete script as an M-file.

Contents

1: Load PAK2Mat file into workspace

The MAT-file as converted by PAK2Mat is loaded into the MATLAB® workspace.

close all; clear
set(0,'DefaultTextInterpreter','none')

load('Examples_Bar_01.analysis.mat')

2: Display measurement information

File info is displayed from fields in the MeasInfo structure.

clc

disp('MEASUREMENT INFORMATION')
disp(['Title:        ' Measurements.MeasInfo.Title])
disp(['Created:      ' datestr(Measurements.MeasInfo.Date)])
disp(['User:         ' Measurements.MeasInfo.Division ' - ' Measurements.MeasInfo.Expert])
MEASUREMENT INFORMATION
Title:        Example Impact Measurement Demo Measurement: Iron Bar
Created:      10-Dec-2009 14:59:41
User:         Support - Miller

3: Display available data sets

The various data sets contained in the MAT-file are inspected. These are available as structures in the DataSets structure array.

disp(' '), disp('AVAILABLE DATA SETS')
for n = 1:numel(Measurements.DataSets)
    DS_FRF = Measurements.DataSets(n);
    fprintf('%d %s\n',n,DS_FRF.Name);
end
 
AVAILABLE DATA SETS
1 Transfer complex;Ref. Bar_01+Z - Normal
2 Coherence;Ref. Bar_01+Z - Normal
3 Transfer complex;Ref. Bar_02+Z - Normal
4 Coherence;Ref. Bar_02+Z - Normal
5 Transfer complex;Ref. Bar_03+Z - Normal
6 Coherence;Ref. Bar_03+Z - Normal
7 Transfer complex;Ref. Bar_04+Z - Normal
8 Coherence;Ref. Bar_04+Z - Normal
9 Transfer complex;Ref. Bar_05+Z - Normal
10 Coherence;Ref. Bar_05+Z - Normal
11 Transfer complex;Ref. Bar_06+Z - Normal
12 Coherence;Ref. Bar_06+Z - Normal
13 Transfer complex;Ref. Bar_07+Z - Normal
14 Coherence;Ref. Bar_07+Z - Normal

As shown above, the impact measurements are stored as pairs of FRF and coherence data sets for each consecutive impact point. For each impact point, the response channels are stored in the YChannels structure array.

4: Plot single FRF

Let us first plot the individual FRFs for the first point on the bar, together with their coherence functions. The measurement has 1 response channel and 7 impact (reference) channels. The 7 FRFs are plotted sequentially.

% Select reponse channel
ch_meas = 1;

% Iterate over impact channels
for ch_ref = 1:7
    % Select the data set
    DS_FRF = Measurements.DataSets(2*(ch_ref-1)+1);

    % X-channel (frequency)
    XChan = DS_FRF.XChannels(1);
    f = XChan.Data;

    % Y-channel (FRF)
    YChan = DS_FRF.YChannels(ch_meas);
    y = YChan.Data;

    % Plot magnitude data
    figure(1),clf
    subplot(2,1,1)
    semilogy(f,abs(y)), hold all
    xlim([f(1) f(end)])

    % Set labels and title
    xlabel(sprintf('%s (%s)',XChan.Quantity,XChan.Unit));
    ylabel(sprintf('Magnitude (%s)',YChan.Unit));
    title(sprintf('%s FRF - %s',YChan.Quantity,YChan.Name));

    % Plot phase data
    subplot(2,1,2)
    plot(f,180/pi*angle(y))
    xlim([f(1) f(end)])

    % Set labels and title
    xlabel(sprintf('%s (%s)',XChan.Quantity,XChan.Unit));
    ylabel('Phase (deg)');

    snapnow
end

5: Collect FRFs in FRF matrix

In order to plot mode shapes, the FRFs are collected into a single array. Additionally, geometry information is extracted from the Geometries structure found at the Measurements level. Note that the geometry information is only available for ATFX files generated with ASAM-ODS version 5.2 or higher.

% Pre-allocate FRF matrix [impact points x frequency points]
Y = zeros(7,numel(f));

% Pre-allocate node number and direction arrays
Node_ref = zeros(7,1);

% Get Geometry to locate the impact points
Geo = Measurements.Geometries(1);

% Iterate over data sets
for ch_ref = 1:7
    DS_FRF = Measurements.DataSets(2*(ch_ref-1)+1);
    YChan = DS_FRF.YChannels(1);

    % Get FRF
    Y(ch_ref,:) = YChan.Data;

    % Get node number of the impact points
    Node_ref(ch_ref) = find(Geo.NodeNumber == YChan.RefChannelInfo.NodeNumber);
 end

% Get all points of impact
p_ref = Geo.Position(Node_ref,:);

7: Plot ODS of resonance frequency

Four resonance frequencies are identified from the FRF plots. A good indication for the mode shape is obtained by taking the imaginary part of the accelerance FRFs. Combined with the nodal location, a mode shape can be plotted. To improve visualization, the shapes are interpolated along the axis (X) of the impacts.

% Identified resonance frequencies
f_res = [338.5 955 1865 2929];

% Iterate over resonance frequencies
for r = 1:4;
    % Take imaginary part of ODS shape at corresponding frequency line
    ODS_res = imag(Y(:,f == f_res(r)));

    % Normalize ODS vectors to unity length
    ODS_norm = ODS_res ./ norm(ODS_res);

    % Calculate deformed shape
    p_ods = p_ref + (ODS_norm * [0 0 1]);

    % Interpolate points along x-axis
    p_int = linspace(p_ref(1,1),p_ref(end,1),100).';
    p_int(:,2) = spline(p_ref(:,1),p_ods(:,2),p_int(:,1));
    p_int(:,3) = spline(p_ref(:,1),p_ods(:,3),p_int(:,1));

    % Plot shape
    figure(2), clf
    plot3(p_ref(:,1),p_ref(:,2),p_ref(:,3),'--k.'), hold on
    plot3(p_int(:,1),p_int(:,2),p_int(:,3),'-g','LineWidth',2)
    plot3(p_ods(:,1),p_ods(:,2),p_ods(:,3),'b.')

    zlim([-2 2]);
    xlabel('X'), ylabel('Y'), zlabel('Z')

    snapnow
end

8: Summary

This script shows steps to import data from an impact measurement. FRFs and coherence data can be plotted directly from the DataSets. Mode shapes can be visualized by combining the FRF data with location and direction information contained in the optional Geometry structure. The ChannelInfo and RefChannelInfo can be used to obtain information about respectively the response channels and impact (reference) points.