-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCosserat_Simulation_Montecarlo.m
More file actions
executable file
·60 lines (58 loc) · 4.72 KB
/
Cosserat_Simulation_Montecarlo.m
File metadata and controls
executable file
·60 lines (58 loc) · 4.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
function [mean_r_all,mean_D_ik_all,D0_ik_all,u0_k_all,v0_k_all,u_k_all,v_k_all,Cu_k_all,Cv_k_all,MSE_all]...
=Cosserat_Simulation_Montecarlo(R_helix,R_straight,omega_helix,omega_straight,theta_helix_0,theta_straight_0,n_helix,n_straight,s_all,rod_axis_rs,isassigneddir,assigned_dir,helix_cable_strain_all,straight_cable_strain_all,measure_error_level,plot_figure_id,n_substep,n_samples);
n_points=length(s_all);
n_measure=n_helix+n_straight;
MSE_all=zeros(1,n_points);
Cu_k_all=zeros(3,n_measure,n_points);
Cv_k_all=zeros(3,n_measure,n_points);
s_r_all=zeros(n_samples,3,n_points);
s_D_ik_all=zeros(n_samples,3,3,n_points);
D0_ik_all=[];
u0_k_all=[];
v0_k_all=[];
u_k_all=[];
v_k_all=[];
parfor sample=1:n_samples
disp("now on sample = ")
disp(sample)
errored_helix_cable_strain_all=helix_cable_strain_all+measure_error_level*randn(size(helix_cable_strain_all));
errored_straight_cable_strain_all=straight_cable_strain_all+measure_error_level*randn(size(straight_cable_strain_all));
[r_all,D_ik_all,D0_ik_all_,u0_k_all_,v0_k_all_,u_k_all_,v_k_all_]...
=Cosserat_simulation(R_helix,R_straight,omega_helix,omega_straight,theta_helix_0,theta_straight_0,n_helix,n_straight,s_all,rod_axis_rs,isassigneddir,assigned_dir,errored_helix_cable_strain_all,errored_straight_cable_strain_all,measure_error_level,0,n_substep);
s_r_all(sample,:,:)=r_all;
s_D_ik_all(sample,:,:,:)=D_ik_all;
end
mean_r_all=squeeze(mean(s_r_all,1));
std_r_all=squeeze(std(s_r_all,0,1));
mean_D_ik_all=squeeze(mean(s_D_ik_all,1));
MSE_all(:)=sqrt(std_r_all(1,:).^2+std_r_all(2,:).^2+std_r_all(3,:).^2);
plotinterval=ceil(n_points/100);
transpancy=0.2;
if plot_figure_id
figure(plot_figure_id)
plot3(squeeze(mean_r_all(1,1:plotinterval:n_points)), squeeze(mean_r_all(2,1:plotinterval:n_points)), squeeze(mean_r_all(3,1:plotinterval:n_points)), 'Color',[0 0 0 1]);
grid on
hold on
figure(plot_figure_id+1)
plot3(squeeze(mean_r_all(1,1:plotinterval:n_points)), squeeze(mean_r_all(2,1:plotinterval:n_points)), squeeze(mean_r_all(3,1:plotinterval:n_points)), 'Color',[0 0 0 1]);
grid on
axis equal
hold on
quiver3(squeeze(mean_r_all(1,1:plotinterval:n_points)), squeeze(mean_r_all(2,1:plotinterval:n_points)), squeeze(mean_r_all(3,1:plotinterval:n_points)),squeeze(mean_D_ik_all(1,1,1:plotinterval:n_points))', squeeze(mean_D_ik_all(2,1,1:plotinterval:n_points))', squeeze(mean_D_ik_all(3,1,1:plotinterval:n_points))','Color',[1 0 0 1])
quiver3(squeeze(mean_r_all(1,1:plotinterval:n_points)), squeeze(mean_r_all(2,1:plotinterval:n_points)), squeeze(mean_r_all(3,1:plotinterval:n_points)),squeeze(mean_D_ik_all(1,2,1:plotinterval:n_points))', squeeze(mean_D_ik_all(2,2,1:plotinterval:n_points))', squeeze(mean_D_ik_all(3,2,1:plotinterval:n_points))','Color',[0 1 0 1])
quiver3(squeeze(mean_r_all(1,1:plotinterval:n_points)), squeeze(mean_r_all(2,1:plotinterval:n_points)), squeeze(mean_r_all(3,1:plotinterval:n_points)),squeeze(mean_D_ik_all(1,3,1:plotinterval:n_points))', squeeze(mean_D_ik_all(2,3,1:plotinterval:n_points))', squeeze(mean_D_ik_all(3,3,1:plotinterval:n_points))','Color',[0 0 1 1])
for sample=1:n_samples
figure(plot_figure_id)
plot3(squeeze(s_r_all(sample,1,1:plotinterval:n_points)), squeeze(s_r_all(sample,2,1:plotinterval:n_points)), squeeze(s_r_all(sample,3,1:plotinterval:n_points)), 'Color',[0 0 0 transpancy]);
grid on
hold on
figure(plot_figure_id+1)
plot3(squeeze(s_r_all(sample,1,1:plotinterval:n_points)), squeeze(s_r_all(sample,2,1:plotinterval:n_points)), squeeze(s_r_all(sample,3,1:plotinterval:n_points)),'Color',[0 0 0 transpancy]);
grid on
axis equal
hold on
quiver3(squeeze(s_r_all(sample,1,1:plotinterval:n_points)), squeeze(s_r_all(sample,2,1:plotinterval:n_points)), squeeze(s_r_all(sample,3,1:plotinterval:n_points)),squeeze(s_D_ik_all(sample,1,1,1:plotinterval:n_points)), squeeze(s_D_ik_all(sample,2,1,1:plotinterval:n_points)), squeeze(s_D_ik_all(sample,3,1,1:plotinterval:n_points)),'Color',[1 0 0 transpancy])
quiver3(squeeze(s_r_all(sample,1,1:plotinterval:n_points)), squeeze(s_r_all(sample,2,1:plotinterval:n_points)), squeeze(s_r_all(sample,3,1:plotinterval:n_points)),squeeze(s_D_ik_all(sample,1,2,1:plotinterval:n_points)), squeeze(s_D_ik_all(sample,2,2,1:plotinterval:n_points)), squeeze(s_D_ik_all(sample,3,2,1:plotinterval:n_points)),'Color',[0 1 0 transpancy])
quiver3(squeeze(s_r_all(sample,1,1:plotinterval:n_points)), squeeze(s_r_all(sample,2,1:plotinterval:n_points)), squeeze(s_r_all(sample,3,1:plotinterval:n_points)),squeeze(s_D_ik_all(sample,1,3,1:plotinterval:n_points)), squeeze(s_D_ik_all(sample,2,3,1:plotinterval:n_points)), squeeze(s_D_ik_all(sample,3,3,1:plotinterval:n_points)),'Color',[0 0 1 transpancy])
end
end