Tomography Experiment with and without disturbances
This commit is contained in:
@@ -122,7 +122,7 @@ This Matlab function is accessible [[file:../src/initializeInputs.m][here]].
|
||||
Ry = struct('time', t, 'signals', struct('values', Ry));
|
||||
|
||||
%% Spindle - Rz
|
||||
t = 0:Ts:opts.Rz_period-Ts;
|
||||
t = 0:Ts:100*opts.Rz_period-Ts;
|
||||
Rz = zeros(length(t), 1);
|
||||
|
||||
switch opts.Rz_type
|
||||
@@ -192,7 +192,7 @@ This Matlab function is accessible [[file:../src/initializeInputs.m][here]].
|
||||
end
|
||||
#+end_src
|
||||
|
||||
** Function that initialize the disturbances
|
||||
** Initialize Disturbances
|
||||
:PROPERTIES:
|
||||
:header-args:matlab+: :tangle ../src/initDisturbances.m
|
||||
:header-args:matlab+: :comments none :mkdirp yes
|
||||
@@ -202,6 +202,7 @@ This Matlab function is accessible [[file:../src/initializeInputs.m][here]].
|
||||
|
||||
This Matlab function is accessible [[file:src/initDisturbances.m][here]].
|
||||
|
||||
*** Function Declaration and Documentation
|
||||
#+begin_src matlab
|
||||
function [] = initDisturbances(opts_param)
|
||||
% initDisturbances - Initialize the disturbances
|
||||
@@ -216,7 +217,14 @@ This Matlab function is accessible [[file:src/initDisturbances.m][here]].
|
||||
*** Default values for the Options
|
||||
#+begin_src matlab
|
||||
%% Default values for opts
|
||||
opts = struct();
|
||||
opts = struct(...
|
||||
'Dwx', true, ... % Ground Motion - X direction
|
||||
'Dwy', true, ... % Ground Motion - Y direction
|
||||
'Dwz', true, ... % Ground Motion - Z direction
|
||||
'Fty_x', true, ... % Translation Stage - X direction
|
||||
'Fty_z', true, ... % Translation Stage - Z direction
|
||||
'Frz_z', true ... % Spindle - Z direction
|
||||
);
|
||||
|
||||
%% Populate opts with input parameters
|
||||
if exist('opts_param','var')
|
||||
@@ -258,64 +266,93 @@ We define some parameters that will be used in the algorithm.
|
||||
for i = 1:N/2
|
||||
C(i) = sqrt(phi(i)*df);
|
||||
end
|
||||
theta = 2*pi*rand(N/2,1); % Generate random phase [rad]
|
||||
Cx = [0 ; C.*complex(cos(theta),sin(theta))];
|
||||
Cx = [Cx; flipud(conj(Cx(2:end)))];;
|
||||
u = N/sqrt(2)*ifft(Cx); % Ground Motion - x direction [m]
|
||||
% Dwx = struct('time', t, 'signals', struct('values', u));
|
||||
Dwx = u;
|
||||
theta = 2*pi*rand(N/2,1); % Generate random phase [rad]
|
||||
Cx = [0 ; C.*complex(cos(theta),sin(theta))];
|
||||
Cx = [Cx; flipud(conj(Cx(2:end)))];;
|
||||
u = N/sqrt(2)*ifft(Cx); % Ground Motion - y direction [m]
|
||||
Dwy = u;
|
||||
theta = 2*pi*rand(N/2,1); % Generate random phase [rad]
|
||||
Cx = [0 ; C.*complex(cos(theta),sin(theta))];
|
||||
Cx = [Cx; flipud(conj(Cx(2:end)))];;
|
||||
u = N/sqrt(2)*ifft(Cx); % Ground Motion - z direction [m]
|
||||
Dwz = u;
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab
|
||||
if opts.Dwx
|
||||
theta = 2*pi*rand(N/2,1); % Generate random phase [rad]
|
||||
Cx = [0 ; C.*complex(cos(theta),sin(theta))];
|
||||
Cx = [Cx; flipud(conj(Cx(2:end)))];;
|
||||
Dwx = N/sqrt(2)*ifft(Cx); % Ground Motion - x direction [m]
|
||||
else
|
||||
Dwx = zeros(length(t), 1);
|
||||
end
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab
|
||||
if opts.Dwy
|
||||
theta = 2*pi*rand(N/2,1); % Generate random phase [rad]
|
||||
Cx = [0 ; C.*complex(cos(theta),sin(theta))];
|
||||
Cx = [Cx; flipud(conj(Cx(2:end)))];;
|
||||
Dwy = N/sqrt(2)*ifft(Cx); % Ground Motion - y direction [m]
|
||||
else
|
||||
Dwy = zeros(length(t), 1);
|
||||
end
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab
|
||||
if opts.Dwy
|
||||
theta = 2*pi*rand(N/2,1); % Generate random phase [rad]
|
||||
Cx = [0 ; C.*complex(cos(theta),sin(theta))];
|
||||
Cx = [Cx; flipud(conj(Cx(2:end)))];;
|
||||
Dwz = N/sqrt(2)*ifft(Cx); % Ground Motion - z direction [m]
|
||||
else
|
||||
Dwz = zeros(length(t), 1);
|
||||
end
|
||||
#+end_src
|
||||
|
||||
*** Translation Stage - X direction
|
||||
#+begin_src matlab
|
||||
phi = dist_f.psd_ty; % TODO - we take here the vertical direction which is wrong but approximate
|
||||
C = zeros(N/2,1);
|
||||
for i = 1:N/2
|
||||
C(i) = sqrt(phi(i)*df);
|
||||
if opts.Fty_x
|
||||
phi = dist_f.psd_ty; % TODO - we take here the vertical direction which is wrong but approximate
|
||||
C = zeros(N/2,1);
|
||||
for i = 1:N/2
|
||||
C(i) = sqrt(phi(i)*df);
|
||||
end
|
||||
theta = 2*pi*rand(N/2,1); % Generate random phase [rad]
|
||||
Cx = [0 ; C.*complex(cos(theta),sin(theta))];
|
||||
Cx = [Cx; flipud(conj(Cx(2:end)))];;
|
||||
u = N/sqrt(2)*ifft(Cx); % Disturbance Force Ty x [N]
|
||||
Fty_x = u;
|
||||
else
|
||||
Fty_x = zeros(length(t), 1);
|
||||
end
|
||||
theta = 2*pi*rand(N/2,1); % Generate random phase [rad]
|
||||
Cx = [0 ; C.*complex(cos(theta),sin(theta))];
|
||||
Cx = [Cx; flipud(conj(Cx(2:end)))];;
|
||||
u = N/sqrt(2)*ifft(Cx); % Disturbance Force Ty x [N]
|
||||
Fty_x = u;
|
||||
#+end_src
|
||||
|
||||
*** Translation Stage - Z direction
|
||||
#+begin_src matlab
|
||||
phi = dist_f.psd_ty;
|
||||
C = zeros(N/2,1);
|
||||
for i = 1:N/2
|
||||
C(i) = sqrt(phi(i)*df);
|
||||
if opts.Fty_z
|
||||
phi = dist_f.psd_ty;
|
||||
C = zeros(N/2,1);
|
||||
for i = 1:N/2
|
||||
C(i) = sqrt(phi(i)*df);
|
||||
end
|
||||
theta = 2*pi*rand(N/2,1); % Generate random phase [rad]
|
||||
Cx = [0 ; C.*complex(cos(theta),sin(theta))];
|
||||
Cx = [Cx; flipud(conj(Cx(2:end)))];;
|
||||
u = N/sqrt(2)*ifft(Cx); % Disturbance Force Ty z [N]
|
||||
Fty_z = u;
|
||||
else
|
||||
Fty_z = zeros(length(t), 1);
|
||||
end
|
||||
theta = 2*pi*rand(N/2,1); % Generate random phase [rad]
|
||||
Cx = [0 ; C.*complex(cos(theta),sin(theta))];
|
||||
Cx = [Cx; flipud(conj(Cx(2:end)))];;
|
||||
u = N/sqrt(2)*ifft(Cx); % Disturbance Force Ty z [N]
|
||||
Fty_z = u;
|
||||
#+end_src
|
||||
|
||||
*** Spindle - Z direction
|
||||
#+begin_src matlab
|
||||
phi = dist_f.psd_rz;
|
||||
C = zeros(N/2,1);
|
||||
for i = 1:N/2
|
||||
C(i) = sqrt(phi(i)*df);
|
||||
if opts.Frz_z
|
||||
phi = dist_f.psd_rz;
|
||||
C = zeros(N/2,1);
|
||||
for i = 1:N/2
|
||||
C(i) = sqrt(phi(i)*df);
|
||||
end
|
||||
theta = 2*pi*rand(N/2,1); % Generate random phase [rad]
|
||||
Cx = [0 ; C.*complex(cos(theta),sin(theta))];
|
||||
Cx = [Cx; flipud(conj(Cx(2:end)))];;
|
||||
u = N/sqrt(2)*ifft(Cx); % Disturbance Force Rz z [N]
|
||||
Frz_z = u;
|
||||
else
|
||||
Frz_z = zeros(length(t), 1);
|
||||
end
|
||||
theta = 2*pi*rand(N/2,1); % Generate random phase [rad]
|
||||
Cx = [0 ; C.*complex(cos(theta),sin(theta))];
|
||||
Cx = [Cx; flipud(conj(Cx(2:end)))];;
|
||||
u = N/sqrt(2)*ifft(Cx); % Disturbance Force Rz z [N]
|
||||
Frz_z = u;
|
||||
#+end_src
|
||||
|
||||
*** Direct Forces
|
||||
|
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user