CLEANUP - changes to folder structure
This commit is contained in:
1
Theory/Dissertation/PD/100ghz_pd.json
Normal file
1
Theory/Dissertation/PD/100ghz_pd.json
Normal file
File diff suppressed because one or more lines are too long
1094
Theory/Dissertation/PD/100ghz_pd_bandwidth.csv
Normal file
1094
Theory/Dissertation/PD/100ghz_pd_bandwidth.csv
Normal file
File diff suppressed because it is too large
Load Diff
189
Theory/Dissertation/PD/100ghz_pd_responsivity.csv
Normal file
189
Theory/Dissertation/PD/100ghz_pd_responsivity.csv
Normal file
@@ -0,0 +1,189 @@
|
||||
1271; 0,3822390561953123
|
||||
1271,5; 0,38419930758242105
|
||||
1272; 0,3863702270698115
|
||||
1272,5; 0,38866381361008207
|
||||
1273; 0,3879395121421424
|
||||
1273,5; 0,3908144071258651
|
||||
1274; 0,38941324484667683
|
||||
1274,5; 0,3886482390643653
|
||||
1275; 0,3871744844466787
|
||||
1275,5; 0,3819131706099883
|
||||
1276; 0,3825696588771148
|
||||
1276,5; 0,38164278490690173
|
||||
1277; 0,3793811681135283
|
||||
1277,5; 0,3810969321121832
|
||||
1278; 0,38561783928242943
|
||||
1278,5; 0,38908016962932246
|
||||
1279; 0,3960805723111348
|
||||
1279,5; 0,39776514973186317
|
||||
1280; 0,3983882080762364
|
||||
1280,5; 0,3989277489532531
|
||||
1281; 0,3953941895319796
|
||||
1281,5; 0,39648781234375075
|
||||
1282; 0,3966742531971841
|
||||
1282,5; 0,4002652938704556
|
||||
1283; 0,40694867274287283
|
||||
1283,5; 0,41253621540584107
|
||||
1284; 0,42331258033724095
|
||||
1284,5; 0,43077624043193397
|
||||
1285; 0,4393232961230962
|
||||
1285,5; 0,44562110387213405
|
||||
1286; 0,4486108628977331
|
||||
1286,5; 0,4511055411347422
|
||||
1287; 0,4470620968166301
|
||||
1287,5; 0,4429754327671611
|
||||
1288; 0,4369760292430348
|
||||
1288,5; 0,4313232143283202
|
||||
1289; 0,4297225921323986
|
||||
1289,5; 0,42752981686391456
|
||||
1290; 0,42755873451486015
|
||||
1290,5; 0,42838607683209784
|
||||
1291; 0,4301647938813945
|
||||
1291,5; 0,430252773791754
|
||||
1292; 0,42983642955282675
|
||||
1292,5; 0,43082456782130385
|
||||
1293; 0,43010358194135434
|
||||
1293,5; 0,4286564203011507
|
||||
1294; 0,427551350387675
|
||||
1294,5; 0,4262216680056993
|
||||
1295; 0,4248061879636029
|
||||
1295,5; 0,42323824957412115
|
||||
1296; 0,42606502803639024
|
||||
1296,5; 0,42771450181627213
|
||||
1297; 0,4321631047010831
|
||||
1297,5; 0,43498514011363654
|
||||
1298; 0,43784261304613636
|
||||
1298,5; 0,4407749972159394
|
||||
1299; 0,4418422146980885
|
||||
1299,5; 0,44599734720216344
|
||||
1300; 0,44682291369874283
|
||||
1300,5; 0,44591438239702175
|
||||
1301; 0,4467439544276042
|
||||
1301,5; 0,4476723529309602
|
||||
1302; 0,44945964164622887
|
||||
1302,5; 0,451298649370644
|
||||
1303; 0,4555133819899133
|
||||
1303,5; 0,45932593779132214
|
||||
1304; 0,4641282326427819
|
||||
1304,5; 0,4660504121662704
|
||||
1305; 0,4672659916854359
|
||||
1305,5; 0,46826040808978875
|
||||
1306; 0,4672565627341473
|
||||
1306,5; 0,46494462666243797
|
||||
1307; 0,4614228682537902
|
||||
1307,5; 0,4594403315234107
|
||||
1308; 0,4567366055619595
|
||||
1308,5; 0,4543323943556662
|
||||
1309; 0,4531865329043713
|
||||
1309,5; 0,4531463334993213
|
||||
1310; 0,4549753124500232
|
||||
1310,5; 0,4563928182609638
|
||||
1311; 0,45807413408326114
|
||||
1311,5; 0,46008646903182826
|
||||
1312; 0,4625724677767604
|
||||
1312,5; 0,4642585362150724
|
||||
1313; 0,46443821082811676
|
||||
1313,5; 0,46431357981151344
|
||||
1314; 0,46266595309664715
|
||||
1314,5; 0,4634382042743632
|
||||
1315; 0,46336655819789074
|
||||
1315,5; 0,46220084770212755
|
||||
1316; 0,4621345192553813
|
||||
1316,5; 0,4619581088515051
|
||||
1317; 0,4622449432593938
|
||||
1317,5; 0,4634433901557192
|
||||
1318; 0,46570049058443497
|
||||
1318,5; 0,46746148714378144
|
||||
1319; 0,47051648811702607
|
||||
1319,5; 0,4736426053778652
|
||||
1320; 0,4752061192279773
|
||||
1320,5; 0,47672990706900487
|
||||
1321; 0,4792517016402914
|
||||
1321,5; 0,4804619217778243
|
||||
1322; 0,48045944968999643
|
||||
1322,5; 0,48044446341935276
|
||||
1323; 0,48033475585370833
|
||||
1323,5; 0,48149717921878865
|
||||
1324; 0,4825722899403748
|
||||
1324,5; 0,4815908698039817
|
||||
1325; 0,47971434550698255
|
||||
1325,5; 0,47939560128213987
|
||||
1326; 0,47928833048577313
|
||||
1326,5; 0,4780400467999897
|
||||
1327; 0,47648974188994153
|
||||
1327,5; 0,47504778426945493
|
||||
1328; 0,4767823647690562
|
||||
1328,5; 0,4796497575996306
|
||||
1329; 0,48149796255153543
|
||||
1329,5; 0,48293054311361827
|
||||
1330; 0,48577046817752123
|
||||
1330,5; 0,4879484457550308
|
||||
1331; 0,4890100791953129
|
||||
1331,5; 0,49009094527466934
|
||||
1332; 0,49064503921138825
|
||||
1332,5; 0,4912120163422964
|
||||
1333; 0,49112778494545795
|
||||
1333,5; 0,49082017761106833
|
||||
1334; 0,4891140575382411
|
||||
1334,5; 0,48897830241499407
|
||||
1335; 0,49041975188209885
|
||||
1335,5; 0,49289447360952865
|
||||
1336; 0,4941116428265213
|
||||
1336,5; 0,49433827868707936
|
||||
1337; 0,49545156946075475
|
||||
1337,5; 0,4964012858510567
|
||||
1338; 0,4976037918135337
|
||||
1338,5; 0,4975359556660308
|
||||
1339; 0,49750995144010873
|
||||
1339,5; 0,4979126497053521
|
||||
1340; 0,497475232138574
|
||||
1340,5; 0,49759401707965406
|
||||
1341; 0,4969075828334858
|
||||
1341,5; 0,49790859550840155
|
||||
1342; 0,4995926776094223
|
||||
1342,5; 0,5020720343160757
|
||||
1343; 0,5055918669106463
|
||||
1343,5; 0,5084877122557891
|
||||
1344; 0,5109238856077332
|
||||
1344,5; 0,5133476480224053
|
||||
1345; 0,5141099804906323
|
||||
1345,5; 0,5128794457064829
|
||||
1346; 0,5123127905211531
|
||||
1346,5; 0,5113593533744085
|
||||
1347; 0,5104375198088649
|
||||
1347,5; 0,5085465423276292
|
||||
1348; 0,5051624771364174
|
||||
1348,5; 0,5027410542553522
|
||||
1349; 0,5024260057256427
|
||||
1349,5; 0,5006762680057522
|
||||
1350; 0,4993251970666754
|
||||
1350,5; 0,49851742723413256
|
||||
1351; 0,4997497443709538
|
||||
1351,5; 0,5007398590455319
|
||||
1352; 0,5007983935913018
|
||||
1352,5; 0,49955251820707475
|
||||
1353; 0,4995544623158038
|
||||
1353,5; 0,5007503896118954
|
||||
1354; 0,500737054751544
|
||||
1354,5; 0,5007708386435341
|
||||
1355; 0,49980743334640554
|
||||
1355,5; 0,49964682618339445
|
||||
1356; 0,5007641635781113
|
||||
1356,5; 0,5010692724813779
|
||||
1357; 0,5017795860327432
|
||||
1357,5; 0,5018051896000885
|
||||
1358; 0,5018027877181053
|
||||
1358,5; 0,5024950398138555
|
||||
1359; 0,5037205512345401
|
||||
1359,5; 0,503981020991427
|
||||
1360; 0,50290329982148
|
||||
1360,5; 0,5017820667010949
|
||||
1361; 0,5029651424174117
|
||||
1361,5; 0,5021824944534237
|
||||
1362; 0,5007892395452416
|
||||
1362,5; 0,4997500743708827
|
||||
1363; 0,5006844796799776
|
||||
1363,5; 0,5020955167671433
|
||||
1364; 0,5059166193037108
|
||||
1364,5; 0,5043160514940865
|
||||
1365; 0,4996516521717823
|
||||
|
1
Theory/Dissertation/PD/70ghz_pd.json
Normal file
1
Theory/Dissertation/PD/70ghz_pd.json
Normal file
File diff suppressed because one or more lines are too long
336
Theory/Dissertation/PD/70ghz_pd_bandwidth.csv
Normal file
336
Theory/Dissertation/PD/70ghz_pd_bandwidth.csv
Normal file
@@ -0,0 +1,336 @@
|
||||
-7,105427357601002e-15; -0,20522295068752294
|
||||
0,19999999999999574; -0,030254119194939477
|
||||
0,39999999999998437; -0,06262230958084825
|
||||
0,5999999999999943; -0,044750988038462225
|
||||
0,79999999999999; -0,010697832675218066
|
||||
0,9999999999999929; -0,007716070877040071
|
||||
1,1999999999999886; -0,0034636603575668445
|
||||
1,3999999999999915; -0,0031910951680633737
|
||||
1,5999999999999943; -0,018902533473217353
|
||||
1,79999999999999; -0,053402356238265725
|
||||
1,9999999999999858; -0,016020039340308045
|
||||
2,1999999999999957; -0,03803455116762944
|
||||
2,3999999999999915; -0,027441706124275544
|
||||
2,5999999999999943; -0,011772163020613569
|
||||
2,799999999999997; -0,009307744420832709
|
||||
2,999999999999993; -0,004522003719798828
|
||||
3,1999999999999957; -0,004428713345979496
|
||||
3,3999999999999986; -0,004366538233070205
|
||||
3,6000000000000014; -0,004332966081604717
|
||||
3,8000000000000043; -0,004325484592115458
|
||||
3,999999999999993; -0,00434158146513397
|
||||
4,200000000000003; -0,004378744401192236
|
||||
4,3999999999999915; -0,004434461100823572
|
||||
4,599999999999994; -0,004506219264559075
|
||||
4,800000000000004; -0,004691539083670371
|
||||
5; -0,003991004145723398
|
||||
5,200000000000003; -0,003246645775397461
|
||||
5,3999999999999915; -0,0037896250865734338
|
||||
5,599999999999994; -0,023040865733948923
|
||||
5,799999999999997; -0,01989208568211387
|
||||
5,999999999999993; -0,0010096736725997424
|
||||
6,199999999999996; -0,013640471154773515
|
||||
6,399999999999999; -0,022016055829107817
|
||||
6,599999999999994; -0,02380673595648508
|
||||
6,799999999999997; -0,010201242210113204
|
||||
7; -0,004611668103098321
|
||||
7,200000000000003; -0,006761186983221812
|
||||
7,399999999999999; -0,014690649105665976
|
||||
7,600000000000001; -0,00390457347586759
|
||||
7,799999999999997; -0,045710767178201106
|
||||
8; -0,051072792534853306
|
||||
8,199999999999996; -0,07115209529133537
|
||||
8,399999999999991; -0,08208254896261469
|
||||
8,599999999999994; -0,03145294469160209
|
||||
8,799999999999997; -0,05983935104068827
|
||||
8,999999999999993; -0,03242609227466575
|
||||
9,199999999999996; -0,08006336213732856
|
||||
9,399999999999999; -0,07616115793078393
|
||||
9,599999999999994; -0,06914618045986609
|
||||
9,79999999999999; -0,0980170516533656
|
||||
9,999999999999979; -0,09444267414680585
|
||||
10,199999999999996; -0,1296597291950028
|
||||
10,399999999999999; -0,11722924677565816
|
||||
10,599999999999987; -0,1261332014641745
|
||||
10,799999999999983; -0,14295450195563753
|
||||
10,999999999999986; -0,13583779081780678
|
||||
11,199999999999989; -0,13655730701500968
|
||||
11,399999999999991; -0,1528394332576566
|
||||
11,59999999999998; -0,1455635480829094
|
||||
11,799999999999983; -0,15279717820688443
|
||||
11,999999999999986; -0,10865677433838528
|
||||
12,199999999999982; -0,08239755649864788
|
||||
12,39999999999997; -0,09832039720463737
|
||||
12,59999999999998; -0,09759344817184923
|
||||
12,799999999999983; -0,08609094120940997
|
||||
12,999999999999986; -0,13125303885294937
|
||||
13,199999999999982; -0,17127202835872835
|
||||
13,399999999999977; -0,17693756228526825
|
||||
13,599999999999987; -0,17588170560175698
|
||||
13,799999999999976; -0,21097131291045912
|
||||
13,999999999999979; -0,19723442280681303
|
||||
14,199999999999974; -0,17157649801758756
|
||||
14,399999999999977; -0,18397126413186138
|
||||
14,599999999999973; -0,22900338921732688
|
||||
14,799999999999969; -0,2093816161727191
|
||||
14,999999999999972; -0,19030766934459553
|
||||
15,199999999999974; -0,1930304944542227
|
||||
15,39999999999997; -0,16656555782418714
|
||||
15,599999999999959; -0,17578057654064638
|
||||
15,799999999999962; -0,18022738188194465
|
||||
15,999999999999964; -0,20411747466271102
|
||||
16,199999999999967; -0,24005694593094873
|
||||
16,39999999999997; -0,2409966294337953
|
||||
16,59999999999996; -0,23769655914941312
|
||||
16,79999999999996; -0,2461254200795704
|
||||
16,999999999999964; -0,18731174872333556
|
||||
17,199999999999967; -0,2088294036646947
|
||||
17,39999999999997; -0,26222359684914354
|
||||
17,59999999999996; -0,2627551021676209
|
||||
17,799999999999976; -0,23263650093640598
|
||||
17,99999999999995; -0,25096659518845055
|
||||
18,199999999999967; -0,28136295333973704
|
||||
18,399999999999956; -0,26386838346721
|
||||
18,599999999999945; -0,2697397873853724
|
||||
18,79999999999996; -0,27151761208872793
|
||||
18,99999999999995; -0,30006432628995094
|
||||
19,199999999999953; -0,32687710754417765
|
||||
19,39999999999997; -0,34133822014109505
|
||||
19,599999999999945; -0,35107178825199314
|
||||
19,79999999999996; -0,3207896032858475
|
||||
19,999999999999964; -0,3126066108279488
|
||||
20,199999999999953; -0,3015988268627865
|
||||
20,399999999999956; -0,32309268875395514
|
||||
20,59999999999996; -0,29037807883314093
|
||||
20,79999999999996; -0,2922929925308506
|
||||
20,99999999999995; -0,34985423889611633
|
||||
21,199999999999953; -0,36118780832491426
|
||||
21,399999999999956; -0,3251998242712628
|
||||
21,599999999999945; -0,2462767056035915
|
||||
21,799999999999933; -0,24441110825428503
|
||||
21,99999999999995; -0,2563960865160375
|
||||
22,19999999999994; -0,2437759650962339
|
||||
22,399999999999956; -0,22035942863831393
|
||||
22,59999999999996; -0,18593789159821306
|
||||
22,799999999999947; -0,1580165418909094
|
||||
22,99999999999995; -0,16755721915183486
|
||||
23,19999999999994; -0,20252844881319776
|
||||
23,399999999999913; -0,22661159302112166
|
||||
23,599999999999945; -0,24267584629923267
|
||||
23,799999999999933; -0,29043098079506846
|
||||
23,999999999999936; -0,32759458048731993
|
||||
24,19999999999994; -0,35261052927411507
|
||||
24,39999999999994; -0,4205920563168606
|
||||
24,599999999999945; -0,40505099517955756
|
||||
24,799999999999947; -0,39978925053876324
|
||||
24,999999999999936; -0,4143117703519099
|
||||
25,19999999999994; -0,4219338489372779
|
||||
25,399999999999928; -0,4610014796748456
|
||||
25,59999999999993; -0,47018850098853804
|
||||
25,799999999999947; -0,4491839028784197
|
||||
25,999999999999936; -0,4458017205576206
|
||||
26,199999999999925; -0,5003597628349712
|
||||
26,39999999999994; -0,5150256066968306
|
||||
26,599999999999916; -0,5045451019191436
|
||||
26,799999999999933; -0,5133285112874519
|
||||
26,999999999999922; -0,527155709897416
|
||||
27,19999999999994; -0,5140685424201781
|
||||
27,399999999999928; -0,49851201964752834
|
||||
27,599999999999916; -0,5137853037079538
|
||||
27,79999999999992; -0,5372179267072128
|
||||
27,999999999999936; -0,5680498018750453
|
||||
28,199999999999925; -0,5098792124208722
|
||||
28,399999999999928; -0,5261932637134765
|
||||
28,59999999999993; -0,5420533092094892
|
||||
28,799999999999933; -0,5905815675266202
|
||||
28,999999999999936; -0,6278889530493021
|
||||
29,19999999999991; -0,6751232569663901
|
||||
29,399999999999913; -0,6417648030574505
|
||||
29,599999999999916; -0,6296852646307589
|
||||
29,79999999999992; -0,6731708512242238
|
||||
29,999999999999908; -0,6766999836256802
|
||||
30,199999999999925; -0,6439858043186271
|
||||
30,399999999999928; -0,6626801183278261
|
||||
30,599999999999916; -0,6575261415486628
|
||||
30,79999999999992; -0,5997705615017357
|
||||
30,999999999999908; -0,5811412251277055
|
||||
31,19999999999994; -0,6232767821070331
|
||||
31,399999999999913; -0,6936652252154754
|
||||
31,599999999999902; -0,7251977840976562
|
||||
31,79999999999992; -0,756817987398668
|
||||
31,999999999999908; -0,7626095276161258
|
||||
32,199999999999925; -0,6998981751538662
|
||||
32,39999999999991; -0,6934363825152801
|
||||
32,599999999999916; -0,7182913332333944
|
||||
32,79999999999992; -0,6821687933338616
|
||||
32,99999999999992; -0,6663845829793131
|
||||
33,19999999999991; -0,6790941839387248
|
||||
33,399999999999956; -0,7261666896639514
|
||||
33,59999999999993; -0,7451168856292525
|
||||
33,79999999999995; -0,7934809742704192
|
||||
33,999999999999936; -0,7510223153439268
|
||||
34,19999999999994; -0,7443418303903386
|
||||
34,39999999999994; -0,7371085317015025
|
||||
34,599999999999945; -0,7272823230638554
|
||||
34,79999999999995; -0,7718051044043159
|
||||
34,99999999999995; -0,8073906768142964
|
||||
35,19999999999994; -0,7385956882940454
|
||||
35,399999999999956; -0,7160082880884686
|
||||
35,59999999999996; -0,7288095360695297
|
||||
35,79999999999996; -0,7236002865254121
|
||||
35,999999999999964; -0,7334442970172868
|
||||
36,19999999999997; -0,8346252066934827
|
||||
36,39999999999997; -0,8358944542314521
|
||||
36,59999999999996; -0,8009380638643022
|
||||
36,79999999999995; -0,7673865510270743
|
||||
36,99999999999998; -0,7199971905956084
|
||||
37,19999999999997; -0,7007463840971893
|
||||
37,399999999999984; -0,7387659310023729
|
||||
37,59999999999997; -0,721690739663293
|
||||
37,799999999999976; -0,657816129243038
|
||||
37,999999999999964; -0,6495576293842058
|
||||
38,20000000000001; -0,6597731574058532
|
||||
38,399999999999984; -0,672563855947323
|
||||
38,6; -0,6904033318178788
|
||||
38,79999999999999; -0,689336430830561
|
||||
39,00000000000002; -0,6117300762411118
|
||||
39,199999999999996; -0,5639205810793819
|
||||
39,40000000000001; -0,5983607766144563
|
||||
39,6; -0,5559212159038944
|
||||
39,80000000000002; -0,42213980065065204
|
||||
40,00000000000001; -0,41577016450588733
|
||||
40,20000000000004; -0,41077502582773695
|
||||
40,40000000000001; -0,4494641339488026
|
||||
40,600000000000044; -0,5314018055872878
|
||||
40,80000000000002; -0,641785834906464
|
||||
41,00000000000005; -0,7108648438969745
|
||||
41,200000000000024; -0,6859741311599707
|
||||
41,400000000000055; -0,7017068191441105
|
||||
41,60000000000003; -0,6791477498478518
|
||||
41,80000000000005; -0,653540590898162
|
||||
42,00000000000005; -0,6660836110606962
|
||||
42,20000000000007; -0,6129974635842999
|
||||
42,400000000000055; -0,5886674503992548
|
||||
42,60000000000007; -0,5864375705241724
|
||||
42,80000000000006; -0,5934101604542863
|
||||
43,000000000000064; -0,5971640717600168
|
||||
43,20000000000005; -0,687945370263789
|
||||
43,400000000000084; -0,826010895068702
|
||||
43,60000000000007; -0,8402202033545532
|
||||
43,80000000000009; -0,8155286496095027
|
||||
44,00000000000008; -0,7732529679765467
|
||||
44,20000000000008; -0,7804047850500297
|
||||
44,400000000000084; -0,7186911944635885
|
||||
44,6000000000001; -0,6952708619187691
|
||||
44,80000000000009; -0,6796908471847463
|
||||
45,00000000000011; -0,6791911674601883
|
||||
45,20000000000008; -0,750294196595163
|
||||
45,400000000000084; -0,8751930740148532
|
||||
45,6000000000001; -0,9276382447045544
|
||||
45,800000000000104; -0,9719742530818682
|
||||
46,00000000000011; -1,036079323202311
|
||||
46,20000000000011; -1,1181471052790317
|
||||
46,4000000000001; -1,0958490215727856
|
||||
46,60000000000013; -1,0625635604160188
|
||||
46,80000000000012; -1,0681184335495777
|
||||
47,00000000000011; -1,0491794786564261
|
||||
47,20000000000011; -1,0004949273189419
|
||||
47,40000000000013; -1,0264013117471569
|
||||
47,600000000000115; -0,9884102239645856
|
||||
47,80000000000013; -0,9894223247725593
|
||||
48,00000000000012; -1,0796700017398213
|
||||
48,20000000000014; -1,099628578912291
|
||||
48,40000000000011; -0,9509643943244526
|
||||
48,60000000000016; -0,9037231717547249
|
||||
48,80000000000013; -0,8528339219613446
|
||||
49,000000000000135; -0,858999004045224
|
||||
49,20000000000014; -0,9168300378510152
|
||||
49,400000000000155; -0,9577590379052632
|
||||
49,60000000000013; -0,999788695384078
|
||||
49,80000000000016; -1,0093627559760772
|
||||
50,00000000000015; -1,0138490875975479
|
||||
50,200000000000166; -1,0664495148931095
|
||||
50,400000000000155; -1,2154632152797502
|
||||
50,60000000000017; -1,1788818515429793
|
||||
50,800000000000146; -1,050269845638372
|
||||
51,00000000000019; -1,0622383145312964
|
||||
51,200000000000166; -1,1841450735158365
|
||||
51,4000000000002; -1,139376215918372
|
||||
51,60000000000017; -1,119440531745798
|
||||
51,8000000000002; -1,187468605994586
|
||||
52,00000000000018; -1,1953550362808736
|
||||
52,20000000000021; -1,269604124857581
|
||||
52,40000000000018; -1,3849421747096078
|
||||
52,6000000000002; -1,3718481353189649
|
||||
52,80000000000019; -1,3954600140641764
|
||||
53,00000000000022; -1,3942562465749204
|
||||
53,20000000000021; -1,4042931940245014
|
||||
53,400000000000226; -1,3795400304760106
|
||||
53,600000000000215; -1,4371475323268652
|
||||
53,80000000000023; -1,4680470055475139
|
||||
54,00000000000022; -1,4956152610708555
|
||||
54,20000000000024; -1,4599173760734971
|
||||
54,400000000000226; -1,3804207925357423
|
||||
54,60000000000023; -1,4209447553401664
|
||||
54,80000000000023; -1,4696589593832408
|
||||
55,00000000000025; -1,3473971465483299
|
||||
55,20000000000024; -1,2804811618109628
|
||||
55,40000000000024; -1,1931187716667573
|
||||
55,60000000000023; -1,1499753811035252
|
||||
55,80000000000026; -1,1787726888220313
|
||||
56,000000000000234; -1,1932811246412953
|
||||
56,20000000000025; -1,259756294621234
|
||||
56,40000000000024; -1,2340584671567725
|
||||
56,60000000000027; -1,1917426282230785
|
||||
56,800000000000246; -1,2255018834858493
|
||||
57,00000000000026; -1,2903085954845714
|
||||
57,200000000000266; -1,3799715177434764
|
||||
57,40000000000027; -1,4961435623060653
|
||||
57,60000000000026; -1,5184418601914111
|
||||
57,800000000000274; -1,4156967177433764
|
||||
58,00000000000025; -1,4701539637874377
|
||||
58,200000000000266; -1,545782763600434
|
||||
58,40000000000027; -1,5486404166502283
|
||||
58,600000000000286; -1,607511180291636
|
||||
58,80000000000026; -1,5918971528251729
|
||||
59,00000000000028; -1,7420918696456886
|
||||
59,20000000000028; -1,8688832280161232
|
||||
59,4000000000003; -1,9018553915656242
|
||||
59,600000000000286; -1,9313949044976835
|
||||
59,8000000000003; -1,7488759443354804
|
||||
60,000000000000306; -1,5879219632492743
|
||||
60,20000000000031; -1,5322688722554756
|
||||
60,40000000000028; -1,4779441671503282
|
||||
60,600000000000314; -1,3053954056727393
|
||||
60,8000000000003; -1,161200232220056
|
||||
61,00000000000032; -1,0852609076693227
|
||||
61,20000000000031; -1,039861302109443
|
||||
61,400000000000325; -1,0938817679702129
|
||||
61,600000000000314; -1,2827795990288489
|
||||
61,80000000000032; -1,4418988356213176
|
||||
62,000000000000306; -1,4887272875332065
|
||||
62,20000000000034; -1,3858016155912871
|
||||
62,400000000000325; -1,4386165299344782
|
||||
62,60000000000034; -1,623474266607849
|
||||
62,800000000000345; -1,6269465129654068
|
||||
63,00000000000035; -1,4835041232913464
|
||||
63,20000000000034; -1,4192369875578938
|
||||
63,40000000000037; -1,393348402668435
|
||||
63,60000000000036; -1,46529616679921
|
||||
63,800000000000374; -1,500508185495117
|
||||
64,00000000000037; -1,6190473360126991
|
||||
64,20000000000036; -1,7519875508476201
|
||||
64,40000000000035; -1,7562809083561022
|
||||
64,60000000000036; -1,969973816098435
|
||||
64,80000000000035; -2,0604805496803844
|
||||
65,00000000000037; -2,0818983868245247
|
||||
65,20000000000036; -2,096459467198311
|
||||
65,40000000000038; -2,2014641556121233
|
||||
65,60000000000039; -1,996828898735267
|
||||
65,80000000000038; -1,6692235197112448
|
||||
66,00000000000037; -1,4111710117485514
|
||||
66,20000000000039; -1,4616886686912545
|
||||
66,40000000000038; -1,6079210184093582
|
||||
66,60000000000039; -1,5839852165659427
|
||||
66,80000000000038; -1,583493358599156
|
||||
67,0000000000004; -1,3918025284299995
|
||||
|
166
Theory/Dissertation/PD/70ghz_pd_responsivity.csv
Normal file
166
Theory/Dissertation/PD/70ghz_pd_responsivity.csv
Normal file
@@ -0,0 +1,166 @@
|
||||
1270,8549581839902; 0,5258998226950353
|
||||
1270,743369175627; 0,5221430916732335
|
||||
1271,0781362007167; 0,5309982433674809
|
||||
1271,3013142174432; 0,5350233123194115
|
||||
1271,5244922341694; 0,5385117054110848
|
||||
1271,747670250896; 0,5428051122931441
|
||||
1271,9708482676224; 0,5468301812450749
|
||||
1272,305615292712; 0,5498713444532002
|
||||
1272,9751493428912; 0,5484402088258471
|
||||
1273,5330943847073; 0,5470985191752036
|
||||
1273,7562724014335; 0,5441468019437876
|
||||
1273,867861409797; 0,5398533950617284
|
||||
1274,0910394265231; 0,5377066916206987
|
||||
1274,3142174432496; 0,5337710686454775
|
||||
1274,8721624850657; 0,5309982433674809
|
||||
1275,4301075268816; 0,526615390508712
|
||||
1276,0996415770608; 0,5275098502758077
|
||||
1276,76917562724; 0,5296565537168374
|
||||
1277,4387096774192; 0,5305510134839331
|
||||
1278,1082437275984; 0,5325188249715436
|
||||
1278,7777777777776; 0,5350233123194115
|
||||
1279,4473118279568; 0,5344866364591541
|
||||
1280,116845878136; 0,5348444203659923
|
||||
1280,674790919952; 0,5369016778303125
|
||||
1281,1211469534048; 0,5409267467822432
|
||||
1281,5675029868578; 0,5438784640136589
|
||||
1281,790681003584; 0,5465618433149462
|
||||
1282,0510553564316; 0,5502291283600385
|
||||
1282,5718040621266; 0,554701427195517
|
||||
1283,2413381123058; 0,5545225352420978
|
||||
1283,910872162485; 0,553449183521583
|
||||
1284,5804062126642; 0,5489768846861045
|
||||
1285,13835125448; 0,5454884915944312
|
||||
1285,6962962962962; 0,5425367743630154
|
||||
1286,2542413381123; 0,5422684364328867
|
||||
1286,8121863799283; 0,5459357214779792
|
||||
1287,3701314217442; 0,5495135605463619
|
||||
1287,7792911190759; 0,553449183521583
|
||||
1288,0396654719234; 0,557832036380352
|
||||
1288,2628434886499; 0,5615887674021538
|
||||
1288,4860215053764; 0,5653454984239559
|
||||
1288,7463958582237; 0,5695494593293056
|
||||
1289,1555555555556; 0,5742006501182033
|
||||
1289,7135005973714; 0,5784940570002626
|
||||
1290,3830346475506; 0,5781362730934243
|
||||
1290,9409796893667; 0,5752740018387181
|
||||
1291,1641577060932; 0,57071225702653
|
||||
1291,3873357228194; 0,5672238639348568
|
||||
1291,610513739546; 0,5640038087733122
|
||||
1291,9452807646355; 0,5606048616583486
|
||||
1292,5032258064516; 0,555953670869451
|
||||
1293,0611708482675; 0,554701427195517
|
||||
1293,7307048984467; 0,5570270225899658
|
||||
1294,2886499402628; 0,5586370501707381
|
||||
1294,8465949820788; 0,5618571053322825
|
||||
1295,4045400238947; 0,5645404846335697
|
||||
1295,9624850657108; 0,5672238639348568
|
||||
1296,63201911589; 0,5672238639348568
|
||||
1297,3015531660692; 0,5654349444006653
|
||||
1297,9710872162484; 0,5627515650993782
|
||||
1298,6406212664276; 0,5614993214254442
|
||||
1299,3101553166068; 0,5625726731459592
|
||||
1299,979689366786; 0,5640038087733122
|
||||
1300,6492234169652; 0,5656138363540846
|
||||
1301,3187574671445; 0,5656138363540846
|
||||
1301,9882915173237; 0,5652560524472463
|
||||
1302,6578255675029; 0,5618571053322825
|
||||
1303,327359617682; 0,5584581582173189
|
||||
1303,9968936678613; 0,5563114547762892
|
||||
1304,6664277180405; 0,5543436432886787
|
||||
1305,3359617682197; 0,5539858593818404
|
||||
1305,8939068100358; 0,555953670869451
|
||||
1306,3402628434885; 0,5589053881008668
|
||||
1306,7866188769412; 0,56239378119254
|
||||
1307,2329749103942; 0,5656138363540846
|
||||
1307,679330943847; 0,5693705673758864
|
||||
1308,237275985663; 0,5722328386305927
|
||||
1308,9068100358422; 0,5713383788634969
|
||||
1309,464755077658; 0,5691022294457577
|
||||
1309,911111111111; 0,5658821742842133
|
||||
1310,3574671445638; 0,5634671329130548
|
||||
1310,8038231780165; 0,560515415681639
|
||||
1311,3617682198326; 0,5579214823570615
|
||||
1312,0313022700118; 0,5582792662638998
|
||||
1312,700836320191; 0,5604259697049294
|
||||
1313,3703703703702; 0,5627515650993782
|
||||
1313,9283154121863; 0,5645404846335697
|
||||
1314,374671445639; 0,5674922018649855
|
||||
1315,1557945041816; 0,5704439190964012
|
||||
1315,8253285543608; 0,5708017030032395
|
||||
1316,49486260454; 0,5715172708169162
|
||||
1317,1643966547192; 0,5722328386305927
|
||||
1317,8339307048984; 0,5727695144908501
|
||||
1318,5034647550776; 0,5715172708169162
|
||||
1319,1729988052568; 0,5711594869100779
|
||||
1319,842532855436; 0,5693705673758864
|
||||
1320,5120669056153; 0,5693705673758864
|
||||
1321,1816009557945; 0,5686549995622099
|
||||
1321,8511350059737; 0,5679394317485333
|
||||
1322,5206690561529; 0,5650771604938272
|
||||
1323,190203106332; 0,5645404846335697
|
||||
1323,8597371565113; 0,566150512214342
|
||||
1324,5292712066905; 0,5682972156553716
|
||||
1325,0872162485064; 0,5712489328867874
|
||||
1325,6451612903224; 0,5747373259784607
|
||||
1326,2031063321385; 0,5779573811400052
|
||||
1326,7610513739544; 0,5811774363015497
|
||||
1327,4305854241336; 0,5833241397425795
|
||||
1328,100119474313; 0,5861864109972856
|
||||
1328,7696535244922; 0,5858286270904474
|
||||
1329,4391875746715; 0,5833241397425795
|
||||
1330,1087216248507; 0,5822507880220645
|
||||
1330,7782556750299; 0,5833241397425795
|
||||
1331,447789725209; 0,5833241397425795
|
||||
1332,1173237753883; 0,5843974914630943
|
||||
1332,7868578255675; 0,5869019788109622
|
||||
1333,4563918757467; 0,5876175466246387
|
||||
1334,125925925926; 0,5883331144383153
|
||||
1334,7954599761051; 0,5895853581122492
|
||||
1335,4649940262843; 0,5901220339725066
|
||||
1336,1345280764635; 0,5883331144383153
|
||||
1336,8040621266427; 0,5869019788109622
|
||||
1337,473596176822; 0,5843974914630943
|
||||
1338,1431302270012; 0,5811774363015497
|
||||
1338,8126642771804; 0,5801040845810348
|
||||
1339,4821983273596; 0,5808196523947114
|
||||
1340,1517323775388; 0,5831452477891602
|
||||
1340,821266427718; 0,5849341673233517
|
||||
1341,3792114695339; 0,58734920869451
|
||||
1341,93715651135; 0,5903009259259259
|
||||
1342,6066905615291; 0,5919109535066981
|
||||
1343,2762246117084; 0,5919109535066981
|
||||
1343,9457586618876; 0,592984305227213
|
||||
1344,6152927120668; 0,5936998730408896
|
||||
1345,284826762246; 0,5944154408545661
|
||||
1345,9543608124252; 0,5962043603887575
|
||||
1346,6238948626044; 0,599424415550302
|
||||
1347,0702508960571; 0,6004977672708168
|
||||
1347,9629629629628; 0,5997821994571403
|
||||
1348,632497013142; 0,6012133350844935
|
||||
1349,3020310633212; 0,6033600385255231
|
||||
1349,9715651135004; 0,6033600385255231
|
||||
1350,6410991636797; 0,6037178224323614
|
||||
1351,3106332138589; 0,605864525873391
|
||||
1351,980167264038; 0,6078323373610015
|
||||
1352,6497013142173; 0,6094423649417738
|
||||
1353,3192353643965; 0,6112312844759653
|
||||
1353,9887694145757; 0,6123046361964801
|
||||
1354,658303464755; 0,6123046361964801
|
||||
1355,3278375149341; 0,6135568798704141
|
||||
1355,8857825567502; 0,6168663810086681
|
||||
1356,332138590203; 0,6206231120304702
|
||||
1356,890083632019; 0,6241115051221433
|
||||
1357,5596176821982; 0,626258208563173
|
||||
1358,2291517323774; 0,6248270729358198
|
||||
1358,8986857825566; 0,6230381534016285
|
||||
1359,4566308243727; 0,619818098240084
|
||||
1360,0145758661886; 0,6171347189387969
|
||||
1360,6841099163678; 0,617313610892216
|
||||
1361,353643966547; 0,6176713947990543
|
||||
1362,0231780167262; 0,61856585456615
|
||||
1362,6927120669054; 0,6192814223798266
|
||||
1363,1390681003584; 0,6225014775413711
|
||||
1363,585424133811; 0,626258208563173
|
||||
1364,2549581839903; 0,6284049120042028
|
||||
1364,8129032258064; 0,630014939584975
|
||||
|
66
Theory/Dissertation/PD/plot_pd_specs.m
Normal file
66
Theory/Dissertation/PD/plot_pd_specs.m
Normal file
@@ -0,0 +1,66 @@
|
||||
opts = delimitedTextImportOptions("NumVariables", 2);
|
||||
|
||||
% Specify range and delimiter
|
||||
opts.DataLines = [1, Inf];
|
||||
opts.Delimiter = ";";
|
||||
|
||||
% Specify column names and types
|
||||
opts.VariableNames = ["x0_03203105428566744", "x_0_09762908467719589"];
|
||||
opts.VariableTypes = ["double", "double"];
|
||||
|
||||
% Specify file level properties
|
||||
opts.ExtraColumnsRule = "ignore";
|
||||
opts.EmptyLineRule = "read";
|
||||
|
||||
% Specify variable properties
|
||||
opts = setvaropts(opts, ["x0_03203105428566744", "x_0_09762908467719589"], "DecimalSeparator", ",");
|
||||
opts = setvaropts(opts, ["x0_03203105428566744", "x_0_09762908467719589"], "ThousandsSeparator", ".");
|
||||
|
||||
% Import the data
|
||||
x70ghz_pd_resp = readtable("C:\Users\Silas\Documents\MATLAB\imdd_simulation\Functions\Theory\Dissertation\PD\70ghz_pd_responsivity.csv", opts);
|
||||
x70ghz_pd_bandwidth = readtable("C:\Users\Silas\Documents\MATLAB\imdd_simulation\Functions\Theory\Dissertation\PD\70ghz_pd_bandwidth.csv", opts);
|
||||
x100ghz_pd_resp = readtable("C:\Users\Silas\Documents\MATLAB\imdd_simulation\Functions\Theory\Dissertation\PD\100ghz_pd_responsivity.csv", opts);
|
||||
x100ghz_pd_bandwidth = readtable("C:\Users\Silas\Documents\MATLAB\imdd_simulation\Functions\Theory\Dissertation\PD\100ghz_pd_bandwidth.csv", opts);
|
||||
|
||||
% sort bandwidth based on first table column
|
||||
x70ghz_pd_bandwidth = sortrows(x70ghz_pd_bandwidth, "x0_03203105428566744");
|
||||
|
||||
x70ghz_pd_bandwidth.(2) = movmean(x70ghz_pd_bandwidth.(2),3);
|
||||
%smooth data for plotting
|
||||
|
||||
x100ghz_pd_bandwidth = sortrows(x100ghz_pd_bandwidth, "x0_03203105428566744");
|
||||
|
||||
|
||||
|
||||
%%
|
||||
|
||||
figure(); hold on
|
||||
plot(x100ghz_pd_resp.(1),x100ghz_pd_resp.(2))
|
||||
plot(x70ghz_pd_resp.(1),x70ghz_pd_resp.(2))
|
||||
% beautify
|
||||
xlabel('Frequency (GHz)');
|
||||
ylabel('Responsivity (A/W)');
|
||||
legend('100GHz PD', '70GHz PD');
|
||||
grid on;
|
||||
|
||||
%%
|
||||
% mat2tikz_improved('C:\Users\Silas\Documents\6971e0b65b380ca6d71c837f\02_IMDD_System\tikz\pd\responsivity.tikz')
|
||||
|
||||
%%
|
||||
|
||||
figure(); hold on
|
||||
plot(x100ghz_pd_bandwidth.(1),x100ghz_pd_bandwidth.(2))
|
||||
plot(x70ghz_pd_bandwidth.(1),x70ghz_pd_bandwidth.(2))
|
||||
% beautify
|
||||
xlabel('Frequency (GHz)');
|
||||
ylabel('Relative S21');
|
||||
legend('100GHz PD', '70GHz PD');
|
||||
grid on;
|
||||
|
||||
ylim([-3.5, 0.1])
|
||||
xlim([0 100]);
|
||||
|
||||
%%
|
||||
mat2tikz_improved('C:\Users\Silas\Documents\6971e0b65b380ca6d71c837f\02_IMDD_System\tikz\pd\bandwidth_.tikz')
|
||||
|
||||
|
||||
90
Theory/Dissertation/dispersion_around_zdw.m
Normal file
90
Theory/Dissertation/dispersion_around_zdw.m
Normal file
@@ -0,0 +1,90 @@
|
||||
%% plot_dispersion_final_for_tikz
|
||||
lambda_nm = linspace(1240, 1360, 400);
|
||||
|
||||
% 1. Statistical & Specification Parameters
|
||||
p01_L = norminv(0.01, 1317, 2);
|
||||
p99_L = norminv(0.99, 1317, 2);
|
||||
p01_S = norminv(0.01, 0.0872, 0.0012);
|
||||
p99_S = norminv(0.99, 0.0872, 0.0012);
|
||||
|
||||
% Scenarios: [ZDW_min, ZDW_max], [S0_min, S0_max], [Color RGB]
|
||||
scenarios = { ...
|
||||
[1303, 1325], [0.075, 0.0925], [0.6510, 0.8078, 0.8902]; ... % 1. Wide Spec (Gray)
|
||||
[p01_L, p99_L], [p01_S, p99_S], [0.6, 0.6, 0.6] ... % 2. 98% Stats (Blue)
|
||||
};
|
||||
|
||||
figure('Color','w'); hold on;
|
||||
hp_handles = [];
|
||||
|
||||
% 2. Calculate and Plot Envelopes
|
||||
for k = 1:size(scenarios, 1)
|
||||
Zr = scenarios{k,1};
|
||||
Sr = scenarios{k,2};
|
||||
col = scenarios{k,3};
|
||||
|
||||
[S_mesh, Z_mesh] = meshgrid(Sr, Zr);
|
||||
D_all = zeros(length(lambda_nm), 4);
|
||||
for i = 1:4
|
||||
D_all(:,i) = (S_mesh(i)/4) .* (lambda_nm - (Z_mesh(i)^4)./(lambda_nm.^3));
|
||||
end
|
||||
|
||||
D_min_env = min(D_all, [], 2);
|
||||
D_max_env = max(D_all, [], 2);
|
||||
|
||||
[hl, hp] = boundedline(lambda_nm, (D_min_env+D_max_env)/2, (D_max_env-D_min_env)/2, ...
|
||||
'cmap','alpha', col);
|
||||
|
||||
hp_handles(k) = hp;
|
||||
set(hl, 'Visible', 'off');
|
||||
|
||||
|
||||
if k == 1
|
||||
D_wide_min = D_min_env;
|
||||
D_wide_max = D_max_env;
|
||||
% ho = outlinebounds(hl, hp);
|
||||
% % Change properties
|
||||
% set(ho, 'Color', 'k', ... % Make it black
|
||||
% 'LineStyle', '--', ... % Make it dashed
|
||||
% 'LineWidth', 1, ... % Make it thin
|
||||
% 'HandleVisibility', 'off'); % Hide from legend
|
||||
% Capture Wide Spec (k=1) bounds for the TikZ measurement lines
|
||||
hp.FaceAlpha = 0.5;
|
||||
% ho = outlinebounds(hl, hp);
|
||||
% % Change properties
|
||||
% set(ho, 'Color', 'k', ... % Make it black
|
||||
% 'LineStyle', '--', ... % Make it dashed
|
||||
% 'LineWidth', 1, ... % Make it thin
|
||||
% 'HandleVisibility', 'off'); % Hide from legend
|
||||
% Capture Wide Spec (k=1) bounds for the TikZ measurement lines
|
||||
hp.FaceAlpha = 0.5;
|
||||
else
|
||||
hp.FaceAlpha = 0.8;
|
||||
end
|
||||
end
|
||||
|
||||
% 3. Nominal Line
|
||||
D_nom = (0.0872/4) .* (lambda_nm - (1317^4)./(lambda_nm.^3));
|
||||
h_nom = plot(lambda_nm, D_nom, 'k', 'LineWidth', 1,'LineStyle','-');
|
||||
|
||||
% 4. Minimal Lines for TikZ (Measuring Wide Spec)
|
||||
lambda_v = 1290;
|
||||
[~, idx_v] = min(abs(lambda_nm - lambda_v));
|
||||
% Vertical line showing full Wide Spec dispersion range at 1290nm
|
||||
line([lambda_v, lambda_v], [D_wide_min(idx_v), D_wide_max(idx_v)], 'Color', 'k', 'Tag', 'VertArrow','LineWidth', 1);
|
||||
% Horizontal line showing Wide Spec ZDW range at D=0
|
||||
% line([1303, 1325], [0, 0], 'Color', 'k', 'Tag', 'HorizArrow','LineWidth', 1);
|
||||
|
||||
% 5. Aesthetics & Legend
|
||||
xlabel('Wavelength $\lambda$ [nm]', 'Interpreter', 'latex');
|
||||
ylabel('$D(\lambda)$ [ps/(nm km)]', 'Interpreter', 'latex');
|
||||
grid on; box on;
|
||||
xlim([1240 1360]); ylim([-5 5]);
|
||||
|
||||
leg_labels = { ...
|
||||
'$\lambda_0 \in [1303, 1325], S_0 \in [0.075, 0.0925]$', ...
|
||||
'$\lambda_0 \in [1312, 1322], S_0 \in [0.084, 0.090]$', ...
|
||||
'$\lambda_0 = 1317, S_0 = 0.0872$'};
|
||||
legend([hp_handles, h_nom], leg_labels, 'Location', 'northwest', 'Interpreter', 'latex', 'FontSize', 8);
|
||||
|
||||
% Export command (uncomment to use)
|
||||
% mat2tikz_improved('C:\Users\Silas\Documents\6971e0b65b380ca6d71c837f\02_IMDD_System\tikz\dispersion\dispersion_slope.tikz')
|
||||
183
Theory/Dissertation/dispersion_contour_bandwidth_lambda.m
Normal file
183
Theory/Dissertation/dispersion_contour_bandwidth_lambda.m
Normal file
@@ -0,0 +1,183 @@
|
||||
%% ------------------------------------------------------------
|
||||
% Contour plot: λ_null as function of bandwidth (f_target) and reach (L)
|
||||
% ------------------------------------------------------------
|
||||
|
||||
% Parameters
|
||||
lambda0 = 1310e-9; % [m]
|
||||
S0 = 0.09; % [ps/(nm²·km)]
|
||||
c = physconst('lightspeed');
|
||||
|
||||
% Sweep dimensions
|
||||
f_targets = linspace(50e9, 130e9, 200); % [Hz] (x-axis)
|
||||
L_values = linspace(0.5e3, 15e3, 200); % [m] (y-axis)
|
||||
|
||||
lambda_surface = zeros(numel(L_values), numel(f_targets));
|
||||
Dacc_surface = zeros(numel(L_values), numel(f_targets));
|
||||
|
||||
% Outer loop over fiber length (since L must be scalar)
|
||||
for iL = 1:numel(L_values)
|
||||
L = L_values(iL);
|
||||
[lambda_vec, Dacc_vec] = lambda_for_first_null_full(f_targets, L, lambda0, S0);
|
||||
|
||||
% Store the 1x absolute offset |lambda - lambda0|
|
||||
lambda_surface(iL, :) = abs(lambda0 - lambda_vec);
|
||||
Dacc_surface(iL, :) = Dacc_vec;
|
||||
end
|
||||
|
||||
% Convert for plotting
|
||||
lambda_surface_nm = lambda_surface * 1e9; % [nm]
|
||||
L_km = L_values / 1000; % [km]
|
||||
f_GHz = f_targets / 1e9; % [GHz]
|
||||
|
||||
%% Contour plot
|
||||
figure('Color','w');
|
||||
hold on;
|
||||
|
||||
% Define wavelength contour levels [nm]
|
||||
% Focus on a clean range of 1x offset values
|
||||
lambda_levels = unique([50:-10:30, 30:-5:5]);
|
||||
|
||||
% Contour plot
|
||||
[C,h] = contourf(f_GHz, L_km, lambda_surface_nm, lambda_levels, ...
|
||||
'LineWidth', 1.2, ...
|
||||
'ShowText', 'off');
|
||||
|
||||
% Colormap: Modern Blue palette with light colors removed for visibility
|
||||
cmap_full = cbrewer2('Blues', 40);
|
||||
colormap(cmap_full(10:end, :));
|
||||
clim([min(lambda_levels) max(lambda_levels)]);
|
||||
cb = colorbar;
|
||||
ylabel(cb, '$\Delta \lambda$ [nm]', 'Interpreter', 'latex');
|
||||
|
||||
% --- MANUAL TEXTBOX ANNOTATIONS ---
|
||||
% Find placement along the first-null curve for each level
|
||||
for i = 1:length(lambda_levels)
|
||||
lvl = lambda_levels(i);
|
||||
|
||||
% Re-calculate the specific (f, L) curve for this delta-lambda
|
||||
lambda_target = lambda0 - (lvl * 1e-9);
|
||||
LHS = -( (S0*1e3) / 4 ) * (lambda_target - (lambda0^4)/(lambda_target^3)) * lambda_target^2;
|
||||
const_val = (c*0.5) / LHS;
|
||||
|
||||
f_curve_GHz = linspace(min(f_GHz), max(f_GHz), 500);
|
||||
L_curve_km = const_val ./ (f_curve_GHz * 1e9).^2 / 1000;
|
||||
|
||||
% Filter for points within the plot axes
|
||||
in_bounds = find(L_curve_km >= min(L_km)*1.1 & L_curve_km <= max(L_km)*0.9 & ...
|
||||
f_curve_GHz >= min(f_GHz)*1.1 & f_curve_GHz <= max(f_GHz)*0.9);
|
||||
|
||||
if ~isempty(in_bounds)
|
||||
% Specific alternating pattern for weight to minimize overlapping
|
||||
if i < 9
|
||||
weight = 0.05;
|
||||
else
|
||||
weight = 0.05 + 0.1 * mod(i, 2);
|
||||
end
|
||||
idx = in_bounds(max(1, min(length(in_bounds), round(length(in_bounds) * weight))));
|
||||
|
||||
text(f_curve_GHz(idx), L_curve_km(idx), sprintf('%g nm', lvl), ...
|
||||
'Color', 'k', 'BackgroundColor', 'w', 'Margin', 1.5, ...
|
||||
'HorizontalAlignment', 'center', 'VerticalAlignment', 'middle', ...
|
||||
'EdgeColor', 'k', 'FontSize', 9);
|
||||
end
|
||||
end
|
||||
|
||||
% Axis formatting
|
||||
xlabel('Signal Bandwidth [GHz]', 'FontSize', 11);
|
||||
ylabel('Fiber length [km]', 'FontSize', 11);
|
||||
xticks(min(f_GHz):10:max(f_GHz));
|
||||
yticks(min(L_km):2.5:max(L_km));
|
||||
grid on; box on;
|
||||
axis([min(f_GHz) max(f_GHz) min(L_km) max(L_km)]);
|
||||
|
||||
|
||||
%% Optional: overlay accumulated-dispersion contours
|
||||
if 0
|
||||
hold on;
|
||||
min_D = min(Dacc_surface(:), [], 'omitnan');
|
||||
max_D = max(Dacc_surface(:), [], 'omitnan');
|
||||
% Calculate 3 integer levels well within the data range
|
||||
D_levels = unique(round(linspace(min_D*0.8, max_D*0.8, 3)));
|
||||
|
||||
[CS, h] = contour(f_GHz, L_km, Dacc_surface, D_levels, 'k--', 'LineWidth', 0.8);
|
||||
clabel(CS, h, 'Color','k', 'FontSize',8);
|
||||
end
|
||||
|
||||
|
||||
%% Export
|
||||
% Hier erzwingen wir die rote Colormap für pgfplots, damit mat2tikz es nicht blau exportiert!
|
||||
% mat2tikz_improved("C:/Users/Silas/Documents/6971e0b65b380ca6d71c837f/02_IMDD_System/tikz/dispersion/dispersion_power_fading_contour2.tikz");
|
||||
|
||||
function [lambda_vec, Dacc_vec] = lambda_for_first_null_full(f_target, L, lambda0, S0)
|
||||
% lambda_for_first_null_full (stable, single-branch + validity checks)
|
||||
% --------------------------------------------------------------------
|
||||
% Computes the wavelength(s) at which the first IM/DD fading null
|
||||
% occurs at frequency/ies f_target using the full dispersion model:
|
||||
%
|
||||
% D(lambda) = (S0/4)*(lambda - lambda0^4 / lambda^3)
|
||||
%
|
||||
% Restricted to the NORMAL-dispersion branch (λ < λ0),
|
||||
% and valid only in the O-band (1260–1360 nm).
|
||||
%
|
||||
% Inputs:
|
||||
% f_target - scalar or vector of target null frequencies [Hz]
|
||||
% L - fiber length [m]
|
||||
% lambda0 - zero-dispersion wavelength (ZDW) [m]
|
||||
% S0 - dispersion slope at ZDW [ps/(nm²·km)]
|
||||
%
|
||||
% Outputs:
|
||||
% lambda_vec - wavelength(s) [m] where first null occurs (clamped to O-band)
|
||||
% Dacc_vec - accumulated dispersion(s) [ps/nm] (NaN if out of valid range)
|
||||
% --------------------------------------------------------------------
|
||||
|
||||
c = physconst('lightspeed');
|
||||
S0_si = S0 * 1e3; % ps/(nm²·km) -> s/(m³)
|
||||
|
||||
% Define O-band boundaries (in meters)
|
||||
lambda_min = 1255e-9;
|
||||
lambda_max = 1361e-9;
|
||||
|
||||
% Force column vector
|
||||
f_target = f_target(:);
|
||||
N = numel(f_target);
|
||||
|
||||
lambda_vec = NaN(N,1);
|
||||
Dacc_vec = NaN(N,1);
|
||||
|
||||
|
||||
|
||||
for k = 1:N
|
||||
RHS = c * 0.5 / (f_target(k)^2 * L);
|
||||
|
||||
% Normal-dispersion branch (λ < λ0)
|
||||
fun = @(lambda) -(S0_si/4).*(lambda - (lambda0^4)./(lambda.^3)).*lambda.^2 - RHS;
|
||||
|
||||
% Limit the search to [λ_min, λ0)
|
||||
try
|
||||
lambda_sol = fzero(fun, [lambda_min, lambda0 * 0.999]);
|
||||
catch
|
||||
% If the zero is not within bounds, skip this point
|
||||
lambda_sol = NaN;
|
||||
end
|
||||
|
||||
% Validate solution
|
||||
if isnan(lambda_sol) || lambda_sol < lambda_min || lambda_sol > lambda_max
|
||||
lambda_vec(k) = NaN;
|
||||
Dacc_vec(k) = NaN;
|
||||
continue
|
||||
end
|
||||
|
||||
% Compute D(lambda) and accumulated dispersion
|
||||
D_lambda = (S0_si/4) * (lambda_sol - (lambda0^4)/(lambda_sol^3)) / 1e-6; % ps/(nm·km)
|
||||
Dacc_val = D_lambda * (L/1000); % ps/nm
|
||||
|
||||
% Sanity bound on dispersion (avoid unphysical > ±100 ps/nm)
|
||||
if abs(Dacc_val) > 100
|
||||
lambda_vec(k) = NaN;
|
||||
Dacc_vec(k) = NaN;
|
||||
else
|
||||
lambda_vec(k) = lambda_sol;
|
||||
Dacc_vec(k) = Dacc_val;
|
||||
end
|
||||
end
|
||||
end
|
||||
142
Theory/Dissertation/dispersion_contour_bivariate.m
Normal file
142
Theory/Dissertation/dispersion_contour_bivariate.m
Normal file
@@ -0,0 +1,142 @@
|
||||
% Festen Betriebsparameter
|
||||
lambda = 1290; % nm
|
||||
L = 1; % km
|
||||
mu_zwd = 1317; % nm
|
||||
sigma_zwd = 2; % nm
|
||||
mu_s0 = 0.0872; % ps / nm2 km
|
||||
sigma_s0 = 0.0012; % ps / nm2 km
|
||||
rho = -0.5; % Korrelation
|
||||
|
||||
% Gitter für lambda0 und S0
|
||||
lambda0_vec = linspace(mu_zwd-10, mu_zwd+10, 100);
|
||||
S0_vec = linspace(mu_s0-0.01, mu_s0+0.01, 100);
|
||||
|
||||
% Korrigierte meshgrid Reihenfolge
|
||||
[S0, Lambda0] = meshgrid(S0_vec, lambda0_vec);
|
||||
|
||||
% Dispersion berechnen
|
||||
D = (S0./4) .* ( lambda - (Lambda0.^4)./(lambda^3) ) * L;
|
||||
|
||||
% 2D Verteilung (Bivariate Gauss) berechnen
|
||||
Z_x = (S0 - mu_s0) / sigma_s0;
|
||||
Z_y = (Lambda0 - mu_zwd) / sigma_zwd;
|
||||
PDF_2D = exp(-1 / (2 * (1 - rho^2)) * (Z_x.^2 - 2 * rho .* Z_x .* Z_y + Z_y.^2));
|
||||
|
||||
%% Plot zusammenbauen
|
||||
figure('Color','w');
|
||||
hold on % EINZIGES hold on für den gesamten Plot!
|
||||
|
||||
% --- 1. ZUERST: 2D Verteilung (Bivariate Gauss) "ganz unten" ---
|
||||
numLevels_2D = 6;
|
||||
colors_2D = cbrewer2('Greys', numLevels_2D+0);
|
||||
colors_2D = colors_2D(1:numLevels_2D,:);
|
||||
% Nur die Anzahl der Level übergeben!
|
||||
[C2, h2] = contourf(S0, Lambda0, PDF_2D, numLevels_2D);
|
||||
h2.HandleVisibility='off';
|
||||
% Colormap für die rote Fläche setzen
|
||||
|
||||
colormap(gcf, colors_2D(1:end,:));
|
||||
try
|
||||
clim([min(PDF_2D(:)), max(PDF_2D(:))]);
|
||||
catch
|
||||
caxis([min(PDF_2D(:)), max(PDF_2D(:))]);
|
||||
end
|
||||
|
||||
h2.EdgeColor = 'none'; % Keine schwarzen Ränder
|
||||
|
||||
% --- 2. DARÜBER: Dispersions-Konturlinien ---
|
||||
numLevels_D = 9;
|
||||
% Erzeuge glatte, auf 1 Nachkommastelle gerundete Werte
|
||||
levels_D = round(linspace(min(D(:)), max(D(:)), numLevels_D), 1);
|
||||
levels_D = unique(levels_D);
|
||||
cmap_bg = flip(cbrewer2('Blues', length(levels_D)+3));
|
||||
|
||||
for i = 1:length(levels_D)
|
||||
% Konturlinien zeichnen (explizit Schwarz)
|
||||
[C,h] = contour(S0, Lambda0, D, [levels_D(i), levels_D(i)], ...
|
||||
'Color', cmap_bg(i,:),...
|
||||
'LineWidth', 1, ...
|
||||
'ShowText', 'off','handlevisibility','off');
|
||||
if i == 1
|
||||
h.HandleVisibility='on';
|
||||
h.DisplayName='$D(\lambda=1290)$';
|
||||
end
|
||||
end
|
||||
|
||||
% --- 3. MANUELLE TEXTBOXEN AUF DEN LINIEN ---
|
||||
% Wähle eine feste S0-Position für alle Beschriftungen (z.B. bei 0.082)
|
||||
S0_label = 0.095;
|
||||
|
||||
for i = 1:length(levels_D)
|
||||
% Berechne exakte ZDW (Y-Koordinate) durch Umstellen der D-Formel:
|
||||
% Lambda0 = (lambda^3 * (lambda - 4*D / (S0 * L)))^(1/4)
|
||||
zdw_label = (lambda^3 * (lambda - 4*levels_D(i) / (S0_label * L)))^0.25;
|
||||
|
||||
% Nur zeichnen, wenn der Punkt auch im sichtbaren Plot-Bereich liegt
|
||||
if zdw_label >= min(lambda0_vec) && zdw_label <= max(lambda0_vec)
|
||||
text(S0_label, zdw_label, sprintf('%0.1f', levels_D(i)), ...
|
||||
'Color', 'k', ...
|
||||
'BackgroundColor', 'w', ... % Weiße Box überdeckt die schwarze Linie!
|
||||
'Margin', 2, ... % Abstand der Box zum Text
|
||||
'HorizontalAlignment', 'center', ...
|
||||
'VerticalAlignment', 'middle', ...
|
||||
'FontSize', 10);
|
||||
end
|
||||
end
|
||||
|
||||
% --- 3. GANZ OBEN: Randverteilungen (1D Gauss) an den Achsen ---
|
||||
% S0 Verteilung (unten)
|
||||
s0_vals = linspace(min(S0_vec), max(S0_vec), 500);
|
||||
gauss_s0 = exp(-0.5*((s0_vals - mu_s0)/sigma_s0).^2);
|
||||
scale_s0 = 4;
|
||||
y_s0_base = min(lambda0_vec);
|
||||
plot(s0_vals, y_s0_base + gauss_s0 * scale_s0, 'LineWidth', 1,'LineStyle','--','DisplayName','$S_0$','Color',[0,0,0],'HandleVisibility','off');
|
||||
% ANNOTATION S0: Automatisch platziert leicht über dem Peak
|
||||
str_s0 = sprintf('\\mu_{S0} = %.4f\n\\sigma_{S0} = %.4f', mu_s0, sigma_s0);
|
||||
text(0.0915,1308, str_s0, ...
|
||||
'Interpreter', 'tex', ...
|
||||
'HorizontalAlignment', 'left', ... % Entspricht 'right' in TikZ
|
||||
'VerticalAlignment', 'middle', ...
|
||||
'BackgroundColor', 'w', ... % Entspricht 'fill=white'
|
||||
'EdgeColor', 'k', ... % Entspricht 'draw=black'
|
||||
'Margin', 1, ... % Entspricht 'inner sep=1pt'
|
||||
'FontSize', 10);
|
||||
|
||||
% ZDW Verteilung (links)
|
||||
% ZDW Verteilung (links)
|
||||
zwd_vals = linspace(min(lambda0_vec), max(lambda0_vec), 500);
|
||||
gauss_zwd = exp(-0.5*((zwd_vals - mu_zwd)/sigma_zwd).^2);
|
||||
scale_zwd = 0.005;
|
||||
x_zwd_base = min(S0_vec);
|
||||
plot(x_zwd_base + gauss_zwd * scale_zwd, zwd_vals, 'LineWidth', 1,'LineStyle','--','DisplayName','ZDW','Color',[0,0,0],'HandleVisibility','off');
|
||||
|
||||
% ANNOTATION ZDW: Automatisch platziert leicht rechts neben dem Peak
|
||||
str_zwd = sprintf('\\mu_{ZDW} = %.1f\n\\sigma_{ZDW} = %.1f', mu_zwd, sigma_zwd);
|
||||
text(0.079,1312, str_zwd, ...
|
||||
'Interpreter', 'tex', ...
|
||||
'HorizontalAlignment', 'left', ... % Entspricht 'right' in TikZ
|
||||
'VerticalAlignment', 'middle', ...
|
||||
'BackgroundColor', 'w', ... % Entspricht 'fill=white'
|
||||
'EdgeColor', 'k', ... % Entspricht 'draw=black'
|
||||
'Margin', 1, ... % Entspricht 'inner sep=1pt'
|
||||
'FontSize', 10);
|
||||
|
||||
% Hilfslinien für die Mittelwerte
|
||||
% xline(mu_s0,'LineWidth',0.5,'HandleVisibility','off','LineStyle',':');
|
||||
% yline(mu_zwd,'LineWidth',0.5,'HandleVisibility','off','LineStyle',':');
|
||||
|
||||
% --- Achsenbeschriftung, Titel & Formatierung ---
|
||||
xlabel('$S_0$ [$\nicefrac{\text{ps}}{(\text{nm}^2\text{ km})}$]', 'FontSize', 12);
|
||||
ylabel('ZDW [nm]', 'FontSize', 12);
|
||||
% title(sprintf('Dispersion: %d km; %d nm', L, lambda), 'FontSize', 14);
|
||||
|
||||
grid on
|
||||
% Exakte Begrenzung, damit die Randverteilungen bündig anliegen
|
||||
axis([min(S0_vec) max(S0_vec) min(lambda0_vec) max(lambda0_vec)]);
|
||||
|
||||
% legend;
|
||||
hold off % EINZIGES hold off ganz am Ende!
|
||||
|
||||
%% Export
|
||||
% Hier erzwingen wir die rote Colormap für pgfplots, damit mat2tikz es nicht blau exportiert!
|
||||
mat2tikz_improved("C:/Users/Silas/Documents/6971e0b65b380ca6d71c837f/02_IMDD_System/tikz/dispersion/dispersion_contour_bi2.tikz");
|
||||
219
Theory/Dissertation/mach_zehnder_modulator.m
Normal file
219
Theory/Dissertation/mach_zehnder_modulator.m
Normal file
@@ -0,0 +1,219 @@
|
||||
|
||||
|
||||
% Parameters
|
||||
c0 = physconst('lightspeed'); % [m/s]
|
||||
lambda0 = 1310e-9; % [m]
|
||||
omega0 = 2*pi*c0/lambda0;
|
||||
|
||||
L = 5e-3; % [m] effective phase section length (set as needed)
|
||||
n_eff = 2.2; % [-] effective index (set as needed)
|
||||
|
||||
E0 = 1; % field amplitude (arbitrary)
|
||||
Vpi = 3.2; % [V] half-wave voltage (your V_pi)
|
||||
|
||||
% Drive
|
||||
f0 = 1e9; % [Hz]
|
||||
fs = 200e9; % [Hz]
|
||||
Nper = 2; % number of periods
|
||||
Vpp = 0.6*Vpi; % [V] peak-to-peak of v_drive(t)
|
||||
|
||||
biasV = 1.1; % [V] differential bias added to v_drive
|
||||
|
||||
% Time axis + differential drive voltage v_drive(t)
|
||||
T = Nper/f0;
|
||||
t = (0:1/fs:T-1/fs).';
|
||||
|
||||
|
||||
if 1
|
||||
% SINE
|
||||
v_drive = biasV + (Vpp/2)*sin(2*pi*f0*t); % v_drive(t) (peak = Vpp/2)
|
||||
|
||||
else
|
||||
|
||||
% --- Generate PAM-4 Sequence ---
|
||||
symbols = linspace(-0.5, 0.5, 4);
|
||||
num_symbols = 12; % Increased slightly for better visual
|
||||
rng(44);
|
||||
random_data = symbols(randi(4, 1, num_symbols));
|
||||
|
||||
% Create time axis (Note: T is your period from the sine code)
|
||||
sps = round(T * fs);
|
||||
t = (0:1/fs:(num_symbols*T)-1/fs).';
|
||||
|
||||
% Upsample to rectangular waveform
|
||||
v_pam = repelem(random_data, sps).';
|
||||
|
||||
% Apply swing and bias: Resulting range is [biasV-Vpp/2, biasV+Vpp/2]
|
||||
v_drive_rect = biasV + (v_pam * Vpp);
|
||||
|
||||
% --- Round the edges ---
|
||||
filter_span = round(sps/1.5); % Increased span for smoother "rounding"
|
||||
window = gausswin(filter_span);
|
||||
window = window / sum(window);
|
||||
|
||||
% Apply filter (using 'same' to keep vector length, but be aware of edge transients)
|
||||
v_drive = conv(v_drive_rect, window, 'same');
|
||||
|
||||
end
|
||||
|
||||
|
||||
% Analytic
|
||||
v_ = linspace(-1,2, 2001);
|
||||
% Field transfer function (amplitude)
|
||||
Field_mzm_analytic = cos((pi/2)*v_);
|
||||
|
||||
% Power transfer function (intensity)
|
||||
P_mzm_analytic = Field_mzm_analytic.^2;
|
||||
|
||||
% Imbalance factor in YOUR notation:
|
||||
rho = 1;
|
||||
|
||||
% Push-pull branch voltages (consistent with v_drive = v1 - v2)
|
||||
v1 = +0.5*v_drive; % arm 1
|
||||
v2 = -0.5*v_drive; % arm 2
|
||||
|
||||
% Phases phi1, phi2
|
||||
phi1 = pi * v1 / Vpi;
|
||||
phi2 = pi * v2 / Vpi;
|
||||
|
||||
% Fields: E_in and E_out (exactly your Eq. (mzm_e_field))
|
||||
E_in = E0 .* exp(1i*omega0*t);
|
||||
|
||||
common_phase = exp(-1i * (omega0*L*n_eff/c0)); % exp(-j*omega0*L*n_eff/c0)
|
||||
|
||||
E_out = E0 .* exp(1i*omega0*t) .* common_phase .* 0.5 .* ...
|
||||
( exp(-1i*phi1) + rho .* exp(-1i*phi2) );
|
||||
|
||||
% Transfer function (numerical): E_out/E_in
|
||||
H_num = E_out ./ E_in;
|
||||
|
||||
% Power (normalized)
|
||||
Pnorm_num = abs(H_num).^2; % since |E_out/E_in|^2
|
||||
|
||||
% Ideal TF (analytic) for comparison (rho=1, push-pull)
|
||||
H_ideal = common_phase .* cos( (pi/2) * (v_drive./Vpi) );
|
||||
|
||||
Pnorm_ideal = abs(H_ideal).^2;
|
||||
Pnorm_math = cos( (pi/2) * (v_drive./Vpi) ).^2;
|
||||
|
||||
|
||||
set(groot, 'defaultLegendInterpreter', 'tex');
|
||||
set(groot, 'defaultAxesTickLabelInterpreter', 'tex');
|
||||
set(groot, 'defaultTextInterpreter', 'tex');
|
||||
|
||||
% Normalized voltage axis (multiples of Vpi)
|
||||
v_norm = v_drive./Vpi;
|
||||
|
||||
colfield = [0,0,0]; %is black
|
||||
colpow = linspecer(2);
|
||||
colpow = colpow(1,:);
|
||||
colvdrive = linspecer(2);
|
||||
colvdrive = colvdrive(2,:);
|
||||
|
||||
%% SIGNAL IN
|
||||
figure(1); clf
|
||||
plot(v_norm,t*1e9, 'LineWidth', 1.0,'Color',colvdrive); grid on;
|
||||
ylabel('t [ns]'); xlabel('v_{drive}(t)/V_\pi');
|
||||
title('Drive voltage (normalized)');
|
||||
xlim([min(v_) max(v_)]);
|
||||
% mat2tikz_improved('C:\Users\Silas\Documents\6971e0b65b380ca6d71c837f\02_IMDD_System\tikz\linear_casee\mzm_input_signal.tex');
|
||||
|
||||
|
||||
%% IN/OUT (static transfer) — normalized x-axis + analytic curve
|
||||
if 0
|
||||
figure(2); clf
|
||||
plot(v_, Field_mzm_analytic, 'LineWidth', 1.2,'LineStyle','--','Color',colfield); hold on;% analytic power TF
|
||||
plot(v_, P_mzm_analytic, 'LineWidth', 1.2, 'Color',colpow); hold on;% analytic power TF
|
||||
% show input time signal
|
||||
plot(v_norm,-1+t*1e9, 'LineWidth', 1.0,'Color',colvdrive); grid on;
|
||||
% show output time signal
|
||||
plot(2+t*1e9, Pnorm_num, 'LineWidth', 1.0,'DisplayName','Intensity', 'Color',colvdrive); hold on;
|
||||
plot(2+t*1e9, real(H_ideal), '--', 'LineWidth', 1.0,'DisplayName','Field','Color',colfield); hold on;
|
||||
scatter(v_norm, Pnorm_num, 12, '.', 'LineWidth', 1,'MarkerEdgeColor',colvdrive);
|
||||
scatter(biasV./Vpi,(cos((pi/2)*biasV./Vpi)^2),10,'Marker','o');
|
||||
line([min(v_drive), min(v_drive)]./Vpi,[(cos((pi/2)*min(v_drive)./Vpi)^2), -2],'linewidth',0.5,'color','black','linestyle','--');
|
||||
line([max(v_drive) max(v_drive)]./Vpi,[(cos((pi/2)*max(v_drive)./Vpi)^2), -2],'linewidth',0.5,'color','black','linestyle','--');
|
||||
xline([min(v_norm) max(v_norm)])
|
||||
|
||||
grid on;
|
||||
xlabel('v_{drive}(t)/V_\pi'); ylabel('|E_{out}/E_{in}|^2');
|
||||
% legend
|
||||
xlim([min(v_) max(v_)+1]);
|
||||
ylim([-1 1]);
|
||||
|
||||
% mat2tikz_improved('C:\Users\Silas\Documents\6971e0b65b380ca6d71c837f\02_IMDD_System\tikz\mzm.tex');
|
||||
end
|
||||
%%
|
||||
|
||||
figure(3); clf
|
||||
plot(v_, Field_mzm_analytic, 'LineWidth', 1.2,'LineStyle','--','Color',colfield); hold on;% analytic power TF
|
||||
plot(v_, P_mzm_analytic, 'LineWidth', 1.2, 'Color',colpow); hold on;% analytic power TF
|
||||
|
||||
scatter(v_norm, Pnorm_num, 12, '.', 'LineWidth', 1,'MarkerEdgeColor',colvdrive);
|
||||
scatter(biasV./Vpi,(cos((pi/2)*biasV./Vpi)^2),10,'Marker','o');
|
||||
line([min(v_drive), min(v_drive)]./Vpi,[(cos((pi/2)*min(v_drive)./Vpi)^2), -2],'linewidth',0.5,'color','black','linestyle','--');
|
||||
line([max(v_drive) max(v_drive)]./Vpi,[(cos((pi/2)*max(v_drive)./Vpi)^2), -2],'linewidth',0.5,'color','black','linestyle','--');
|
||||
xline([min(v_norm) max(v_norm)])
|
||||
|
||||
grid on;
|
||||
xlabel('v_{drive}(t)/V_\pi'); ylabel('|E_{out}/E_{in}|^2');
|
||||
% legend
|
||||
xlim([min(v_) max(v_)]);
|
||||
ylim([-1 1]);
|
||||
|
||||
% mat2tikz_improved('C:\Users\Silas\Documents\6971e0b65b380ca6d71c837f\02_IMDD_System\tikz\mzm_tramsfer_function_matlab.tex');
|
||||
|
||||
|
||||
%%
|
||||
|
||||
figure(4); clf
|
||||
% plot(v_, Field_mzm_analytic, 'LineWidth', 1.2,'LineStyle','--','Color',colfield); hold on;% analytic power TF
|
||||
plot(v_, P_mzm_analytic, 'LineWidth', 1.2, 'Color','black'); hold on;% analytic power TF
|
||||
input_dots = linspace(min(v_drive),max(v_drive),4)./Vpi;
|
||||
% input_dots = unique(v_drive_rect)./Vpi;
|
||||
output_dots = (cos((pi/2)*input_dots).^2);
|
||||
scatter(input_dots,output_dots,'Marker','x','LineWidth',1,'MarkerEdgeColor','black');
|
||||
scatter(input_dots,zeros(size(input_dots)),'Marker','^','LineWidth',2,'MarkerEdgeColor','black');
|
||||
% scatter(ones(size(input_dots)),output_dots,'Marker','<','LineWidth',2,'MarkerEdgeColor','black');
|
||||
|
||||
for i = 1:numel(input_dots)
|
||||
% Draw the dashed projection lines
|
||||
line([input_dots(i), input_dots(i)], [output_dots(i), 0], 'linewidth', 0.5, 'color', 'black', 'linestyle', '--', 'handlevisibility', 'off');
|
||||
line([input_dots(i), 1], [output_dots(i), output_dots(i)], 'linewidth', 0.5, 'color', 'black', 'linestyle', '--', 'handlevisibility', 'off');
|
||||
|
||||
% Add the level annotation boxes near the output (y-axis)
|
||||
% Adjust the '1.05' to move the box further right or 'output_dots(i)' for height
|
||||
j = 3-(i-1)*2;
|
||||
text(1, output_dots(i), sprintf('Level %d', j), ...
|
||||
'FontSize', 8, ...
|
||||
'EdgeColor', 'black', ...
|
||||
'BackgroundColor', 'white', ...
|
||||
'Margin', 2);
|
||||
end
|
||||
|
||||
xlim([0,1.5]);
|
||||
ylim([0,1])
|
||||
|
||||
% line([min(v_drive), min(v_drive)]./Vpi,[(cos((pi/2)*min(v_drive)./Vpi)^2), 0],'linewidth',0.5,'color','black','linestyle','--');
|
||||
% line([max(v_drive), max(v_drive)]./Vpi,[(cos((pi/2)*max(v_drive)./Vpi)^2), 0],'linewidth',0.5,'color','black','linestyle','--');
|
||||
|
||||
% mat2tikz_improved('C:\Users\Silas\Documents\6971e0b65b380ca6d71c837f\02_IMDD_System\tikz\linear_casee\mzm_tf.tex');
|
||||
% xticks(sort(input_dots));
|
||||
% yticks(sort(output_dots));
|
||||
grid off
|
||||
|
||||
|
||||
%%
|
||||
% % FIELD TF (only field here; do not mix power into this figure)
|
||||
figure(5); clf
|
||||
% plot(t*1e9, real(H_num), 'LineWidth', 1.0); hold on;
|
||||
% plot(t*1e9, real(H_ideal), '--', 'LineWidth', 1.0,'DisplayName','Field','Color',colfield); hold on;
|
||||
plot(t*1e9, Pnorm_num, 'LineWidth', 1.0,'DisplayName','Intensity', 'Color',colpow); hold on;
|
||||
grid on;
|
||||
xlabel('t [ns]'); ylabel('Re\{E_{out}/E_{in}\}');
|
||||
legend
|
||||
yticks(sort(output_dots));
|
||||
% mat2tikz_improved('C:\Users\Silas\Documents\6971e0b65b380ca6d71c837f\02_IMDD_System\tikz\linear_casee\mzm_output_signal.tex');
|
||||
|
||||
|
||||
|
||||
191
Theory/Dissertation/mach_zehnder_nonlinearities.m
Normal file
191
Theory/Dissertation/mach_zehnder_nonlinearities.m
Normal file
@@ -0,0 +1,191 @@
|
||||
|
||||
|
||||
%MZM demo -> sinus als eingang in MZM intensity TF: 2nd and 3rd roder
|
||||
%nonlinearities in PSD visible
|
||||
|
||||
clear; close all; clc;
|
||||
|
||||
set(groot,'defaultLegendInterpreter','tex');
|
||||
set(groot,'defaultAxesTickLabelInterpreter','tex');
|
||||
set(groot,'defaultTextInterpreter','tex');
|
||||
|
||||
%% Fixed parameters
|
||||
Vpi = 5.2; % [V]
|
||||
f0 = 10e9; % [Hz]
|
||||
fs = 400e9; % [Hz]
|
||||
Nper = 500; % periods for PSD quality
|
||||
|
||||
t = (0:1/fs:(Nper/f0 - 1/fs)).';
|
||||
w = 2*pi*f0;
|
||||
|
||||
% PSD settings
|
||||
nfft = 2^(nextpow2(min(length(t), 2^18))-1);
|
||||
win = hann(2^12);
|
||||
ovl = round(0.5*numel(win));
|
||||
|
||||
N_bessel = 10;
|
||||
|
||||
%% UI defaults (normalized)
|
||||
vb0 = 1.0; % Vbias/Vpi
|
||||
vpp0 = 0.5; % Vpp/Vpi
|
||||
|
||||
%% Figure + layout
|
||||
fig = figure('Color','w','Name','MZM Nonlinearity: Bias & Drive','NumberTitle','off');
|
||||
tl = tiledlayout(fig,1,2,'TileSpacing','compact','Padding','compact');
|
||||
|
||||
axTF = nexttile(tl,1); hold(axTF,'on'); grid(axTF,'on');
|
||||
axPSD = nexttile(tl,2); hold(axPSD,'on'); grid(axPSD,'on');
|
||||
|
||||
% Scatter placeholders
|
||||
hEx = scatter(axTF, nan, nan, 6, '.', 'DisplayName','Exact');
|
||||
hTa = scatter(axTF, nan, nan, 6, '.', 'DisplayName','Taylor (3rd order)');
|
||||
hJa = scatter(axTF, nan, nan, 6, '.', 'DisplayName',sprintf('Jacobi--Anger (N=%d)',N_bessel));
|
||||
hBias = plot(axTF, nan, nan, 'ko', 'MarkerFaceColor','k', 'DisplayName','Bias');
|
||||
|
||||
xlabel(axTF,'v/V_\pi'); ylabel(axTF,'P_{out}/P_0'); % <-- TeX (no $...$)
|
||||
title(axTF,'Transfer characteristic (scatter)');
|
||||
ylim(axTF,[-0.1 1.1]);
|
||||
xlim(axTF,[0 2]);
|
||||
legend(axTF,'Location','best');
|
||||
|
||||
% PSD placeholders
|
||||
hPex = plot(axPSD, nan, nan, 'LineWidth',2.0, 'DisplayName','Exact');
|
||||
hPta = plot(axPSD, nan, nan, '-', 'LineWidth',1.5, 'DisplayName','Taylor (3rd order)');
|
||||
hPja = plot(axPSD, nan, nan, '--', 'LineWidth',0.1, 'DisplayName',sprintf('Jacobi--Anger (N=%d)',N_bessel));
|
||||
|
||||
xlabel(axPSD,'Frequency [GHz]'); ylabel(axPSD,'PSD [dB/Hz]');
|
||||
title(axPSD,'Output spectrum (PSD)');
|
||||
xlim(axPSD,[0 10*f0/1e9]);
|
||||
legend(axPSD,'Location','best');
|
||||
|
||||
%% Sliders + labels
|
||||
sH = 0.05; mL = 0.08; wS = 0.38; y1 = 0.04; dy = 0.06;
|
||||
|
||||
uicontrol(fig,'Style','text','Units','normalized', ...
|
||||
'Position',[mL, y1+dy, wS, 0.03], ...
|
||||
'String','v_{bias}/V_{\pi}','HorizontalAlignment','left');
|
||||
|
||||
sBias = uicontrol(fig,'Style','slider','Units','normalized', ...
|
||||
'Position',[mL, y1+dy-0.02, wS, sH], ...
|
||||
'Min',0,'Max',2,'Value',vb0);
|
||||
|
||||
tBiasVal = uicontrol(fig,'Style','text','Units','normalized', ...
|
||||
'Position',[mL+wS+0.01, y1+dy, 0.08, 0.03], ...
|
||||
'String',sprintf('%.3f',vb0),'HorizontalAlignment','left');
|
||||
|
||||
uicontrol(fig,'Style','text','Units','normalized', ...
|
||||
'Position',[mL, y1, wS, 0.03], ...
|
||||
'String','v_{pp}/V_{\pi}','HorizontalAlignment','left');
|
||||
|
||||
sVpp = uicontrol(fig,'Style','slider','Units','normalized', ...
|
||||
'Position',[mL, y1-0.02, wS, sH], ...
|
||||
'Min',0,'Max',2,'Value',vpp0);
|
||||
|
||||
tVppVal = uicontrol(fig,'Style','text','Units','normalized', ...
|
||||
'Position',[mL+wS+0.01, y1, 0.08, 0.03], ...
|
||||
'String',sprintf('%.3f',vpp0),'HorizontalAlignment','left');
|
||||
|
||||
%% Store handles in fig.UserData (so callback can always access them)
|
||||
S = struct();
|
||||
S.Vpi = Vpi; S.f0 = f0; S.fs = fs; S.w = w; S.t = t;
|
||||
S.win = win; S.ovl = ovl; S.nfft = nfft;
|
||||
S.N_bessel = N_bessel;
|
||||
|
||||
S.axTF = axTF; S.axPSD = axPSD;
|
||||
S.hEx = hEx; S.hTa = hTa; S.hJa = hJa; S.hBias = hBias;
|
||||
S.hPex = hPex; S.hPta = hPta; S.hPja = hPja;
|
||||
|
||||
S.sBias = sBias; S.sVpp = sVpp;
|
||||
S.tBiasVal = tBiasVal; S.tVppVal = tVppVal;
|
||||
|
||||
fig.UserData = S;
|
||||
|
||||
%% Continuous update while dragging
|
||||
addlistener(sBias,'Value','PostSet',@(~,~)updatePlots(fig));
|
||||
addlistener(sVpp ,'Value','PostSet',@(~,~)updatePlots(fig));
|
||||
|
||||
% Initial draw
|
||||
updatePlots(fig);
|
||||
|
||||
%% ===== Callback (separate function at end of script) =====
|
||||
function updatePlots(fig)
|
||||
S = fig.UserData;
|
||||
|
||||
% Read slider values (normalized)
|
||||
vb_n = S.sBias.Value; % Vbias/Vpi
|
||||
vpp_n = S.sVpp.Value; % Vpp/Vpi
|
||||
|
||||
% Update value labels
|
||||
S.tBiasVal.String = sprintf('%.3f', vb_n);
|
||||
S.tVppVal.String = sprintf('%.3f', vpp_n);
|
||||
|
||||
% Convert to volts / amplitude
|
||||
Vpi = S.Vpi;
|
||||
Vbias = vb_n * Vpi;
|
||||
Vpp = vpp_n * Vpi;
|
||||
Vm = Vpp/2;
|
||||
|
||||
t = S.t; w = S.w;
|
||||
|
||||
% Drive
|
||||
v = Vbias + Vm*cos(w*t);
|
||||
x = v./Vpi;
|
||||
|
||||
% Exact intensity
|
||||
P_exact = cos((pi/2)*x).^2;
|
||||
|
||||
% Taylor 3rd order around Vbias
|
||||
k = (pi/2)/Vpi;
|
||||
vb = Vbias;
|
||||
g0 = cos(k*vb)^2;
|
||||
g1 = -k*sin(2*k*vb);
|
||||
g2 = -2*k^2*cos(2*k*vb);
|
||||
g3 = 4*k^3*sin(2*k*vb);
|
||||
dv = v - vb;
|
||||
P_taylor = g0 + g1*dv + 0.5*g2*dv.^2 + (1/6)*g3*dv.^3;
|
||||
|
||||
% Jacobi–Anger / Bessel series (truncated)
|
||||
a = pi*(Vbias/Vpi);
|
||||
b = pi*(Vm/Vpi);
|
||||
N = S.N_bessel;
|
||||
|
||||
P_ja = 0.5*ones(size(t));
|
||||
P_ja = P_ja + 0.5*cos(a)*besselj(0,b);
|
||||
|
||||
for m = 0:floor((N-1)/2)
|
||||
n = 2*m + 1;
|
||||
P_ja = P_ja - (0.5*2)*sin(a)*besselj(n,b).*cos(n*w*t);
|
||||
end
|
||||
for m = 1:floor(N/2)
|
||||
n = 2*m;
|
||||
P_ja = P_ja - (0.5*2)*cos(a)*besselj(n,b).*cos(n*w*t);
|
||||
end
|
||||
|
||||
% Update TF scatter
|
||||
S.hEx.XData = x; S.hEx.YData = P_exact;
|
||||
S.hTa.XData = x; S.hTa.YData = P_taylor;
|
||||
S.hJa.XData = x; S.hJa.YData = P_ja;
|
||||
|
||||
xb = Vbias/Vpi;
|
||||
pb = cos((pi/2)*xb)^2;
|
||||
S.hBias.XData = xb; S.hBias.YData = pb;
|
||||
|
||||
xpad = 0.05*(max(x)-min(x) + eps);
|
||||
% xlim(S.axTF,[min(x)-xpad, max(x)+xpad]);
|
||||
ylim(S.axTF,[-0.1 1.1]);
|
||||
|
||||
% PSDs
|
||||
fs = S.fs;
|
||||
[Se,f] = pwelch(P_exact-mean(P_exact), S.win, S.ovl, S.nfft, fs, 'onesided');
|
||||
[St,~] = pwelch(P_taylor-mean(P_taylor), S.win, S.ovl, S.nfft, fs, 'onesided');
|
||||
[Sj,~] = pwelch(P_ja-mean(P_ja), S.win, S.ovl, S.nfft, fs, 'onesided');
|
||||
|
||||
S.hPex.XData = f/1e9; S.hPex.YData = 10*log10(Se + realmin);
|
||||
S.hPta.XData = f/1e9; S.hPta.YData = 10*log10(St + realmin);
|
||||
S.hPja.XData = f/1e9; S.hPja.YData = 10*log10(Sj + realmin);
|
||||
|
||||
xlim(S.axPSD,[0 10*(S.f0)/1e9]);
|
||||
ylim(S.axPSD,[-180 -80]);
|
||||
|
||||
drawnow limitrate;
|
||||
end
|
||||
66
Theory/Dissertation/mach_zehnder_nonlinearities_taylor.m
Normal file
66
Theory/Dissertation/mach_zehnder_nonlinearities_taylor.m
Normal file
@@ -0,0 +1,66 @@
|
||||
% MZM bias sweep (physical coefficients) + field & power transfer functions
|
||||
% Uses your notation:
|
||||
% Pout/Pin = cos^2( (pi/2)*(v/Vpi) ), v = Vbias + Δv
|
||||
% Taylor around Vbias:
|
||||
% Pout/Pin ≈ a0 + a1 Δv + a2 Δv^2 + a3 Δv^3
|
||||
%
|
||||
% Coefficients (physical units):
|
||||
% a0 [-], a1 [1/V], a2 [1/V^2], a3 [1/V^3]
|
||||
%
|
||||
% Also plots:
|
||||
% Field TF amplitude: Eout/Ein = cos( (pi/2)*(Vbias/Vpi) )
|
||||
% Power TF: Pout/Pin = cos^2( (pi/2)*(Vbias/Vpi) )
|
||||
|
||||
clear; close all; clc;
|
||||
|
||||
set(groot,'defaultLegendInterpreter','tex');
|
||||
set(groot,'defaultAxesTickLabelInterpreter','tex');
|
||||
set(groot,'defaultTextInterpreter','tex');
|
||||
|
||||
%% Parameters
|
||||
Vpi = 3; % [V] device half-wave voltage
|
||||
xb = linspace(0, 2, 2001); % x_b = Vbias/Vpi
|
||||
Vbias = xb * Vpi; % [V]
|
||||
|
||||
%% Static transfer functions (at Vbias)
|
||||
H_field = cos((pi/2)*xb); % field amplitude TF (balanced MZM)
|
||||
T_power = H_field.^2; % intensity TF
|
||||
|
||||
%% Taylor coefficients (physical units)
|
||||
a0 = T_power;
|
||||
a1 = -(pi/(2*Vpi)) .* sin(pi*xb); % [1/V]
|
||||
a2 = -(pi^2/(4*Vpi^2)) .* cos(pi*xb); % [1/V^2]
|
||||
a3 = +(pi^3/(12*Vpi^3)) .* sin(pi*xb); % [1/V^3]
|
||||
A0 = a0;
|
||||
A1 = a1 * Vpi;
|
||||
A2 = a2 * Vpi^2;
|
||||
A3 = a3 * Vpi^3;
|
||||
|
||||
%% Plot
|
||||
figure('Color','w'); clf;
|
||||
% --- (1) Field + power TF vs bias ---
|
||||
hold on; grid on;
|
||||
plot(xb, H_field, 'LineWidth', 1.4, 'DisplayName','Field','Color','black','LineStyle','--');
|
||||
% plot(xb, T_power, 'LineWidth', 1.4, 'DisplayName','Intensity','Color','black','LineStyle','-');
|
||||
|
||||
|
||||
% --- (2) Physical Taylor coefficients vs bias ---
|
||||
% nexttile; hold on; grid on;
|
||||
plot(xb, a0, 'LineWidth', 1.4, 'DisplayName','Intensity','Color','black','LineStyle','-');
|
||||
plot(xb, a1, 'LineWidth', 1.4, 'DisplayName','Linear');
|
||||
plot(xb, a2, 'LineWidth', 1.4, 'DisplayName','Even');
|
||||
plot(xb, a3, 'LineWidth', 1.4, 'DisplayName','Odd');
|
||||
|
||||
xlabel('$V/V_\pi$','Interpreter','latex');
|
||||
ylabel('Transfer');
|
||||
title('Static transfer functions vs bias');
|
||||
xlim([min(xb) max(xb)]);
|
||||
ylim([-1.05 1.05]);
|
||||
legend('Location','best');
|
||||
|
||||
% Optional: tighten y-limits to avoid a0 dominating the view
|
||||
% Comment out if you prefer auto-scaling.
|
||||
yl = ylim;
|
||||
ylim([min(yl(1), -max(abs([a1 a2 a3]))*1.1), max(yl(2), max(abs([a1 a2 a3]))*1.1)]);
|
||||
|
||||
xticks([0:0.5:2]);
|
||||
116
Theory/Dissertation/pmd_vs_length.m
Normal file
116
Theory/Dissertation/pmd_vs_length.m
Normal file
@@ -0,0 +1,116 @@
|
||||
|
||||
% pmd_vs_length.m
|
||||
% ------------------------------------------------------------
|
||||
% Plots the Foschini-Poole (1991) analytical variance formula for PMD:
|
||||
%
|
||||
% sigma_T^2(z) = 2*(Delta_beta1)^2 * lc^2
|
||||
% * [ exp(-z/lc) + z/lc - 1 ]
|
||||
%
|
||||
% and overlays the two asymptotic regimes:
|
||||
% - Short-reach (z << lc) : sigma_T(z) ~ (Delta_beta1) * z
|
||||
% - Long-haul (z >> lc) : sigma_T(z) ~ Dp * sqrt(z)
|
||||
%
|
||||
% Parameters follow typical SMF values from the literature.
|
||||
% ------------------------------------------------------------
|
||||
|
||||
clear; clc;
|
||||
|
||||
%% ── Parameters ──────────────────────────────────────────────────────────────
|
||||
% Intrinsic local birefringence [ps/km]
|
||||
Delta_beta1 = 1e-1; % typical value, adjust as needed
|
||||
|
||||
% Correlation length [km]
|
||||
lc = 0.01; % ~50 m, typical for G.652 SMF
|
||||
|
||||
% PMD parameter [ps / sqrt(km)] — derived from the two above
|
||||
Dp = Delta_beta1 * sqrt(2 * lc);
|
||||
|
||||
% Distance axis [km]
|
||||
z_max = 10; % maximum distance
|
||||
z = linspace(0.001, z_max, 10000); % avoid z = 0 in log plot
|
||||
|
||||
%% ── Exact Foschini-Poole formula (sigma_T in ps) ────────────────────────────
|
||||
sigma_T_sq = 2 .* Delta_beta1.^2 .* lc.^2 ...
|
||||
.* (exp(-z ./ lc) + z ./ lc - 1);
|
||||
sigma_T = sqrt(sigma_T_sq); % RMS DGD [ps]
|
||||
|
||||
%% ── Asymptotic regimes ───────────────────────────────────────────────────────
|
||||
% Short-reach: linear growth (z << lc)
|
||||
sigma_T_short = Delta_beta1 .* z; % [ps]
|
||||
|
||||
% Long-haul: square-root growth (z >> lc)
|
||||
sigma_T_long = Dp .* sqrt(z); % [ps]
|
||||
|
||||
%% ── Plot ─────────────────────────────────────────────────────────────────────
|
||||
figure('Color','w','Position',[100 100 760 480]);
|
||||
hold on;
|
||||
|
||||
% Color palette (matching dissertation style)
|
||||
c_exact = [0.1216, 0.4706, 0.7059]; % blue – exact
|
||||
c_short = [0.8392, 0.1529, 0.1569]; % red – short-reach asymptote
|
||||
c_long = [0.1961, 0.6314, 0.1725]; % green – long-haul asymptote
|
||||
|
||||
% Exact solution
|
||||
h_exact = plot(z, sigma_T, ...
|
||||
'Color', c_exact, 'LineWidth', 2.0, ...
|
||||
'DisplayName', 'Exact (Foschini \& Poole)');
|
||||
|
||||
% Short-reach asymptote σ_T ≈ Δβ₁ · z
|
||||
h_short = plot(z, sigma_T_short, ...
|
||||
'Color', c_short, 'LineWidth', 1.4, 'LineStyle', '--', ...
|
||||
'DisplayName', '$\sigma_T \approx \Delta\beta_1 \cdot z$ \quad ($z \ll l_c$)');
|
||||
|
||||
% Long-haul asymptote σ_T ≈ D_p √z
|
||||
h_long = plot(z, sigma_T_long, ...
|
||||
'Color', c_long, 'LineWidth', 1.4, 'LineStyle', ':', ...
|
||||
'DisplayName', '$\sigma_T \approx D_p \sqrt{z}$ \quad ($z \gg l_c$)');
|
||||
|
||||
%% ── Axes & decoration ────────────────────────────────────────────────────────
|
||||
ax = gca;
|
||||
set(ax, 'XScale', 'log', 'YScale', 'log');
|
||||
|
||||
% ── X-axis: linear-style tick labels on log scale ────────────────────────
|
||||
x_ticks = [1e-3, 1e-2, 1e-1, 1, 10];
|
||||
ax.XTick = x_ticks;
|
||||
ax.XTickLabel = arrayfun(@(v) sprintf('%g km', v), x_ticks, 'UniformOutput', false);
|
||||
|
||||
% ── Y-axis: linear-style tick labels on log scale ────────────────────────
|
||||
y_ticks = [1e-3, 1e-2, 1e-1, 1, 10];
|
||||
ax.YTick = y_ticks;
|
||||
ax.YTickLabel = arrayfun(@(v) sprintf('%g ps', v), y_ticks, 'UniformOutput', false);
|
||||
|
||||
xlabel('Fiber length $z$ [km]', 'Interpreter', 'latex');
|
||||
ylabel('RMS DGD $\sigma_T$ [ps]', 'Interpreter', 'latex');
|
||||
|
||||
grid on; box on;
|
||||
xlim([min(z) z_max]);
|
||||
|
||||
legend([h_exact, h_short, h_long], ...
|
||||
'Location', 'northwest', 'Interpreter', 'latex', 'FontSize', 9);
|
||||
|
||||
% Parameter annotation
|
||||
anno_str = sprintf( ...
|
||||
['$\\Delta\\beta_1 = %.3g$ ps/km\n' ...
|
||||
'$l_c = %.0f$ m\n' ...
|
||||
'$D_p = \\Delta\\beta_1\\sqrt{2l_c} = %.4g$ ps/$\\sqrt{\\mathrm{km}}$'], ...
|
||||
Delta_beta1, lc*1e3, Dp);
|
||||
|
||||
annotation('textbox', [0.57 0.14 0.38 0.22], ...
|
||||
'String', anno_str, ...
|
||||
'Interpreter', 'latex', ...
|
||||
'FontSize', 8.5, ...
|
||||
'BackgroundColor','w', ...
|
||||
'EdgeColor', [0.5 0.5 0.5], ...
|
||||
'LineWidth', 0.8, ...
|
||||
'FitBoxToText', 'on');
|
||||
|
||||
%% ── Regime transition marker ─────────────────────────────────────────────────
|
||||
% Mark the crossover region around z = lc
|
||||
xline(lc, '--', ...
|
||||
'Color', [0.5 0.5 0.5], 'LineWidth', 0.8, ...
|
||||
'HandleVisibility', 'off');
|
||||
text(lc * 1.15, min(sigma_T)*3, '$l_c$', ...
|
||||
'Interpreter', 'latex', 'Color', [0.4 0.4 0.4], 'FontSize', 9);
|
||||
|
||||
%% ── Export (uncomment to use) ────────────────────────────────────────────────
|
||||
% mat2tikz_improved('C:\...\tikz\pmd\pmd_vs_length.tikz')
|
||||
50
Theory/Dissertation/power_fading.m
Normal file
50
Theory/Dissertation/power_fading.m
Normal file
@@ -0,0 +1,50 @@
|
||||
%% ============================================================
|
||||
% Minimal IM/DD Power Fading Plot
|
||||
% ============================================================
|
||||
|
||||
|
||||
%% Fiber and system parameters
|
||||
lambda0 = 1310e-9; % zero-dispersion wavelength [m]
|
||||
lambda = 1290e-9; % operating wavelength [m]
|
||||
S0 = 0.09; % dispersion slope [ps/(nm²·km)]
|
||||
L = 10e3; % fiber length [m]
|
||||
c = physconst('lightspeed');
|
||||
|
||||
%% Derived quantities
|
||||
S0_si = S0 * 1e3; % → s/m³
|
||||
D_lambda = (S0/4) * (lambda*1e9 - (lambda0*1e9)^4/(lambda*1e9)^3); % ps/(nm·km)
|
||||
D_si = D_lambda * 1e-6; % → s/m²
|
||||
b2 = -D_si * lambda^2 / (2*pi*c); % s²/m
|
||||
|
||||
Dacc = D_lambda * L;
|
||||
fprintf('Accumulated Dispersion: %.2f ps/nm \n', Dacc / 1e3);
|
||||
|
||||
%% Frequency grid
|
||||
f_max = 200e9;
|
||||
f = linspace(0, f_max, 5000); % [Hz]
|
||||
|
||||
%% IM/DD transfer function (power fading)
|
||||
phi = 2*pi^2 * b2 * f.^2 * L;
|
||||
H = abs(cos(phi));
|
||||
|
||||
%% Plot
|
||||
figure('Color','w');
|
||||
plot(f/1e9, 10*log10(H), 'LineWidth', 1,'Color','black');
|
||||
grid on; box on;
|
||||
xlabel('Frequency [GHz]');
|
||||
ylabel('Magnitude [dB]');
|
||||
% title(sprintf('IM/DD Power Fading: 10 km; 1275nm', lambda*1e9, L/1000),"Interpreter","latex");
|
||||
ylim([-20 0]);
|
||||
|
||||
%% Mark analytic null frequencies up to order 5
|
||||
max_order = 3;
|
||||
for n = 0:max_order
|
||||
f_null_n = sqrt( c*(2*n + 1)/(2*abs(D_si)*lambda^2*L) );
|
||||
xline(f_null_n/1e9, '--', 'LineWidth', 1.2, ...
|
||||
'Color', [0.1216, 0.4706, 0.7059]);
|
||||
text(f_null_n/1e9, -15, sprintf('$f_{\\mathrm{null}, %d}=%.1f$ GHz', n, f_null_n/1e9), ...
|
||||
'BackgroundColor', 'w', 'EdgeColor', 'k', 'Interpreter', 'latex', ...
|
||||
'HorizontalAlignment', 'center', 'VerticalAlignment', 'middle');
|
||||
end
|
||||
|
||||
% mat2tikz_improved('C:\Users\Silas\Documents\6971e0b65b380ca6d71c837f\02_IMDD_System\tikz\dispersion\power_fading.tikz')
|
||||
Reference in New Issue
Block a user