-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathRunSimZPETC.m
56 lines (56 loc) · 1.73 KB
/
RunSimZPETC.m
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
modelName = 'main';
modelName = 'mainNewTraj';
%%
set_param([modelName,'/ilcSignal'],'commented','on')
sim(modelName,[0 0.18]);
ufbSignal = ufb.signals.values;
error1 = Err.signals.values;
Sp = feedback(GpDis*GcDis,1);
%%
method = 'zpetc';
set_param([modelName,'/ilcSignal'],'commented','off');
[inverseSp,forwardOrder] = modelBasedFeedforward(Sp,method);
% ufbSignal = ufb.signals.values;
% ilcData = noncausalFiltering(ufbSignal-ufbSignal(1),inverseSp);
ilcSignal = ufb;
sim(modelName,[0 0.18]);
error2 = Err.signals.values;
%%
method = 'zpetc';
set_param([modelName,'/ilcSignal'],'commented','off');
[inverseSp,forwardOrder] = modelBasedFeedforward(Sp,method);
ilcData = noncausalFiltering(ufbSignal-ufbSignal(1),inverseSp);
ilcSignal = ufb;
ilcSignal.signals.values = ilcData;
sim(modelName,[0 0.18]);
error3 = Err.signals.values;
%%
set_param([modelName,'/ilcSignal'],'commented','off');
compensationOrder = 1;
[inverseSp,forwardOrder] = modelBasedFeedforward(Sp,method);
[delta,~] = extraCompensation(Sp,method,compensationOrder);
ilcData = noncausalFiltering(ufbSignal-ufbSignal(1),inverseSp);
ilcData = ilcData + noncausalFiltering(ilcData,minreal(delta));
ilcSignal = ufb;
ilcSignal.signals.values = ilcData;
sim(modelName,[0 0.18]);
error4 = Err.signals.values;
%%
figure;
h0 = plot(Err.time,[error1,error2,error3,error4]*1e6,'lineWidth',2);
h0(4).LineStyle = '--';
xlabel('time (s)');
ylabel('error (\mum)');
h = legend('$e$','$e_{u_{fb}}$','$\hat{e}$','$\hat{e}_{2}$');
h.Interpreter = 'latex';
set(gca,'fontsize',14);
% ylim([-15,15]);
%%
figure;
h0 = plot(Err.time,[error3,error4]*1e6,'lineWidth',2);
xlabel('time (s)');
ylabel('error (\mum)');
h = legend('$\hat{e}$','$\hat{e}_{2}$');
h.Interpreter = 'latex';
set(gca,'fontsize',14);
% ylim([-15,15]);