-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfunc_opt_4RISs_pc.m
More file actions
44 lines (34 loc) · 1.19 KB
/
func_opt_4RISs_pc.m
File metadata and controls
44 lines (34 loc) · 1.19 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
function PR = func_opt_4RISs_pc(HT,HR,H21,H32,H43,typeRIS,NG)
% Optimize RIS with physics-compliant model and evaluate on physics-compliant model
N = size(HT,1);
T2 = -eye(N);
T3 = -eye(N);
T4 = -eye(N);
PR_loop = zeros(1,1e3);
for iIter = 1:1e3
% Optimize T1
HR1 = HR*(T4-eye(N))*H43*(T3-eye(N))*H32*(T2-eye(N))*H21;
HT1 = HT;
[~, T1] = func_opt_RIS_MIMO(-HR1*HT1,HR1,HT1,typeRIS,NG);
% Optimize T2
HR2 = HR*(T4-eye(N))*H43*(T3-eye(N))*H32;
HT2 = H21*(T1-eye(N))*HT;
[~, T2] = func_opt_RIS_MIMO(-HR2*HT2,HR2,HT2,typeRIS,NG);
% Optimize T3
HR3 = HR*(T4-eye(N))*H43;
HT3 = H32*(T2-eye(N))*H21*(T1-eye(N))*HT;
[~, T3] = func_opt_RIS_MIMO(-HR3*HT3,HR3,HT3,typeRIS,NG);
% Optimize T4
HR4 = HR;
HT4 = H43*(T3-eye(N))*H32*(T2-eye(N))*H21*(T1-eye(N))*HT;
[~, T4] = func_opt_RIS_MIMO(-HR4*HT4,HR4,HT4,typeRIS,NG);
% Compute PR at this iteration
PR_loop(iIter+1) = norm(HR*(T4-eye(N))*H43*(T3-eye(N))*H32*(T2-eye(N))*H21*(T1-eye(N))*HT) ^ 2;
% Stopping condition
if (PR_loop(iIter+1) - PR_loop(iIter))/PR_loop(iIter) < 1e-3
%iIter
break;
end
end
PR = PR_loop(iIter+1);
end