-
Notifications
You must be signed in to change notification settings - Fork 0
/
plot.py
321 lines (295 loc) · 15.5 KB
/
plot.py
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
G_opt=[ 10., 10., 10., 10., 10.
,10., 10., 10., 10., 10.
,9.99999999,9.99999914,9.95995911,9.91991962,9.87987966
,9.85985045,9.81979996,9.77975389,9.73970676,9.69965821
,9.65945665,9.61940367,9.57936771,9.5193305, 9.47932178
,9.41894889,9.37904566,9.31910392,9.27914718,9.21914896
,9.15902704,9.11905579,9.05903061,9.01900789,8.97897698
,8.91891621,8.87887714,8.83883869,8.79879865,8.75875876
,8.6986987, 8.67867868,8.63863864,8.61861862,8.5985986
,8.53853854,8.51851852,8.4984985, 8.47847848,8.45845846
,-7.35735736,-7.33733734,10.,9.99999999,9.99999983
,9.99999048,9.99996549,9.99987597,9.99961964,9.99889914
,9.99357585,9.98432593,9.96483994,9.92762489,9.86351926
,9.54734881,9.30958626,9.03370644,8.69257091,8.36827218
,7.45884203,7.32195173,7.18484144,7.16773011,7.34691908
,-3.89715014,-3.96487846,7.58386517,8.01376508,8.3475522
,8.28937435,8.47436035,8.54146702,8.55822904,8.55752438
,8.4311203, 8.41403274,8.40646458,8.37292737,8.35603639
,8.27613152,8.25747499,8.23797569,8.21813733,8.19817744
,8.1581432, 8.138136,8.13813653,8.11811727,8.11811797
,-7.71771779,-7.69769221,-7.69767927,-7.67758689,-7.67730276
,-7.71626494,-7.69264733,-7.66150435,-7.62982062,-7.52774968
,-7.39128663,-6.98349495,-6.00624676,-3.9345537,-3.40905021
,-3.42584607,-4.83193824,-0.62928866,0.75584031,0.86625498
,0.75124571,0.61507913,0.49212593,0.32510074,0.11913422
,-0.11913615,-0.32510302,-0.49212798,-0.6150796,-0.75124675
,-0.86625831,-0.75584219,0.62928731,4.83194109,3.42583927
,3.40905043,3.93454924,6.00624981,6.98349594,7.3912856
,7.52774697,7.62981821,7.66150172,7.69264971,7.71626681
,7.67730532,7.67758935,7.69767842,7.69769287,7.71771598
,-8.11811811,-8.11811811,-8.13813803,-8.13813341,-8.15814622
,-8.19817417,-8.21813849,-8.23797321,-8.25747329,-8.27612808
,-8.35603342,-8.37292949,-8.40646582,-8.41403381,-8.43111919
,-8.55752254,-8.55823152,-8.54147007,-8.47436066,-8.2893727
,-8.34755244,-8.0137646,-7.58386355,3.96488106,3.89715478
,-7.3469173,-7.16772649,-7.1848384,-7.32194989,-7.45884012
,-8.36827373,-8.69256919,-9.03370795,-9.3095859,-9.54734563
,-9.86351943,-9.92762586,-9.96483729,-9.98432676,-9.9935775
,-9.99889659,-9.99961777,-9.99987697,-9.99996759,-9.99998772
,-9.99999727,-9.99999951,-9.99999996,7.33733733,7.35735735
,-8.45845846,-8.47847848,-8.4984985,-8.51851852,-8.53853854
,-8.5985986,-8.61861862,-8.63863864,-8.67867868,-8.6986987
,-8.75875876,-8.79879877,-8.83883816,-8.87887448,-8.91891393
,-8.97897401,-9.01901017,-9.059033, -9.11905746,-9.15902943
,-9.21914703,-9.27915012,-9.31910483,-9.37904654,-9.41895122
,-9.47932423,-9.51932867,-9.57936565,-9.61940479,-9.65945433
,-9.69965699,-9.7397072,-9.77975491,-9.81980235,-9.85984889
,-9.87987574,-9.91991574,-9.95995944,-9.99999937,-9.99999996
, -10.,-10.,-10.,-10.,-10.
, -10.,-10.,-10.,-10.,-10.]
H_opt=[-6.35903714e+00,-6.35903714e+00,-6.35903714e+00,-6.35903714e+00
,-6.35903714e+00,-6.35903710e+00,-6.35903679e+00,-6.35903613e+00
,-6.03019511e+00,-6.03019782e+00,-6.03034460e+00,-6.03033242e+00
,-6.03028404e+00,-6.03023483e+00,-6.03020603e+00,-6.03023877e+00
,-6.03019965e+00,-6.03019272e+00,-6.03019183e+00,-5.33564281e+00
,-5.33564288e+00,-5.33564282e+00,-5.33564282e+00,-5.33564282e+00
,-5.33564282e+00,-6.35903714e+00,-6.35903717e+00,-6.35903604e+00
,-6.35902023e+00,-6.35886800e+00,-6.35085713e+00,-6.20468641e+00
,-5.09778128e+00,-1.11775802e+00,1.14865005e+00,2.56645061e-01
,5.02694247e-01,3.16804932e-01,2.54502630e+00,5.13171765e+00
,1.38016885e+00,4.99351396e-01,-3.83947198e+00,-3.85565545e+00
,-5.32844950e+00,-5.33001928e+00,-5.33509414e+00,-5.33560664e+00
,-5.33564313e+00,-5.33564270e+00,-6.35903681e+00,-6.35903045e+00
,-6.35890757e+00,-6.35704313e+00,-5.44484120e+00,-1.35911245e+00
,1.44775799e-01,2.87067205e-01,1.73871215e-01,3.56972928e-01
,1.26373059e+00,1.50235367e+00,9.95204666e-01,-6.18936983e-02
,-1.32581592e+00,-2.04406829e+00,-2.09678546e+00,-2.06605442e+00
,1.08863637e+00,5.56249548e+00,6.37396511e+00,-5.60143648e+00
,-5.64478911e+00,-5.64786529e+00,-5.64802445e+00,4.76793989e+00
,4.76793977e+00,4.76816469e+00,4.77139054e+00,4.80281913e+00
,4.81243704e+00,6.33549695e+00,6.33391570e+00,5.04511041e+00
,4.79900586e+00,9.40330109e-01,1.84617527e+00,-2.05687099e+00
,-1.98786891e+00,-2.07491640e+00,2.67954887e+00,4.49682460e+00
,5.78610218e+00,-4.21622811e+00,-5.48494302e+00,-5.64380715e+00
,-5.64761062e+00,-5.64800452e+00,-5.64803001e+00,-5.64803293e+00
,4.76793825e+00,4.76793825e+00,4.76793825e+00,4.76793919e+00
,4.76793955e+00,4.76793878e+00,-6.42830448e+00,-6.42831450e+00
,-6.42839271e+00,-6.42883693e+00,-6.42846502e+00,-6.42879202e+00
,-6.42935658e+00,-6.42992011e+00,-6.43006338e+00,-6.42837251e+00
,-6.42834105e+00,-5.64800592e+00,-5.64802107e+00,-5.64803034e+00
,-5.64803295e+00,-5.64803295e+00,-5.64803295e+00,-5.64803295e+00
,-5.64803295e+00,-6.41841985e+00,-6.41841985e+00,-6.41841985e+00
,-6.41841985e+00,-6.41841985e+00,-6.41841974e+00,-6.41841874e+00
,-6.41841659e+00,-5.71374574e+00,-5.71391901e+00,-5.72324731e+00
,-5.72247691e+00,-5.71940973e+00,-5.71627975e+00,-5.71444281e+00
,-5.71653051e+00,-5.71403536e+00,-5.71359304e+00,-5.71353632e+00
,-6.35550139e+00,-6.35550140e+00,-6.35550140e+00,-6.35550140e+00
,-6.35550140e+00,-6.35550140e+00,-6.41841986e+00,-6.41841995e+00
,-6.41841628e+00,-6.41836506e+00,-6.41787958e+00,-6.40290057e+00
,-6.37344666e+00,-6.32979369e+00,-3.12287451e+00,-1.53739821e+00
,-1.91062094e+00,-2.02289957e+00,-1.94206284e+00,5.83919895e-01
,5.10954115e+00,3.51878819e-01,8.26363528e-01,-5.57060709e+00
,-5.57282973e+00,-6.35501488e+00,-6.35512242e+00,-6.35546485e+00
,-6.35549899e+00,-6.35550142e+00,-6.35550139e+00,-6.41841880e+00
,-6.41839815e+00,-6.41800443e+00,-6.41296390e+00,-3.93720639e+00
,1.25833051e+00,2.03922415e+00,-1.92687240e+00,-1.86253429e+00
,-1.96153400e+00,-2.16690804e+00,-2.10651008e+00,-1.98533093e+00
,-1.81969282e+00,-1.55965190e+00,-1.16594039e+00,-1.08416152e+00
,-1.13548314e+00,-1.31707189e+00,3.78453412e+00,6.21454686e+00
,4.60711904e+00,4.35618035e+00,4.33662769e+00,4.33560915e+00
,6.90222385e+00,6.90222386e+00,6.90221400e+00,6.90207239e+00
,6.90067781e+00,6.90024557e+00,5.13689136e+00,5.12561086e+00
,2.33844054e+00,2.02217908e+00,-4.63086497e-01,-1.04057152e-01
,-1.14871338e+00,-1.22930606e+00,-1.12191092e+00,5.58763795e+00
,4.18298690e+00,6.83754323e+00,6.55613928e+00,5.11097987e+00
,4.36236889e+00,4.33825605e+00,4.33573672e+00,4.33557354e+00
,4.33555485e+00,6.90222392e+00,6.90222392e+00,6.90222392e+00
,6.90222388e+00,6.90222387e+00,6.90222390e+00,-6.93328476e+00
,-6.93329727e+00,-6.93339475e+00,-6.93394411e+00,-6.93348469e+00
,-6.93388890e+00,-6.93457743e+00,-6.93525303e+00,-6.93542296e+00
,-6.93336960e+00,-6.93333038e+00,4.33572776e+00,4.33563082e+00
,4.33557144e+00,4.33555472e+00,4.33555472e+00,4.33555472e+00
,4.33555472e+00,4.33555472e+00,-6.91891410e+00,-6.91891410e+00
,-6.91891410e+00,-6.91891410e+00,-6.91891410e+00,-6.91891392e+00
,-6.91891223e+00,-6.91890863e+00,3.84753565e+00,3.84604318e+00
,3.76380648e+00,3.77074139e+00,3.79809229e+00,3.82558340e+00
,3.84152372e+00,3.82339631e+00,3.84504030e+00,3.84884991e+00
,3.84933787e+00,-6.40974607e+00,-6.40974607e+00,-6.40974607e+00
,-6.40974607e+00,-6.40974607e+00,-6.40974607e+00,-6.91891412e+00
,-6.91891427e+00,-6.91890810e+00,-6.91882194e+00,-6.91799867e+00
,-6.88541952e+00,-6.72407860e+00,-6.38936678e+00,-5.40337960e+00
,-3.98452462e+00,-1.29595755e+00,-1.19185099e+00,-1.27092745e+00
,-1.03114408e+00,2.44489571e+00,1.61463496e-01,-3.24178227e-01
,-2.87753599e+00,-2.85305776e+00,-6.40885729e+00,-6.40904926e+00
,-6.40967745e+00,-6.40974154e+00,-6.40974611e+00,-6.40974605e+00
,-6.91891233e+00,-6.91887762e+00,-6.91821155e+00,-6.90894113e+00
,-4.63685168e+00,-1.46207940e+00,-1.27785986e+00,-1.28332823e+00
,-1.33006735e+00,-1.25408146e+00,-7.95096930e-01,-3.65181760e-01
,-4.29063794e-04,3.64520930e-01,7.95051913e-01,1.25458675e+00
,1.33034860e+00,1.28344575e+00,1.27942181e+00,1.46208113e+00
,4.63685561e+00,6.90893991e+00,6.91821075e+00,6.91887746e+00
,6.91891198e+00,6.40974630e+00,6.40974630e+00,6.40974180e+00
,6.40967734e+00,6.40904946e+00,6.40885735e+00,2.85307237e+00
,2.87755806e+00,3.24198298e-01,-1.61450350e-01,-2.44489631e+00
,1.03174740e+00,1.27100620e+00,1.19193711e+00,1.29605597e+00
,3.98452346e+00,5.40338229e+00,6.38936700e+00,6.72407817e+00
,6.88541781e+00,6.91799815e+00,6.91882222e+00,6.91890766e+00
,6.91891319e+00,6.91891382e+00,6.40974633e+00,6.40974633e+00
,6.40974633e+00,6.40974631e+00,6.40974630e+00,6.40974632e+00
,-3.84934687e+00,-3.84885860e+00,-3.84504858e+00,-3.82341818e+00
,-3.84152587e+00,-3.82560426e+00,-3.79814204e+00,-3.77076453e+00
,-3.76380965e+00,-3.84603258e+00,-3.84756542e+00,6.91890796e+00
,6.91891125e+00,6.91891326e+00,6.91891383e+00,6.91891383e+00
,6.91891383e+00,6.91891383e+00,6.91891383e+00,-4.33557484e+00
,-4.33557484e+00,-4.33557484e+00,-4.33557484e+00,-4.33557484e+00
,-4.33558005e+00,-4.33562999e+00,-4.33573629e+00,6.93333023e+00
,6.93336841e+00,6.93542213e+00,6.93525270e+00,6.93457776e+00
,6.93388852e+00,6.93348383e+00,6.93394376e+00,6.93339405e+00
,6.93329658e+00,6.93328408e+00,-6.90222415e+00,-6.90222416e+00
,-6.90222415e+00,-6.90222415e+00,-6.90222415e+00,-6.90222415e+00
,-4.33557413e+00,-4.33556981e+00,-4.33575188e+00,-4.33829248e+00
,-4.36238139e+00,-5.11096670e+00,-6.55614062e+00,-6.83754308e+00
,-4.18299100e+00,-5.58763760e+00,1.12194417e+00,1.22940578e+00
,1.14874571e+00,1.04692102e-01,4.63095129e-01,-2.02219022e+00
,-2.33843513e+00,-5.12561102e+00,-5.13688814e+00,-6.90024622e+00
,-6.90067816e+00,-6.90207341e+00,-6.90221421e+00,-6.90222423e+00
,-6.90222412e+00,-4.33562687e+00,-4.33665111e+00,-4.35618477e+00
,-4.60711251e+00,-6.21454758e+00,-3.78453420e+00,1.31734802e+00
,1.13554695e+00,1.08437125e+00,1.16643007e+00,1.55986973e+00
,1.81971336e+00,1.98536617e+00,2.10666226e+00,2.16712282e+00
,1.96116853e+00,1.86237498e+00,1.92694460e+00,-2.03914143e+00
,-1.25809745e+00,3.93721840e+00,6.41296367e+00,6.41800441e+00
,6.41839850e+00,6.41841904e+00,6.35550125e+00,6.35550125e+00
,6.35549886e+00,6.35546453e+00,6.35512226e+00,6.35501464e+00
,5.57283005e+00,5.57060674e+00,-8.25715897e-01,-3.51167856e-01
,-5.10954186e+00,-5.83910493e-01,1.94217919e+00,2.02299614e+00
,1.91072126e+00,1.53739952e+00,3.12288170e+00,6.32979376e+00
,6.37344667e+00,6.40290025e+00,6.41787972e+00,6.41836567e+00
,6.41841647e+00,6.41841976e+00,6.41842013e+00,6.35550126e+00
,6.35550126e+00,6.35550126e+00,6.35550125e+00,6.35550125e+00
,6.35550126e+00,5.71353365e+00,5.71359041e+00,5.71403277e+00
,5.71652641e+00,5.71444095e+00,5.71627576e+00,5.71940255e+00
,5.72247281e+00,5.72324543e+00,5.71391862e+00,5.71374066e+00
,6.41841665e+00,6.41841860e+00,6.41841980e+00,6.41842014e+00
,6.41842014e+00,6.41842014e+00,6.41842014e+00,6.41842014e+00
,5.64802749e+00,5.64802749e+00,5.64802749e+00,5.64802749e+00
,5.64802749e+00,5.64802667e+00,5.64801887e+00,5.64800226e+00
,6.42834149e+00,6.42837212e+00,6.43006327e+00,6.42992041e+00
,6.42935743e+00,6.42879228e+00,6.42846490e+00,6.42883721e+00
,6.42839271e+00,6.42831452e+00,6.42830450e+00,-4.76795543e+00
,-4.76795502e+00,-4.76795534e+00,-4.76795534e+00,-4.76795534e+00
,-4.76795534e+00,5.64802760e+00,5.64802827e+00,5.64799983e+00
,5.64760259e+00,5.64380279e+00,5.48494282e+00,4.21621176e+00
,-5.78611412e+00,-4.49681164e+00,-2.67953491e+00,2.07505282e+00
,1.98795402e+00,2.05700858e+00,-1.84592776e+00,-9.39699194e-01
,-4.79901793e+00,-5.04510752e+00,-6.33391649e+00,-6.33549725e+00
,-4.81244416e+00,-4.80283327e+00,-4.77138949e+00,-4.76818199e+00
,-4.76795343e+00,-4.76795610e+00,5.64801936e+00,5.64785930e+00
,5.64478605e+00,5.60143491e+00,-6.37396510e+00,-5.56249499e+00
,-1.08814933e+00,2.06617029e+00,2.09683085e+00,2.04385403e+00
,1.32587458e+00,6.38729831e-02,-9.93107271e-01,-1.50157123e+00
,-1.26310658e+00,-3.55234085e-01,-1.72700516e-01,-2.86266219e-01
,-1.45579942e-01,1.35961556e+00,5.44484130e+00,6.35704278e+00
,6.35890733e+00,6.35903033e+00,6.35903666e+00,5.33564640e+00
,5.33564642e+00,5.33561052e+00,5.33509508e+00,5.33002271e+00
,5.32845180e+00,3.85565426e+00,3.83946594e+00,-4.98853017e-01
,-1.37995396e+00,-5.13171393e+00,-2.54502431e+00,-3.16089495e-01
,-5.01918728e-01,-2.55897793e-01,-1.14846935e+00,1.11776528e+00
,5.09778716e+00,6.20468566e+00,6.35085654e+00,6.35886781e+00
,6.35902020e+00,6.35903587e+00,6.35903688e+00,6.35903700e+00
,5.33564666e+00,5.33564666e+00,5.33564666e+00,5.33564652e+00
,5.33564646e+00,5.33564658e+00,6.03019525e+00,6.03019613e+00
,6.03020306e+00,6.03024217e+00,6.03020946e+00,6.03023823e+00
,6.03028739e+00,6.03033582e+00,6.03034804e+00,6.03020127e+00
,6.03019849e+00,6.35903592e+00,6.35903653e+00,6.35903689e+00
,6.35903700e+00,6.35903700e+00,6.35903700e+00,6.35903700e+00
,6.35903700e+00]
import matplotlib.pyplot as plt
from matplotlib import cm
import numpy as np
from mpl_toolkits.mplot3d import axes3d
# print(G_opt)
# print("\n\n")
# print(H_opt)
m=2
k=1
G=1
H=0
BOUND_X=7.0
BOUND_N=4.0
dev_m = 1
dev_k = 1
s=50
n_s=5
if(m==1 and k==1):
X = np.linspace(-BOUND_X * dev_m, BOUND_X * dev_m, s)
N = np.linspace(-BOUND_N * dev_k, BOUND_N * dev_k, n_s)
dx=X[1]-X[0]
dn = N[1] - N[0]
if (m==1 and k==2):
X = np.linspace(-BOUND_X * dev_m, BOUND_X * dev_m, s)
n_x=np.linspace(-BOUND_N * dev_k, BOUND_N * dev_k, n_s)
n_y = np.linspace(-BOUND_N * dev_k, BOUND_N * dev_k, n_s)
N_grid=np.asarray(np.meshgrid(n_x,n_y))
N=np.vstack((np.ravel(N_grid[0].T),np.ravel(N_grid[0])))
dx = X[1] - X[0]
dn = max(N.T[1] - N.T[0])**k
if (m==2 and k==1):
N = np.linspace(-BOUND_N * dev_k, BOUND_N * dev_k, n_s)
X_x = np.linspace(-BOUND_X * dev_m, BOUND_X * dev_m, s)
X_y = np.linspace(-BOUND_N * dev_k, BOUND_N * dev_k, n_s)
X_grid = np.asarray(np.meshgrid(X_x, X_y))
X = np.vstack((np.ravel(X_grid[0].T), np.ravel(X_grid[0])))
dn = N[1] - N[0]
dx = max(X.T[1] - X.T[0])**m
if (m==2 and k==2):
n_x = np.linspace(-BOUND_N * dev_k, BOUND_N * dev_k, n_s)
n_y = np.linspace(-BOUND_N * dev_k, BOUND_N * dev_k, n_s)
N_grid = np.asarray(np.meshgrid(n_x, n_y))
N = np.vstack((np.ravel(N_grid[0].T), np.ravel(N_grid[0])))
X_x = np.linspace(-BOUND_X * dev_m, BOUND_X * dev_m, s)
X_y = np.linspace(-BOUND_N * dev_k, BOUND_N * dev_k, n_s)
X_grid = np.asarray(np.meshgrid(X_x, X_y))
X = np.vstack((np.ravel(X_grid[0].T), np.ravel(X_grid[0])))
dn = max(N.T[1] - N.T[0])**k
dx = max(X.T[1] - X.T[0])**m
def plot(X,Y,G_H):
# giving a title to my graph
global G_opt
# if G_H==G:
# plt.title("Encoder G:Rm->Rk mse: "+str(mse_optimize(G_opt))+" PWR constraint: "+str(PWR_constraint(G_opt)))
# else:
# plt.title("Decoder H:Rk->Rm mse: "+ str(mse_optimize(G_opt))+" PWR constraint: "+str(PWR_constraint(G_opt)))
if(k==m==1):
if(G_H==G):
plt.plot(X,Y ,color='green', linestyle='dashed', linewidth = 3, marker='o', markerfacecolor='blue', markersize=12)
if(G_H==H):
plt.scatter(X.ravel(),Y.ravel())
elif m==1 and k==2:
if(G_H==G):
plt.scatter(Y[0], Y[1], s=1, c=X, cmap=cm.coolwarm)
plt.colorbar()
if G_H==H:
plt.scatter(X[0], X[1], s=1, c=Y, cmap=cm.coolwarm)
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.scatter(X[0], X[1], Y, alpha=0.8, c='blue')
elif m==2 and k==1:
if(G_H==G):
fig = plt.figure()
plt.scatter(X[0], X[1], s=1, c=Y, cmap=cm.coolwarm)
plt.colorbar()
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.scatter(X[0], X[1], Y, alpha=0.8, c='blue')
if(G_H==H):
plt.scatter(Y[:-1:2], Y[1::2], s=1, c=X[:-1:2], cmap=cm.coolwarm)
plt.colorbar()
elif m == 2 and k == 2:
pass
plt.show()
G_opt=np.array(G_opt)
Y_hat = np.array([gx + n for n in N.T for gx in G_opt.T]).T
plot(X, G_opt, G)
# plot(Y_hat, H_opt, H)