98 lines
3.3 KiB
Matlab
98 lines
3.3 KiB
Matlab
%% Clear Workspace and Close figures
|
|
clear; close all; clc;
|
|
|
|
%% Intialize Laplace variable
|
|
s = zpk('s');
|
|
|
|
colors = colororder;
|
|
|
|
addpath('mat/');
|
|
|
|
%% Load Data
|
|
bending_X = load('apa300ml_bending_X_top.mat');
|
|
|
|
%% Spectral Analysis setup
|
|
Ts = bending_X.Track1_X_Resolution; % Sampling Time [s]
|
|
win = hann(ceil(1/Ts));
|
|
|
|
%% Compute the transfer function from applied force to measured rotation
|
|
[G_bending_X, f] = tfestimate(bending_X.Track1, bending_X.Track2, win, [], [], 1/Ts);
|
|
|
|
%% Plot the transfer function
|
|
figure;
|
|
hold on;
|
|
plot(f, abs(G_bending_X), 'k-');
|
|
hold off;
|
|
set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log');
|
|
xlabel('Frequency [Hz]'); ylabel('Amplitude');
|
|
xlim([50, 2e3]); ylim([1e-5, 2e-1]);
|
|
text(280, 5.5e-2,{'280Hz'},'VerticalAlignment','bottom','HorizontalAlignment','center')
|
|
text(840, 2.0e-3,{'840Hz'},'VerticalAlignment','bottom','HorizontalAlignment','center')
|
|
text(1400, 7.0e-3,{'1400Hz'},'VerticalAlignment','bottom','HorizontalAlignment','center')
|
|
|
|
%% Load Data
|
|
bending_Y = load('apa300ml_bending_Y_top.mat');
|
|
|
|
%% Compute the transfer function
|
|
[G_bending_Y, ~] = tfestimate(bending_Y.Track1, bending_Y.Track2, win, [], [], 1/Ts);
|
|
|
|
%% Plot the transfer function
|
|
figure;
|
|
hold on;
|
|
plot(f, abs(G_bending_Y), 'k-');
|
|
hold off;
|
|
set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log');
|
|
xlabel('Frequency [Hz]'); ylabel('Amplitude');
|
|
xlim([50, 2e3]); ylim([1e-5, 3e-2])
|
|
text(412, 1.5e-2,{'412Hz'},'VerticalAlignment','bottom','HorizontalAlignment','center')
|
|
text(1218, 1.5e-2,{'1220Hz'},'VerticalAlignment','bottom','HorizontalAlignment','center')
|
|
|
|
%% Load Data
|
|
torsion = load('apa300ml_torsion_left.mat');
|
|
|
|
%% Compute transfer function
|
|
[G_torsion, ~] = tfestimate(torsion.Track1, torsion.Track2, win, [], [], 1/Ts);
|
|
|
|
%% Plot the transfer function
|
|
figure;
|
|
hold on;
|
|
plot(f, abs(G_torsion), 'k-');
|
|
hold off;
|
|
set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log');
|
|
xlabel('Frequency [Hz]'); ylabel('Amplitude');
|
|
xlim([50, 2e3]); ylim([1e-5, 2e-2])
|
|
text(415, 4.3e-3,{'415Hz'},'VerticalAlignment','bottom','HorizontalAlignment','center')
|
|
text(267, 8e-4,{'267Hz'}, 'VerticalAlignment', 'bottom','HorizontalAlignment','center')
|
|
text(800, 6e-4,{'800Hz'}, 'VerticalAlignment', 'bottom','HorizontalAlignment','center')
|
|
|
|
%% Load data
|
|
torsion = load('apa300ml_torsion_top.mat');
|
|
|
|
%% Compute transfer function
|
|
[G_torsion_top, ~] = tfestimate(torsion.Track1, torsion.Track2, win, [], [], 1/Ts);
|
|
|
|
%% Plot the two transfer functions
|
|
figure;
|
|
hold on;
|
|
plot(f, abs(G_torsion), 'k-', 'DisplayName', 'Left excitation');
|
|
plot(f, abs(G_torsion_top), '-', 'DisplayName', 'Top excitation');
|
|
hold off;
|
|
set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log');
|
|
xlabel('Frequency [Hz]'); ylabel('Amplitude');
|
|
xlim([50, 2e3]); ylim([1e-5, 2e-2])
|
|
text(415, 4.3e-3,{'415Hz'},'VerticalAlignment','bottom','HorizontalAlignment','center')
|
|
text(267, 8e-4,{'267Hz'}, 'VerticalAlignment', 'bottom','HorizontalAlignment','center')
|
|
text(800, 2e-3,{'800Hz'}, 'VerticalAlignment', 'bottom','HorizontalAlignment','center')
|
|
legend('location', 'northwest');
|
|
|
|
figure;
|
|
hold on;
|
|
plot(f, abs(G_torsion), 'DisplayName', 'Torsion');
|
|
plot(f, abs(G_bending_X), 'DisplayName', 'Bending - X');
|
|
plot(f, abs(G_bending_Y), 'DisplayName', 'Bending - Y');
|
|
hold off;
|
|
set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log');
|
|
xlabel('Frequency [Hz]'); ylabel('Amplitude');
|
|
xlim([50, 2e3]); ylim([1e-5, 1e-1]);
|
|
legend('location', 'southeast');
|