251 lines
7.2 KiB
Mathematica
251 lines
7.2 KiB
Mathematica
|
%% Clear Workspace and Close figures
|
||
|
clear; close all; clc;
|
||
|
|
||
|
%% Intialize Laplace variable
|
||
|
s = zpk('s');
|
||
|
|
||
|
% Load data
|
||
|
|
||
|
ty_of = load('mat/data_050.mat', 'data'); ty_of = ty_of.data;
|
||
|
ty_on = load('mat/data_051.mat', 'data'); ty_on = ty_on.data;
|
||
|
ty_1h = load('mat/data_052.mat', 'data'); ty_1h = ty_1h.data;
|
||
|
|
||
|
% Voltage to Velocity
|
||
|
% We convert the measured voltage to velocity using the function =voltageToVelocityL22= (accessible [[file:~/MEGA/These/meas/src/index.org][here]]).
|
||
|
|
||
|
|
||
|
gain = 40; % [dB]
|
||
|
|
||
|
ty_of(:, 1) = voltageToVelocityL22(ty_of(:, 1), ty_of(:, 3), gain);
|
||
|
ty_on(:, 1) = voltageToVelocityL22(ty_on(:, 1), ty_on(:, 3), gain);
|
||
|
ty_1h(:, 1) = voltageToVelocityL22(ty_1h(:, 1), ty_1h(:, 3), gain);
|
||
|
|
||
|
ty_of(:, 2) = voltageToVelocityL22(ty_of(:, 2), ty_of(:, 3), gain);
|
||
|
ty_on(:, 2) = voltageToVelocityL22(ty_on(:, 2), ty_on(:, 3), gain);
|
||
|
ty_1h(:, 2) = voltageToVelocityL22(ty_1h(:, 2), ty_1h(:, 3), gain);
|
||
|
|
||
|
% Time domain plots
|
||
|
|
||
|
figure;
|
||
|
hold on;
|
||
|
plot(ty_1h(:, 3), ty_1h(:, 1), 'DisplayName', 'Marble - Ty 1Hz');
|
||
|
plot(ty_on(:, 3), ty_on(:, 1), 'DisplayName', 'Marble - Ty ON');
|
||
|
plot(ty_of(:, 3), ty_of(:, 1), 'DisplayName', 'Marble - Ty OFF');
|
||
|
hold off;
|
||
|
xlabel('Time [s]'); ylabel('Velocity [m/s]');
|
||
|
xlim([0, 100]);
|
||
|
legend('Location', 'southwest');
|
||
|
|
||
|
|
||
|
|
||
|
% #+NAME: fig:ty_marble_time_zoom
|
||
|
% #+CAPTION: caption
|
||
|
% #+RESULTS: fig:ty_marble_time_zoom
|
||
|
% [[file:figs/ty_marble_time_zoom.png]]
|
||
|
|
||
|
|
||
|
figure;
|
||
|
hold on;
|
||
|
plot(ty_1h(:, 3), ty_1h(:, 2), 'DisplayName', 'Sample - Ty - 1Hz');
|
||
|
plot(ty_on(:, 3), ty_on(:, 2), 'DisplayName', 'Sample - Ty - ON');
|
||
|
plot(ty_of(:, 3), ty_of(:, 2), 'DisplayName', 'Sample - Ty - OFF');
|
||
|
hold off;
|
||
|
xlabel('Time [s]'); ylabel('Velocity [m/s]');
|
||
|
xlim([0, 100]);
|
||
|
legend('Location', 'southwest');
|
||
|
|
||
|
% Relative Velocity
|
||
|
|
||
|
figure;
|
||
|
hold on;
|
||
|
plot(ty_1h(:, 3), ty_1h(:, 2)-ty_1h(:, 1), 'DisplayName', 'Relative Velocity - Ty - 1Hz');
|
||
|
plot(ty_on(:, 3), ty_on(:, 2)-ty_on(:, 1), 'DisplayName', 'Relative Velocity - Ty - ON');
|
||
|
plot(ty_of(:, 3), ty_of(:, 2)-ty_of(:, 1), 'DisplayName', 'Relative Velocity - Ty - OFF');
|
||
|
hold off;
|
||
|
xlabel('Time [s]'); ylabel('Velocity [m/s]');
|
||
|
xlim([0, 100]);
|
||
|
legend('Location', 'southwest');
|
||
|
|
||
|
% Frequency Domain
|
||
|
% We first compute some parameters that will be used for the PSD computation.
|
||
|
|
||
|
dt = ty_of(2, 3)-ty_of(1, 3);
|
||
|
|
||
|
Fs = 1/dt; % [Hz]
|
||
|
|
||
|
win = hanning(ceil(10*Fs));
|
||
|
|
||
|
|
||
|
|
||
|
% Then we compute the Power Spectral Density using =pwelch= function.
|
||
|
|
||
|
% First for the geophone located on the marble
|
||
|
|
||
|
[pxof_m, f] = pwelch(ty_of(:, 1), win, [], [], Fs);
|
||
|
[pxon_m, ~] = pwelch(ty_on(:, 1), win, [], [], Fs);
|
||
|
[px1h_m, ~] = pwelch(ty_1h(:, 1), win, [], [], Fs);
|
||
|
|
||
|
|
||
|
|
||
|
% And for the geophone located at the sample position.
|
||
|
|
||
|
[pxof_s, f] = pwelch(ty_of(:, 2), win, [], [], Fs);
|
||
|
[pxon_s, ~] = pwelch(ty_on(:, 2), win, [], [], Fs);
|
||
|
[px1h_s, ~] = pwelch(ty_1h(:, 2), win, [], [], Fs);
|
||
|
|
||
|
|
||
|
|
||
|
% Finally, for the relative velocity.
|
||
|
|
||
|
[pxof_r, f] = pwelch(ty_of(:, 2)-ty_of(:, 1), win, [], [], Fs);
|
||
|
[pxon_r, ~] = pwelch(ty_on(:, 2)-ty_on(:, 1), win, [], [], Fs);
|
||
|
[px1h_r, ~] = pwelch(ty_1h(:, 2)-ty_1h(:, 1), win, [], [], Fs);
|
||
|
|
||
|
|
||
|
|
||
|
% And we plot the ASD of the measured velocities:
|
||
|
% - figure [[fig:psd_marble_compare]] for the geophone located on the marble
|
||
|
% - figure [[fig:psd_sample_compare]] for the geophone at the sample position
|
||
|
% - figure [[fig:psd_relative_compare]] for the relative velocity
|
||
|
|
||
|
|
||
|
figure;
|
||
|
hold on;
|
||
|
plot(f, sqrt(px1h_m), 'DisplayName', 'Marble - Ty 1Hz');
|
||
|
plot(f, sqrt(pxon_m), 'DisplayName', 'Marble - Ty ON');
|
||
|
plot(f, sqrt(pxof_m), 'DisplayName', 'Marble - Ty OFF');
|
||
|
hold off;
|
||
|
set(gca, 'xscale', 'log');
|
||
|
set(gca, 'yscale', 'log');
|
||
|
xlabel('Frequency [Hz]'); ylabel('ASD of the measured velocity $\left[\frac{m/s}{\sqrt{Hz}}\right]$')
|
||
|
legend('Location', 'southwest');
|
||
|
xlim([1, 500]);
|
||
|
|
||
|
|
||
|
|
||
|
% #+NAME: fig:psd_marble_compare
|
||
|
% #+CAPTION: Comparison of the ASD of the measured velocities from the Geophone on the marble
|
||
|
% #+RESULTS: fig:psd_marble_compare
|
||
|
% [[file:figs/psd_marble_compare.png]]
|
||
|
|
||
|
|
||
|
figure;
|
||
|
hold on;
|
||
|
plot(f, sqrt(px1h_s), 'DisplayName', 'Sample - Ty 1Hz');
|
||
|
plot(f, sqrt(pxon_s), 'DisplayName', 'Sample - Ty ON');
|
||
|
plot(f, sqrt(pxof_s), 'DisplayName', 'Sample - Ty OFF');
|
||
|
hold off;
|
||
|
set(gca, 'xscale', 'log');
|
||
|
set(gca, 'yscale', 'log');
|
||
|
xlabel('Frequency [Hz]'); ylabel('ASD of the measured velocity $\left[\frac{m/s}{\sqrt{Hz}}\right]$')
|
||
|
legend('Location', 'southwest');
|
||
|
xlim([2, 500]);
|
||
|
|
||
|
|
||
|
|
||
|
% #+NAME: fig:psd_sample_compare
|
||
|
% #+CAPTION: Comparison of the ASD of the measured velocities from the Geophone at the sample location
|
||
|
% #+RESULTS: fig:psd_sample_compare
|
||
|
% [[file:figs/psd_sample_compare.png]]
|
||
|
|
||
|
|
||
|
figure;
|
||
|
hold on;
|
||
|
plot(f, sqrt(px1h_r), 'DisplayName', 'Relative - Ty 1Hz');
|
||
|
plot(f, sqrt(pxon_r), 'DisplayName', 'Relative - Ty ON');
|
||
|
plot(f, sqrt(pxof_r), 'DisplayName', 'Relative - Ty OFF');
|
||
|
hold off;
|
||
|
set(gca, 'xscale', 'log');
|
||
|
set(gca, 'yscale', 'log');
|
||
|
xlabel('Frequency [Hz]'); ylabel('ASD of the measured velocity $\left[\frac{m/s}{\sqrt{Hz}}\right]$')
|
||
|
legend('Location', 'southwest');
|
||
|
xlim([2, 500]);
|
||
|
|
||
|
|
||
|
|
||
|
% #+RESULTS:
|
||
|
% #+begin_example
|
||
|
% 1 Elmo txt chart ver 2.0
|
||
|
% 2
|
||
|
% 3 [File Properties]
|
||
|
% 4 Creation Time,2019-05-13 05:33:43
|
||
|
% 5 Last Updated,2019-05-13 05:33:43
|
||
|
% 6 Resolution,0.001
|
||
|
% 7 Sampling Time,5E-05
|
||
|
% 8 Recording Time,5.461
|
||
|
% 9
|
||
|
% 10 [Chart Properties]
|
||
|
% 11 No.,Name,X Linear,X No.
|
||
|
% 12 1,Chart #1,True,0
|
||
|
% 13 2,Chart #2,True,0
|
||
|
% 14
|
||
|
% 15 [Chart Data]
|
||
|
% 16 Display No.,X No.,Y No.,X Unit,Y Unit,Color,Style,Width
|
||
|
% 17 1,1,2,sec,N/A,ff0000ff,Solid,TwoPoint
|
||
|
% 18 2,1,3,sec,N/A,ff0000ff,Solid,TwoPoint
|
||
|
% 19 2,1,4,sec,N/A,ff007f00,Solid,TwoPoint
|
||
|
% 20
|
||
|
% 21 [Signal Names]
|
||
|
% 22 1,Time (sec)
|
||
|
% 23 2,Position [cnt]
|
||
|
% 24 3,Current Command [A]
|
||
|
% 25 4,Total Current Command [A]
|
||
|
% 26
|
||
|
% 27 [Signals Data Group 1]
|
||
|
% 28 1,2,3,4,
|
||
|
% 29 0,-141044,-0.537239575086517,-0.537239575086517,
|
||
|
% 30 0.001,-143127,-0.530803752974691,-0.530803752974691,
|
||
|
% #+end_example
|
||
|
|
||
|
% The real data starts at line 29.
|
||
|
% We then load this =cvs= file starting at line 29.
|
||
|
|
||
|
|
||
|
ty_on = csvread("mat/Ty-when-Rz-1Hz.csv", 29, 0);
|
||
|
ty_1h = csvread("mat/Ty-when-Rz-1Hz-and-Ty-1Hz.csv", 29, 0);
|
||
|
|
||
|
% Time domain data
|
||
|
% We plot the position of the translation stage measured by the encoders.
|
||
|
|
||
|
% There is 200000 encoder count for each mm, we then divide by 200000 to obtain mm.
|
||
|
|
||
|
% The result is shown on figure [[fig:ty_position_time]].
|
||
|
|
||
|
|
||
|
figure;
|
||
|
subplot(1, 2, 1);
|
||
|
plot(ty_on(:, 1), (ty_on(:, 2)-mean(ty_on(:, 2)))/200000);
|
||
|
xlim([0, 5]);
|
||
|
xlabel('Time [s]'); ylabel('Position [mm]');
|
||
|
legend({'Ty - ON'}, 'Location', 'northeast');
|
||
|
|
||
|
subplot(1, 2, 2);
|
||
|
plot(ty_1h(:, 1), (ty_1h(:, 2)-mean(ty_1h(:, 2)))/200000);
|
||
|
xlim([0, 5]);
|
||
|
xlabel('Time [s]'); ylabel('Position [mm]');
|
||
|
legend({'Ty - 1Hz'}, 'Location', 'northeast');
|
||
|
|
||
|
|
||
|
|
||
|
% #+NAME: fig:ty_position_time
|
||
|
% #+CAPTION: Y position of the translation stage measured by the encoders
|
||
|
% #+RESULTS: fig:ty_position_time
|
||
|
% [[file:figs/ty_position_time.png]]
|
||
|
|
||
|
|
||
|
% We also plot the current as function of the time on figure [[fig:ty_current_time]].
|
||
|
|
||
|
|
||
|
figure;
|
||
|
subplot(1, 2, 1);
|
||
|
plot(ty_on(:, 1), ty_on(:, 3)-mean(ty_on(:, 3)));
|
||
|
xlim([0, 5]);
|
||
|
xlabel('Time [s]'); ylabel('Current [A]');
|
||
|
legend({'Ty - ON'}, 'Location', 'northeast');
|
||
|
|
||
|
subplot(1, 2, 2);
|
||
|
plot(ty_1h(:, 1), ty_1h(:, 3)-mean(ty_1h(:, 3)));
|
||
|
xlim([0, 5]);
|
||
|
xlabel('Time [s]'); ylabel('Current [A]');
|
||
|
legend({'Ty - 1Hz'}, 'Location', 'northeast');
|