84 lines
2.7 KiB
Matlab
84 lines
2.7 KiB
Matlab
%% 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]);
|