%% Clear Workspace and Close figures clear; close all; clc; %% Intialize Laplace variable s = zpk('s'); %% Path for functions, data and scripts addpath('./mat/'); % Path for data %% Colors for the figures colors = colororder; %% Load Accelerometer positions acc_pos = readtable('mat/acc_pos.txt', 'ReadVariableNames', false); acc_pos = table2array(acc_pos(:, 1:4)); [~, i] = sort(acc_pos(:, 1)); acc_pos = acc_pos(i, 2:4); %% Load raw data meas1_raw = load('mat/meas_raw_1.mat'); % Sampling Frequency [Hz] Fs = 1/meas1_raw.Track1_X_Resolution; % Time just before the impact occurs [s] impacts = [5.937, 11.228, 16.681, 22.205, 27.350, 32.714, 38.115, 43.888, 50.407]-0.01; % Time vector [s] time = linspace(0, meas1_raw.Track1_X_Resolution*length(meas1_raw.Track1), length(meas1_raw.Track1)); %% Raw measurement of the Accelerometer figure; hold on; plot(time-22.2, meas1_raw.Track2, 'DisplayName', '$X_{1,x}$ [$m/s^2$]'); plot(time-22.2, 1e-3*meas1_raw.Track1, 'DisplayName', '$F_{z}$ [kN]'); hold off; xlabel('Time [s]'); ylabel('Amplitude'); xlim([0, 0.2]) ylim([-2, 2]); legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 1); %% Frequency Analysis Nfft = floor(5.0*Fs); % Number of frequency points win = hanning(Nfft); % Windowing Noverlap = floor(Nfft/2); % Overlap for frequency analysis %% Comnpute the power spectral density of the force and acceleration [pxx_force, f] = pwelch(meas1_raw.Track1, win, Noverlap, Nfft, Fs); [pxx_acc, ~] = pwelch(meas1_raw.Track2, win, Noverlap, Nfft, Fs); %% Normalized Amplitude Spectral Density of the measured force and acceleration figure; hold on; plot(f, sqrt(pxx_acc./max(pxx_acc(f<200))), 'DisplayName', '$\Gamma_{X_{1,x}}$'); plot(f, sqrt(pxx_force./max(pxx_force(f<200))), 'DisplayName', '$\Gamma_{F_{z}}$'); hold off; set(gca, 'XScale', 'lin'); set(gca, 'YScale', 'lin'); xlabel('Frequency [Hz]'); ylabel('Normalized Spectral Density'); xlim([0, 200]); xticks([0:20:200]); ylim([0, 1]) legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 1); %% Compute the transfer function and Coherence [G1, f] = tfestimate(meas1_raw.Track1, meas1_raw.Track2, win, Noverlap, Nfft, Fs); [coh1, ~] = mscohere( meas1_raw.Track1, meas1_raw.Track2, win, Noverlap, Nfft, Fs); %% Frequency Response Function between the force and the acceleration figure; plot(f, abs(G1)); xlabel('Frequency [Hz]'); ylabel('FRF [$m/s^2/N$]') set(gca, 'XScale', 'lin'); set(gca, 'YScale', 'log'); xlim([0, 200]); xticks([0:20:200]); %% Frequency Response Function between the force and the acceleration figure; plot(f, coh1); xlabel('Frequency [Hz]'); ylabel('Coherence [-]') set(gca, 'XScale', 'lin'); set(gca, 'YScale', 'lin'); xlim([0, 200]); ylim([0,1]); xticks([0:20:200]);