Renamed and split all the identification scripts
This commit is contained in:
25
identification/id_G.m
Normal file
25
identification/id_G.m
Normal file
@@ -0,0 +1,25 @@
|
||||
%% Script Description
|
||||
% Identification of a force injected into the NASS (in cartesian
|
||||
% coordinates) to the relative displacement of the sample
|
||||
% and granite.
|
||||
|
||||
%%
|
||||
clear; close all; clc;
|
||||
|
||||
%%
|
||||
initializeSample(struct('mass', 1));
|
||||
|
||||
[G_1, G_1_raw] = identifyG();
|
||||
|
||||
%%
|
||||
initializeSample(struct('mass', 20));
|
||||
|
||||
[G_20, G_20_raw] = identifyG();
|
||||
|
||||
%%
|
||||
initializeSample(struct('mass', 50));
|
||||
|
||||
[G_50, G_50_raw] = identifyG();
|
||||
|
||||
%% Save the obtained transfer functions
|
||||
save('./mat/G_f_to_d.mat', 'G_1', 'G_20', 'G_50');
|
@@ -12,21 +12,21 @@ legend({'$F_{n_x} \rightarrow D_{x}$ - $M = 1Kg$', ...
|
||||
'$F_{n_y} \rightarrow D_{y}$ - $M = 1Kg$', ...
|
||||
'$F_{n_z} \rightarrow D_{z}$ - $M = 1Kg$'})
|
||||
legend('location', 'southwest')
|
||||
exportFig('G_xyz_1', 'normal-normal')
|
||||
exportFig('G_xyz_1', 'normal-normal', struct('path', 'identification'))
|
||||
|
||||
bodeFig({G_20(1, 1), G_20(2, 2), G_20(3, 3)}, struct('phase', true))
|
||||
legend({'$F_{n_x} \rightarrow D_{x}$ - $M = 20Kg$', ...
|
||||
'$F_{n_y} \rightarrow D_{y}$ - $M = 20Kg$', ...
|
||||
'$F_{n_z} \rightarrow D_{z}$ - $M = 20Kg$'})
|
||||
legend('location', 'southwest')
|
||||
exportFig('G_xyz_20', 'normal-normal')
|
||||
exportFig('G_xyz_20', 'normal-normal', struct('path', 'identification'))
|
||||
|
||||
bodeFig({G_1(1, 1), G_20(1, 1), G_50(1, 1)}, struct('phase', true))
|
||||
legend({'$F_{n_x} \rightarrow D_{x}$ - $M = 1Kg$', ...
|
||||
'$F_{n_x} \rightarrow D_{x}$ - $M = 20Kg$', ...
|
||||
'$F_{n_x} \rightarrow D_{x}$ - $M = 50Kg$'})
|
||||
legend('location', 'southwest')
|
||||
exportFig('G_x_mass', 'normal-normal')
|
||||
exportFig('G_x_mass', 'normal-normal', struct('path', 'identification'))
|
||||
|
||||
bodeFig({G_1(2, 2), G_20(2, 2), G_50(2, 2)}, struct('phase', true))
|
||||
legend({'$F_{n_y} \rightarrow D_{y}$ - $M = 1Kg$', ...
|
||||
@@ -40,7 +40,7 @@ legend({'$F_{n_z} \rightarrow D_{z}$ - $M = 1Kg$', ...
|
||||
'$F_{n_z} \rightarrow D_{z}$ - $M = 20Kg$', ...
|
||||
'$F_{n_z} \rightarrow D_{z}$ - $M = 50Kg$'})
|
||||
legend('location', 'southwest')
|
||||
exportFig('G_z_mass', 'normal-normal')
|
||||
exportFig('G_z_mass', 'normal-normal', struct('path', 'identification'))
|
||||
|
||||
|
||||
%%
|
||||
@@ -48,7 +48,7 @@ bodeFig({G_1(2, 2), G_20(2, 2), G_50(2, 2)}, freqs, struct('phase', true))
|
||||
legend({'$M = 1Kg$', ...
|
||||
'$M = 20Kg$', ...
|
||||
'$M = 50Kg$'})
|
||||
exportFig('G_y_mass_article', 'half-normal')
|
||||
exportFig('G_y_mass_article', 'half-normal', struct('path', 'identification'))
|
||||
|
||||
%%
|
||||
freqs = logspace(-1, 3, 1000);
|
||||
@@ -60,4 +60,4 @@ legend({'$1Kg$', ...
|
||||
legend('location', 'southwest')
|
||||
set(gca,'YTick',[1e-8, 1e-6, 1e-4])
|
||||
ylim([1e-9, 1e-3])
|
||||
exportFig('G_x_mass', 'half-short')
|
||||
exportFig('G_x_mass', 'half-short', struct('path', 'identification'))
|
||||
|
19
identification/id_Gd.m
Normal file
19
identification/id_Gd.m
Normal file
@@ -0,0 +1,19 @@
|
||||
%% Script Description
|
||||
% Identification of the transfer function
|
||||
% from Ground Motion to sample displacement.
|
||||
|
||||
%%
|
||||
clear; close all; clc;
|
||||
|
||||
%%
|
||||
initializeSample(struct('mass', 20));
|
||||
initializeSimConf(struct('cl_time', 0));
|
||||
|
||||
%% Open Loop
|
||||
[Gd_ol_20, Gd_ol_20_raw] = identifyGd(struct('cl', false));
|
||||
|
||||
%% Close Loop
|
||||
[Gd_cl_20, Gd_cl_20_raw] = identifyGd(struct('cl', true));
|
||||
|
||||
%% Save the identified transfer functions
|
||||
save('./mat/Gd_ol_cl.mat', 'Gd_ol_20', 'Gd_cl_20');
|
12
identification/id_Gd_plots.m
Normal file
12
identification/id_Gd_plots.m
Normal file
@@ -0,0 +1,12 @@
|
||||
%%
|
||||
clear; close all; clc;
|
||||
|
||||
%% Load the identified transfer functions
|
||||
load('./mat/Gd_ol_cl.mat', 'Gd_ol_20', 'Gd_cl_20');
|
||||
|
||||
%%
|
||||
freqs = logspace(0, 3, 1000);
|
||||
bodeFig({Gd_ol_20(1, 1), Gd_cl_20(1, 1)}, freqs, struct('ylabel', 'Amplitude [m/m]'))
|
||||
legend({'OL', 'CL'});
|
||||
|
||||
exportFig('transmissibility_ol_cl', 'half-normal', struct('path', 'identification'));
|
37
identification/id_main.m
Normal file
37
identification/id_main.m
Normal file
@@ -0,0 +1,37 @@
|
||||
%%
|
||||
clear; close all; clc;
|
||||
|
||||
%% Plant Identification
|
||||
% Compute the transfer function of G for multiple masses
|
||||
run id_G.m
|
||||
|
||||
% Plot de obtained transfer functions
|
||||
run id_G_plots.m
|
||||
|
||||
%% Identification of transfer function from ground motion to displacement
|
||||
% Compute the transfer function of Gd
|
||||
run id_Gd.m
|
||||
|
||||
% Plot de obtained transfer functions
|
||||
run id_Gd_plots.m
|
||||
|
||||
%% Identification of the micro-station
|
||||
% Compute the transfer functions
|
||||
run id_micro_station.m
|
||||
|
||||
% Plot de obtained transfer functions
|
||||
run id_micro_station_plots.m
|
||||
|
||||
%% Identification of all the stages
|
||||
% Compute the transfer functions of each stage from act. to sens.
|
||||
run id_stages.m
|
||||
|
||||
% Plot de obtained transfer functions
|
||||
run id_stages_plots.m
|
||||
|
||||
%% Identification of the nass
|
||||
% Compute the transfer functions
|
||||
run id_nass.m
|
||||
|
||||
% Plot de obtained transfer functions
|
||||
run id_nass.m
|
58
identification/id_micro_station.m
Normal file
58
identification/id_micro_station.m
Normal file
@@ -0,0 +1,58 @@
|
||||
%% Script Description
|
||||
% Make the same identification as Marc did
|
||||
% Should comment out the nano-hexapod and sample before
|
||||
% runing this script.
|
||||
|
||||
%%
|
||||
clear; close all; clc;
|
||||
|
||||
%% Options for Linearized
|
||||
options = linearizeOptions;
|
||||
options.SampleTime = 0;
|
||||
|
||||
%% Name of the Simulink File
|
||||
mdl = 'Micro_Station_Identification';
|
||||
|
||||
%% Micro-Hexapod
|
||||
% Input/Output definition
|
||||
io(1) = linio([mdl, '/Micro-Station/Fm'],1,'input');
|
||||
io(2) = linio([mdl, '/Micro-Station/Micro_Hexapod_Inertial_Sensor'],1,'output');
|
||||
|
||||
% Run the linearization
|
||||
G_h_h_raw = linearize(mdl,io, 0);
|
||||
G_h_h_raw = G_h_h_raw(1:3, 1:3);
|
||||
G_h_h = preprocessIdTf(G_h_h_raw, 10, 10000);
|
||||
|
||||
% Input/Output names
|
||||
G_h_h.InputName = {'Fux', 'Fuy', 'Fuz'};
|
||||
G_h_h.OutputName = {'Dux', 'Duy', 'Duz'};
|
||||
|
||||
%% Granite
|
||||
% Input/Output definition
|
||||
io(1) = linio([mdl, '/Micro-Station/F_granite'],1,'input');
|
||||
io(2) = linio([mdl, '/Micro-Station/Granite_Inertial_Sensor'],1,'output');
|
||||
|
||||
% Run the linearization
|
||||
G_g_g_raw = linearize(mdl,io, 0);
|
||||
G_g_g = preprocessIdTf(G_g_g_raw, 10, 10000);
|
||||
|
||||
% Input/Output names
|
||||
G_g_g.InputName = {'Fgx', 'Fgy', 'Fgz'};
|
||||
G_g_g.OutputName = {'Dgx', 'Dgy', 'Dgz'};
|
||||
|
||||
%% Micro Hexapod to Granite
|
||||
% Input/Output definition
|
||||
io(1) = linio([mdl, '/Micro-Station/Fm'],1,'input');
|
||||
io(2) = linio([mdl, '/Micro-Station/Granite_Inertial_Sensor'],1,'output');
|
||||
|
||||
% Run the linearization
|
||||
G_h_g_raw = linearize(mdl,io, 0);
|
||||
G_h_g_raw = G_h_g_raw(1:3, 1:3);
|
||||
G_h_g = preprocessIdTf(G_h_g_raw, 10, 10000);
|
||||
|
||||
% Input/Output names
|
||||
G_h_g.InputName = {'Fhx', 'Fhy', 'Fhz'};
|
||||
G_h_g.OutputName = {'Dgx', 'Dgy', 'Dgz'};
|
||||
|
||||
%% Save the obtained transfer functions
|
||||
save('./mat/id_micro_station.mat', 'G_h_h', 'G_g_g', 'G_h_g');
|
29
identification/id_micro_station_plots.m
Normal file
29
identification/id_micro_station_plots.m
Normal file
@@ -0,0 +1,29 @@
|
||||
%%
|
||||
clear; close all; clc;
|
||||
|
||||
%% Load the obtained transfer functions
|
||||
load('./mat/id_micro_station.mat', 'G_h_h', 'G_g_g', 'G_h_g');
|
||||
|
||||
%% Micro-Hexapod
|
||||
|
||||
bodeFig({G_h_h(1, 1), G_h_h(2, 2), G_h_h(3, 3)})
|
||||
legend({'$F_{h_x} \rightarrow D_{h_x}$', '$F_{h_y} \rightarrow D_{h_y}$', '$F_{h_z} \rightarrow D_{h_z}$'})
|
||||
legend('location', 'southwest')
|
||||
exportFig('id_marc_h_to_h', 'normal-normal', struct('path', 'identification'))
|
||||
|
||||
%% Granite
|
||||
|
||||
% Bode Plot of the linearized function
|
||||
bodeFig({G_g_g(1, 1), G_g_g(2, 2), G_g_g(3, 3)})
|
||||
legend({'$F_{g_x} \rightarrow D_{g_x}$', '$F_{g_y} \rightarrow D_{g_y}$', '$F_{g_z} \rightarrow D_{g_z}$'})
|
||||
legend('location', 'southwest')
|
||||
exportFig('id_marc_g_to_g', 'normal-normal', struct('path', 'identification'))
|
||||
|
||||
%% Micro Hexapod to Granite
|
||||
|
||||
% Bode Plot of the linearized function
|
||||
bodeFig({G_h_g(1, 1), G_h_g(2, 2), G_h_g(3, 3)})
|
||||
legend({'$F_{h_x} \rightarrow D_{g_x}$', '$F_{h_y} \rightarrow D_{g_y}$', '$F_{h_z} \rightarrow D_{g_z}$'})
|
||||
legend('location', 'southwest')
|
||||
exportFig('id_marc_h_to_g', 'normal-normal', struct('path', 'identification'))
|
||||
|
24
identification/id_nass.m
Normal file
24
identification/id_nass.m
Normal file
@@ -0,0 +1,24 @@
|
||||
%% Script Description
|
||||
% Identification of the NASS from cartesian actuation
|
||||
% to cartesian displacement.
|
||||
|
||||
%%
|
||||
clear; close all; clc;
|
||||
|
||||
%%
|
||||
initializeSample(struct('mass', 1));
|
||||
|
||||
G_nass_1 = identifyNass();
|
||||
|
||||
%%
|
||||
initializeSample(struct('mass', 20));
|
||||
|
||||
G_nass_20 = identifyNass();
|
||||
|
||||
%%
|
||||
initializeSample(struct('mass', 50));
|
||||
|
||||
G_nass_50 = identifyNass();
|
||||
|
||||
%% Save Transfer Functions
|
||||
save('./mat/G_nass.mat', 'G_nass_1', 'G_nass_20', 'G_nass_50');
|
36
identification/id_nass_plots.m
Normal file
36
identification/id_nass_plots.m
Normal file
@@ -0,0 +1,36 @@
|
||||
%%
|
||||
clear; close all; clc;
|
||||
|
||||
%% Load Transfer Functions
|
||||
load('./mat/G_nass.mat', 'G_nass_1', 'G_nass_20', 'G_nass_50');
|
||||
|
||||
%%
|
||||
freqs = logspace(1, 4, 1000);
|
||||
|
||||
bodeFig({G_nass_1(1, 1), G_nass_1(2, 2), G_nass_1(3, 3)}, struct('phase', true))
|
||||
legend({'$F_{n_x} \rightarrow D_{n_x}$ - $M = 1Kg$', ...
|
||||
'$F_{n_y} \rightarrow D_{n_y}$ - $M = 1Kg$', ...
|
||||
'$F_{n_z} \rightarrow D_{n_z}$ - $M = 1Kg$'})
|
||||
legend('location', 'southwest')
|
||||
exportFig('nass_cart_xyz', 'normal-normal', struct('path', 'identification'))
|
||||
|
||||
bodeFig({G_nass_1(1, 1), G_nass_20(1, 1), G_nass_50(1, 1)}, struct('phase', true))
|
||||
legend({'$F_{n_x} \rightarrow D_{n_x}$ - $M = 1Kg$', ...
|
||||
'$F_{n_x} \rightarrow D_{n_x}$ - $M = 20Kg$', ...
|
||||
'$F_{n_x} \rightarrow D_{n_x}$ - $M = 50Kg$'})
|
||||
legend('location', 'southwest')
|
||||
exportFig('nass_cart_x_mass', 'normal-normal', struct('path', 'identification'))
|
||||
|
||||
bodeFig({G_nass_1(2, 2), G_nass_20(2, 2), G_nass_50(2, 2)}, struct('phase', true))
|
||||
legend({'$F_{n_x} \rightarrow D_{n_x}$ - $M = 1Kg$', ...
|
||||
'$F_{n_x} \rightarrow D_{n_x}$ - $M = 20Kg$', ...
|
||||
'$F_{n_x} \rightarrow D_{n_x}$ - $M = 50Kg$'})
|
||||
legend('location', 'southwest')
|
||||
exportFig('nass_cart_y_mass', 'normal-normal', struct('path', 'identification'))
|
||||
|
||||
bodeFig({G_nass_1(3, 3), G_nass_20(3, 3), G_nass_50(3, 3)}, struct('phase', true))
|
||||
legend({'$F_{n_z} \rightarrow D_{n_z}$ - $M = 1Kg$', ...
|
||||
'$F_{n_z} \rightarrow D_{n_z}$ - $M = 20Kg$', ...
|
||||
'$F_{n_z} \rightarrow D_{n_z}$ - $M = 50Kg$'})
|
||||
legend('location', 'southwest')
|
||||
exportFig('nass_cart_z_mass', 'normal-normal', struct('path', 'identification'))
|
98
identification/id_stages.m
Normal file
98
identification/id_stages.m
Normal file
@@ -0,0 +1,98 @@
|
||||
%% Script Description
|
||||
% Run an identification of each stage from input to output
|
||||
% Save all computed transfer functions into one .mat file
|
||||
|
||||
%%
|
||||
clear; close all; clc;
|
||||
|
||||
%%
|
||||
initializeSample(struct('mass', 20));
|
||||
|
||||
%% Options for preprocessing the identified transfer functions
|
||||
f_low = 10; % [Hz]
|
||||
f_high = 10000; % [Hz]
|
||||
|
||||
%% Options for Linearized
|
||||
options = linearizeOptions;
|
||||
options.SampleTime = 0;
|
||||
|
||||
%% Name of the Simulink File
|
||||
mdl = 'Micro_Station_Identification';
|
||||
|
||||
%% Y-Translation Stage
|
||||
% Input/Output definition
|
||||
io(1) = linio([mdl, '/Micro-Station/Fy'], 1,'input');
|
||||
io(2) = linio([mdl, '/Micro-Station/Translation y'],1,'output');
|
||||
|
||||
% Run the linearization
|
||||
G_ty_raw = linearize(mdl,io, 0);
|
||||
|
||||
% Post-process the linearized function
|
||||
G_ty = preprocessIdTf(G_ty_raw, f_low, f_high);
|
||||
|
||||
% Input/Output names
|
||||
G_ty.InputName = {'Fy'};
|
||||
G_ty.OutputName = {'Dy'};
|
||||
|
||||
%% Tilt Stage
|
||||
% Input/Output definition
|
||||
io(1) = linio([mdl, '/Micro-Station/Ry'], 1,'input');
|
||||
io(2) = linio([mdl, '/Micro-Station/Tilt'],1,'output');
|
||||
|
||||
% Run the linearization
|
||||
G_ry_raw = linearize(mdl,io, 0);
|
||||
|
||||
% Post-process the linearized function
|
||||
G_ry = preprocessIdTf(G_ry_raw, f_low, f_high);
|
||||
|
||||
% Input/Output names
|
||||
G_ry.InputName = {'My'};
|
||||
G_ry.OutputName = {'Ry'};
|
||||
|
||||
%% Spindle
|
||||
% Input/Output definition
|
||||
io(1) = linio([mdl, '/Micro-Station/Rz'], 1,'input');
|
||||
io(2) = linio([mdl, '/Micro-Station/Spindle'],1,'output');
|
||||
|
||||
% Run the linearization
|
||||
G_rz_raw = linearize(mdl,io, 0);
|
||||
|
||||
% Post-process the linearized function
|
||||
G_rz = preprocessIdTf(G_rz_raw, f_low, f_high);
|
||||
|
||||
% Input/Output names
|
||||
G_rz.InputName = {'Mz'};
|
||||
G_rz.OutputName = {'Rz'};
|
||||
|
||||
%% Hexapod Symetrie
|
||||
% Input/Output definition
|
||||
io(1) = linio([mdl, '/Micro-Station/Fm'], 1,'input');
|
||||
io(2) = linio([mdl, '/Micro-Station/Micro_Hexapod'],1,'output');
|
||||
|
||||
% Run the linearization
|
||||
G_hexa_raw = linearize(mdl,io, 0);
|
||||
|
||||
% Post-process the linearized function
|
||||
G_hexa = preprocessIdTf(G_hexa_raw, f_low, f_high);
|
||||
|
||||
% Input/Output names
|
||||
G_hexa.InputName = {'Fhexa_x', 'Fhexa_y', 'Fhexa_z', 'Mhexa_x', 'Mhexa_y', 'Mhexa_z'};
|
||||
G_hexa.OutputName = {'Dhexa_x', 'Dhexa_y', 'Dhexa_z', 'Rhexa_x', 'Rhexa_y', 'Rhexa_z'};
|
||||
|
||||
%% NASS
|
||||
% Input/Output definition
|
||||
io(1) = linio([mdl, '/Micro-Station/Fn'], 1,'input');
|
||||
io(2) = linio([mdl, '/Micro-Station/Nano_Hexapod'],1,'output');
|
||||
|
||||
% Run the linearization
|
||||
G_nass_raw = linearize(mdl,io, 0);
|
||||
|
||||
% Post-process the linearized function
|
||||
G_nass = preprocessIdTf(G_nass_raw, f_low, f_high);
|
||||
|
||||
% Input/Output names
|
||||
G_nass.InputName = {'Fnass_x', 'Fnass_y', 'Fnass_z', 'Mnass_x', 'Mnass_y', 'Mnass_z'};
|
||||
G_nass.OutputName = {'Dnass_x', 'Dnass_y', 'Dnass_z', 'Rnass_x', 'Rnass_y', 'Rnass_z'};
|
||||
|
||||
%% Save all transfer function
|
||||
save('./mat/identified_tf.mat', 'G_ty', 'G_ry', 'G_rz', 'G_hexa', 'G_nass')
|
50
identification/id_stages_plots.m
Normal file
50
identification/id_stages_plots.m
Normal file
@@ -0,0 +1,50 @@
|
||||
%% Script Description
|
||||
% From the identification, plot all the
|
||||
% transfer funcions.
|
||||
|
||||
%%
|
||||
clear; close all; clc
|
||||
|
||||
%% Load Data
|
||||
load('./mat/identified_tf.mat', 'G_ty', 'G_ry', 'G_rz', 'G_hexa', 'G_nass');
|
||||
|
||||
%% Y-Translation Stage
|
||||
bodeFig({G_ty}, struct('phase', true))
|
||||
legend({'$F_{y} \rightarrow D_{y}$'})
|
||||
exportFig('id_ty', 'normal-normal', struct('path', 'identification'))
|
||||
|
||||
%% Tilt Stage
|
||||
bodeFig({G_ry}, struct('phase', true))
|
||||
legend({'$M_{y} \rightarrow R_{y}$'})
|
||||
exportFig('id_ry', 'normal-normal', struct('path', 'identification'))
|
||||
|
||||
%% Spindle
|
||||
bodeFig({G_rz}, struct('phase', true))
|
||||
legend({'$M_{z} \rightarrow R_{z}$'})
|
||||
exportFig('id_ry', 'normal-normal', struct('path', 'identification'))
|
||||
|
||||
%% Hexapod Symetrie
|
||||
bodeFig({G_hexa(1, 1), G_hexa(2, 2), G_hexa(3, 3)}, struct('phase', true))
|
||||
legend({'$F_{h_x} \rightarrow D_{h_x}$', '$F_{h_y} \rightarrow D_{h_y}$', '$F_{h_z} \rightarrow D_{h_z}$'})
|
||||
exportFig('id_hexapod_trans', 'normal-normal', struct('path', 'identification'))
|
||||
|
||||
bodeFig({G_hexa(4, 4), G_hexa(5, 5), G_hexa(6, 6)}, struct('phase', true))
|
||||
legend({'$M_{h_x} \rightarrow R_{h_x}$', '$M_{h_y} \rightarrow R_{h_y}$', '$M_{h_z} \rightarrow R_{h_z}$'})
|
||||
exportFig('id_hexapod_rot', 'normal-normal', struct('path', 'identification'))
|
||||
|
||||
bodeFig({G_hexa(1, 1), G_hexa(2, 1), G_hexa(3, 1)}, struct('phase', true))
|
||||
legend({'$F_{h_x} \rightarrow D_{h_x}$', '$F_{h_x} \rightarrow D_{h_y}$', '$F_{h_x} \rightarrow D_{h_z}$'})
|
||||
exportFig('id_hexapod_coupling', 'normal-normal', struct('path', 'identification'))
|
||||
|
||||
%% NASS
|
||||
bodeFig({G_nass(1, 1), G_nass(2, 2), G_nass(3, 3)}, struct('phase', true))
|
||||
legend({'$F_{n_x} \rightarrow D_{n_x}$', '$F_{n_y} \rightarrow D_{n_y}$', '$F_{n_z} \rightarrow D_{n_z}$'})
|
||||
exportFig('id_nass_trans', 'normal-normal', struct('path', 'identification'))
|
||||
|
||||
bodeFig({G_nass(4, 4), G_nass(5, 5), G_nass(6, 6)}, struct('phase', true))
|
||||
legend({'$M_{n_x} \rightarrow R_{n_x}$', '$M_{n_y} \rightarrow R_{n_y}$', '$M_{n_z} \rightarrow R_{n_z}$'})
|
||||
exportFig('id_nass_rot', 'normal-normal', struct('path', 'identification'))
|
||||
|
||||
bodeFig({G_nass(1, 1), G_nass(2, 1), G_nass(3, 1)}, struct('phase', true))
|
||||
legend({'$F_{n_x} \rightarrow D_{n_x}$', '$F_{n_x} \rightarrow D_{n_y}$', '$F_{n_x} \rightarrow D_{n_z}$'})
|
||||
exportFig('id_nass_coupling', 'normal-normal', struct('path', 'identification'))
|
Reference in New Issue
Block a user