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
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
|
{
"cells": [
{
"cell_type": "markdown",
"id": "4a93eae1-5c0e-4cf1-846a-621d0fcdd29e",
"metadata": {},
"source": [
"# Fast Fourier Transforms (FFT)\n",
"\n",
"Let $x_0, \\ldots, x_{n-1}$ be complex numbers. The [Discrete Fourier Transform (DFT)](https://en.wikipedia.org/wiki/Discrete-time_Fourier_transform) is defined by the formula:\n",
"\n",
"$$\n",
" X_k = \\sum_{m=0}^{n-1} x_m e^{-i2\\pi k m/n} \\qquad k = 0,\\ldots,n-1,\n",
"$$\n",
"\n",
"Let's define a stream, consisting of exactly 20 sine waves in 1024 samples:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "554cb334-283a-40c1-89aa-5fe1fd41161c",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n",
"<svg \n",
" width=\"600\" height=\"480\"\n",
" viewBox=\"0 0 600 480\"\n",
" xmlns=\"http://www.w3.org/2000/svg\"\n",
" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n",
">\n",
"\n",
"<title>Gnuplot</title>\n",
"<desc>Produced by GNUPLOT 5.2 patchlevel 8 </desc>\n",
"\n",
"<g id=\"gnuplot_canvas\">\n",
"\n",
"<rect x=\"0\" y=\"0\" width=\"600\" height=\"480\" fill=\"none\"/>\n",
"<defs>\n",
"\n",
"\t<circle id='gpDot' r='0.5' stroke-width='0.5' stroke='currentColor'/>\n",
"\t<path id='gpPt0' stroke-width='0.222' stroke='currentColor' d='M-1,0 h2 M0,-1 v2'/>\n",
"\t<path id='gpPt1' stroke-width='0.222' stroke='currentColor' d='M-1,-1 L1,1 M1,-1 L-1,1'/>\n",
"\t<path id='gpPt2' stroke-width='0.222' stroke='currentColor' d='M-1,0 L1,0 M0,-1 L0,1 M-1,-1 L1,1 M-1,1 L1,-1'/>\n",
"\t<rect id='gpPt3' stroke-width='0.222' stroke='currentColor' x='-1' y='-1' width='2' height='2'/>\n",
"\t<rect id='gpPt4' stroke-width='0.222' stroke='currentColor' fill='currentColor' x='-1' y='-1' width='2' height='2'/>\n",
"\t<circle id='gpPt5' stroke-width='0.222' stroke='currentColor' cx='0' cy='0' r='1'/>\n",
"\t<use xlink:href='#gpPt5' id='gpPt6' fill='currentColor' stroke='none'/>\n",
"\t<path id='gpPt7' stroke-width='0.222' stroke='currentColor' d='M0,-1.33 L-1.33,0.67 L1.33,0.67 z'/>\n",
"\t<use xlink:href='#gpPt7' id='gpPt8' fill='currentColor' stroke='none'/>\n",
"\t<use xlink:href='#gpPt7' id='gpPt9' stroke='currentColor' transform='rotate(180)'/>\n",
"\t<use xlink:href='#gpPt9' id='gpPt10' fill='currentColor' stroke='none'/>\n",
"\t<use xlink:href='#gpPt3' id='gpPt11' stroke='currentColor' transform='rotate(45)'/>\n",
"\t<use xlink:href='#gpPt11' id='gpPt12' fill='currentColor' stroke='none'/>\n",
"\t<path id='gpPt13' stroke-width='0.222' stroke='currentColor' d='M0,1.330 L1.265,0.411 L0.782,-1.067 L-0.782,-1.076 L-1.265,0.411 z'/>\n",
"\t<use xlink:href='#gpPt13' id='gpPt14' fill='currentColor' stroke='none'/>\n",
"\t<filter id='textbox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>\n",
"\t <feFlood flood-color='white' flood-opacity='1' result='bgnd'/>\n",
"\t <feComposite in='SourceGraphic' in2='bgnd' operator='atop'/>\n",
"\t</filter>\n",
"\t<filter id='greybox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>\n",
"\t <feFlood flood-color='lightgrey' flood-opacity='1' result='grey'/>\n",
"\t <feComposite in='SourceGraphic' in2='grey' operator='atop'/>\n",
"\t</filter>\n",
"</defs>\n",
"<g fill=\"none\" color=\"white\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M53.9,444.0 L575.0,444.0 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,444.0 L62.9,444.0 M575.0,444.0 L566.0,444.0 '/>\t<g transform=\"translate(45.6,447.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"end\">\n",
"\t\t<text><tspan font-family=\"Arial\" >-1</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M53.9,337.5 L575.0,337.5 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,337.5 L62.9,337.5 M575.0,337.5 L566.0,337.5 '/>\t<g transform=\"translate(45.6,341.4)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"end\">\n",
"\t\t<text><tspan font-family=\"Arial\" >-0.5</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M53.9,231.0 L575.0,231.0 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,231.0 L62.9,231.0 M575.0,231.0 L566.0,231.0 '/>\t<g transform=\"translate(45.6,234.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"end\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M53.9,124.6 L575.0,124.6 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,124.6 L62.9,124.6 M575.0,124.6 L566.0,124.6 '/>\t<g transform=\"translate(45.6,128.5)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"end\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.5</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M53.9,18.1 L575.0,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,18.1 L62.9,18.1 M575.0,18.1 L566.0,18.1 '/>\t<g transform=\"translate(45.6,22.0)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"end\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 1</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M53.9,444.0 L53.9,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,444.0 L53.9,435.0 M53.9,18.1 L53.9,27.1 '/>\t<g transform=\"translate(53.9,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M158.1,444.0 L158.1,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M158.1,444.0 L158.1,435.0 M158.1,18.1 L158.1,27.1 '/>\t<g transform=\"translate(158.1,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.005</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M262.3,444.0 L262.3,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M262.3,444.0 L262.3,435.0 M262.3,18.1 L262.3,27.1 '/>\t<g transform=\"translate(262.3,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.01</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M366.6,444.0 L366.6,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M366.6,444.0 L366.6,435.0 M366.6,18.1 L366.6,27.1 '/>\t<g transform=\"translate(366.6,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.015</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M470.8,444.0 L470.8,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M470.8,444.0 L470.8,435.0 M470.8,18.1 L470.8,27.1 '/>\t<g transform=\"translate(470.8,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.02</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M575.0,444.0 L575.0,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M575.0,444.0 L575.0,435.0 M575.0,18.1 L575.0,27.1 '/>\t<g transform=\"translate(575.0,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.025</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,18.1 L53.9,444.0 L575.0,444.0 L575.0,18.1 L53.9,18.1 Z '/></g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"\t<g id=\"gnuplot_plot_1\" ><title>gnuplot_plot_1</title>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='rgb(148, 0, 211)' d='M54.4,205.0 L54.8,179.3 L55.3,154.4 L55.8,130.7 L56.3,108.4 L56.7,88.0 L57.2,69.8 L57.7,54.0\n",
"\t\tL58.2,40.8 L58.6,30.5 L59.1,23.3 L59.6,19.1 L60.0,18.2 L60.5,20.4 L61.0,25.8 L61.5,34.3\n",
"\t\tL61.9,45.8 L62.4,60.0 L62.9,76.8 L63.4,96.0 L63.8,117.1 L64.3,140.0 L64.8,164.3 L65.2,189.5\n",
"\t\tL65.7,215.4 L66.2,241.5 L66.7,267.5 L67.1,292.9 L67.6,317.3 L68.1,340.5 L68.6,362.1 L69.0,381.6\n",
"\t\tL69.5,398.9 L70.0,413.7 L70.4,425.7 L70.9,434.8 L71.4,440.9 L71.9,443.7 L72.3,443.4 L72.8,439.9\n",
"\t\tL73.3,433.3 L73.8,423.6 L74.2,411.0 L74.7,395.7 L75.2,377.9 L75.6,357.9 L76.1,336.0 L76.6,312.5\n",
"\t\tL77.1,287.8 L77.5,262.3 L78.0,236.3 L78.5,210.2 L79.0,184.4 L79.4,159.3 L79.9,135.3 L80.4,112.7\n",
"\t\tL80.8,92.0 L81.3,73.3 L81.8,56.9 L82.3,43.2 L82.7,32.4 L83.2,24.5 L83.7,19.7 L84.1,18.1\n",
"\t\tL84.6,19.7 L85.1,24.5 L85.6,32.4 L86.0,43.2 L86.5,56.9 L87.0,73.3 L87.5,92.0 L87.9,112.7\n",
"\t\tL88.4,135.3 L88.9,159.3 L89.3,184.4 L89.8,210.2 L90.3,236.3 L90.8,262.3 L91.2,287.8 L91.7,312.5\n",
"\t\tL92.2,336.0 L92.7,357.9 L93.1,377.9 L93.6,395.7 L94.1,411.0 L94.5,423.6 L95.0,433.3 L95.5,439.9\n",
"\t\tL96.0,443.4 L96.4,443.7 L96.9,440.9 L97.4,434.8 L97.9,425.7 L98.3,413.7 L98.8,398.9 L99.3,381.6\n",
"\t\tL99.7,362.1 L100.2,340.5 L100.7,317.3 L101.2,292.9 L101.6,267.5 L102.1,241.5 L102.6,215.4 L103.1,189.5\n",
"\t\tL103.5,164.3 L104.0,140.0 L104.5,117.1 L104.9,96.0 L105.4,76.8 L105.9,60.0 L106.4,45.8 L106.8,34.3\n",
"\t\tL107.3,25.8 L107.8,20.4 L108.3,18.2 L108.7,19.1 L109.2,23.3 L109.7,30.5 L110.1,40.8 L110.6,54.0\n",
"\t\tL111.1,69.8 L111.6,88.0 L112.0,108.4 L112.5,130.7 L113.0,154.4 L113.5,179.3 L113.9,205.0 L114.4,231.0\n",
"\t\tL114.9,257.1 L115.3,282.8 L115.8,307.7 L116.3,331.4 L116.8,353.7 L117.2,374.1 L117.7,392.3 L118.2,408.1\n",
"\t\tL118.7,421.3 L119.1,431.6 L119.6,438.8 L120.1,443.0 L120.5,443.9 L121.0,441.7 L121.5,436.3 L122.0,427.8\n",
"\t\tL122.4,416.3 L122.9,402.1 L123.4,385.3 L123.9,366.1 L124.3,345.0 L124.8,322.1 L125.3,297.8 L125.7,272.6\n",
"\t\tL126.2,246.7 L126.7,220.6 L127.2,194.6 L127.6,169.2 L128.1,144.8 L128.6,121.6 L129.1,100.0 L129.5,80.5\n",
"\t\tL130.0,63.2 L130.5,48.4 L130.9,36.4 L131.4,27.3 L131.9,21.2 L132.4,18.4 L132.8,18.7 L133.3,22.2\n",
"\t\tL133.8,28.8 L134.3,38.5 L134.7,51.1 L135.2,66.4 L135.7,84.2 L136.1,104.2 L136.6,126.1 L137.1,149.6\n",
"\t\tL137.6,174.3 L138.0,199.8 L138.5,225.8 L139.0,251.9 L139.5,277.7 L139.9,302.8 L140.4,326.8 L140.9,349.4\n",
"\t\tL141.3,370.1 L141.8,388.8 L142.3,405.2 L142.8,418.9 L143.2,429.7 L143.7,437.6 L144.2,442.4 L144.6,444.0\n",
"\t\tL145.1,442.4 L145.6,437.6 L146.1,429.7 L146.5,418.9 L147.0,405.2 L147.5,388.8 L148.0,370.1 L148.4,349.4\n",
"\t\tL148.9,326.8 L149.4,302.8 L149.8,277.7 L150.3,251.9 L150.8,225.8 L151.3,199.8 L151.7,174.3 L152.2,149.6\n",
"\t\tL152.7,126.1 L153.2,104.2 L153.6,84.2 L154.1,66.4 L154.6,51.1 L155.0,38.5 L155.5,28.8 L156.0,22.2\n",
"\t\tL156.5,18.7 L156.9,18.4 L157.4,21.2 L157.9,27.3 L158.4,36.4 L158.8,48.4 L159.3,63.2 L159.8,80.5\n",
"\t\tL160.2,100.0 L160.7,121.6 L161.2,144.8 L161.7,169.2 L162.1,194.6 L162.6,220.6 L163.1,246.7 L163.6,272.6\n",
"\t\tL164.0,297.8 L164.5,322.1 L165.0,345.0 L165.4,366.1 L165.9,385.3 L166.4,402.1 L166.9,416.3 L167.3,427.8\n",
"\t\tL167.8,436.3 L168.3,441.7 L168.8,443.9 L169.2,443.0 L169.7,438.8 L170.2,431.6 L170.6,421.3 L171.1,408.1\n",
"\t\tL171.6,392.3 L172.1,374.1 L172.5,353.7 L173.0,331.4 L173.5,307.7 L174.0,282.8 L174.4,257.1 L174.9,231.0\n",
"\t\tL175.4,205.0 L175.8,179.3 L176.3,154.4 L176.8,130.7 L177.3,108.4 L177.7,88.0 L178.2,69.8 L178.7,54.0\n",
"\t\tL179.2,40.8 L179.6,30.5 L180.1,23.3 L180.6,19.1 L181.0,18.2 L181.5,20.4 L182.0,25.8 L182.5,34.3\n",
"\t\tL182.9,45.8 L183.4,60.0 L183.9,76.8 L184.4,96.0 L184.8,117.1 L185.3,140.0 L185.8,164.3 L186.2,189.5\n",
"\t\tL186.7,215.4 L187.2,241.5 L187.7,267.5 L188.1,292.9 L188.6,317.3 L189.1,340.5 L189.6,362.1 L190.0,381.6\n",
"\t\tL190.5,398.9 L191.0,413.7 L191.4,425.7 L191.9,434.8 L192.4,440.9 L192.9,443.7 L193.3,443.4 L193.8,439.9\n",
"\t\tL194.3,433.3 L194.8,423.6 L195.2,411.0 L195.7,395.7 L196.2,377.9 L196.6,357.9 L197.1,336.0 L197.6,312.5\n",
"\t\tL198.1,287.8 L198.5,262.3 L199.0,236.3 L199.5,210.2 L199.9,184.4 L200.4,159.3 L200.9,135.3 L201.4,112.7\n",
"\t\tL201.8,92.0 L202.3,73.3 L202.8,56.9 L203.3,43.2 L203.7,32.4 L204.2,24.5 L204.7,19.7 L205.1,18.1\n",
"\t\tL205.6,19.7 L206.1,24.5 L206.6,32.4 L207.0,43.2 L207.5,56.9 L208.0,73.3 L208.5,92.0 L208.9,112.7\n",
"\t\tL209.4,135.3 L209.9,159.3 L210.3,184.4 L210.8,210.2 L211.3,236.3 L211.8,262.3 L212.2,287.8 L212.7,312.5\n",
"\t\tL213.2,336.0 L213.7,357.9 L214.1,377.9 L214.6,395.7 L215.1,411.0 L215.5,423.6 L216.0,433.3 L216.5,439.9\n",
"\t\tL217.0,443.4 L217.4,443.7 L217.9,440.9 L218.4,434.8 L218.9,425.7 L219.3,413.7 L219.8,398.9 L220.3,381.6\n",
"\t\tL220.7,362.1 L221.2,340.5 L221.7,317.3 L222.2,292.9 L222.6,267.5 L223.1,241.5 L223.6,215.4 L224.1,189.5\n",
"\t\tL224.5,164.3 L225.0,140.0 L225.5,117.1 L225.9,96.0 L226.4,76.8 L226.9,60.0 L227.4,45.8 L227.8,34.3\n",
"\t\tL228.3,25.8 L228.8,20.4 L229.3,18.2 L229.7,19.1 L230.2,23.3 L230.7,30.5 L231.1,40.8 L231.6,54.0\n",
"\t\tL232.1,69.8 L232.6,88.0 L233.0,108.4 L233.5,130.7 L234.0,154.4 L234.5,179.3 L234.9,205.0 L235.4,231.0\n",
"\t\tL235.9,257.1 L236.3,282.8 L236.8,307.7 L237.3,331.4 L237.8,353.7 L238.2,374.1 L238.7,392.3 L239.2,408.1\n",
"\t\tL239.7,421.3 L240.1,431.6 L240.6,438.8 L241.1,443.0 L241.5,443.9 L242.0,441.7 L242.5,436.3 L243.0,427.8\n",
"\t\tL243.4,416.3 L243.9,402.1 L244.4,385.3 L244.9,366.1 L245.3,345.0 L245.8,322.1 L246.3,297.8 L246.7,272.6\n",
"\t\tL247.2,246.7 L247.7,220.6 L248.2,194.6 L248.6,169.2 L249.1,144.8 L249.6,121.6 L250.1,100.0 L250.5,80.5\n",
"\t\tL251.0,63.2 L251.5,48.4 L251.9,36.4 L252.4,27.3 L252.9,21.2 L253.4,18.4 L253.8,18.7 L254.3,22.2\n",
"\t\tL254.8,28.8 L255.3,38.5 L255.7,51.1 L256.2,66.4 L256.7,84.2 L257.1,104.2 L257.6,126.1 L258.1,149.6\n",
"\t\tL258.6,174.3 L259.0,199.8 L259.5,225.8 L260.0,251.9 L260.4,277.7 L260.9,302.8 L261.4,326.8 L261.9,349.4\n",
"\t\tL262.3,370.1 L262.8,388.8 L263.3,405.2 L263.8,418.9 L264.2,429.7 L264.7,437.6 L265.2,442.4 L265.6,444.0\n",
"\t\tL266.1,442.4 L266.6,437.6 L267.1,429.7 L267.5,418.9 L268.0,405.2 L268.5,388.8 L269.0,370.1 L269.4,349.4\n",
"\t\tL269.9,326.8 L270.4,302.8 L270.8,277.7 L271.3,251.9 L271.8,225.8 L272.3,199.8 L272.7,174.3 L273.2,149.6\n",
"\t\tL273.7,126.1 L274.2,104.2 L274.6,84.2 L275.1,66.4 L275.6,51.1 L276.0,38.5 L276.5,28.8 L277.0,22.2\n",
"\t\tL277.5,18.7 L277.9,18.4 L278.4,21.2 L278.9,27.3 L279.4,36.4 L279.8,48.4 L280.3,63.2 L280.8,80.5\n",
"\t\tL281.2,100.0 L281.7,121.6 L282.2,144.8 L282.7,169.2 L283.1,194.6 L283.6,220.6 L284.1,246.7 L284.6,272.6\n",
"\t\tL285.0,297.8 L285.5,322.1 L286.0,345.0 L286.4,366.1 L286.9,385.3 L287.4,402.1 L287.9,416.3 L288.3,427.8\n",
"\t\tL288.8,436.3 L289.3,441.7 L289.8,443.9 L290.2,443.0 L290.7,438.8 L291.2,431.6 L291.6,421.3 L292.1,408.1\n",
"\t\tL292.6,392.3 L293.1,374.1 L293.5,353.7 L294.0,331.4 L294.5,307.7 L295.0,282.8 L295.4,257.1 L295.9,231.0\n",
"\t\tL296.4,205.0 L296.8,179.3 L297.3,154.4 L297.8,130.7 L298.3,108.4 L298.7,88.0 L299.2,69.8 L299.7,54.0\n",
"\t\tL300.2,40.8 L300.6,30.5 L301.1,23.3 L301.6,19.1 L302.0,18.2 L302.5,20.4 L303.0,25.8 L303.5,34.3\n",
"\t\tL303.9,45.8 L304.4,60.0 L304.9,76.8 L305.4,96.0 L305.8,117.1 L306.3,140.0 L306.8,164.3 L307.2,189.5\n",
"\t\tL307.7,215.4 L308.2,241.5 L308.7,267.5 L309.1,292.9 L309.6,317.3 L310.1,340.5 L310.6,362.1 L311.0,381.6\n",
"\t\tL311.5,398.9 L312.0,413.7 L312.4,425.7 L312.9,434.8 L313.4,440.9 L313.9,443.7 L314.3,443.4 L314.8,439.9\n",
"\t\tL315.3,433.3 L315.7,423.6 L316.2,411.0 L316.7,395.7 L317.2,377.9 L317.6,357.9 L318.1,336.0 L318.6,312.5\n",
"\t\tL319.1,287.8 L319.5,262.3 L320.0,236.3 L320.5,210.2 L320.9,184.4 L321.4,159.3 L321.9,135.3 L322.4,112.7\n",
"\t\tL322.8,92.0 L323.3,73.3 L323.8,56.9 L324.3,43.2 L324.7,32.4 L325.2,24.5 L325.7,19.7 L326.1,18.1\n",
"\t\tL326.6,19.7 L327.1,24.5 L327.6,32.4 L328.0,43.2 L328.5,56.9 L329.0,73.3 L329.5,92.0 L329.9,112.7\n",
"\t\tL330.4,135.3 L330.9,159.3 L331.3,184.4 L331.8,210.2 L332.3,236.3 L332.8,262.3 L333.2,287.8 L333.7,312.5\n",
"\t\tL334.2,336.0 L334.7,357.9 L335.1,377.9 L335.6,395.7 L336.1,411.0 L336.5,423.6 L337.0,433.3 L337.5,439.9\n",
"\t\tL338.0,443.4 L338.4,443.7 L338.9,440.9 L339.4,434.8 L339.9,425.7 L340.3,413.7 L340.8,398.9 L341.3,381.6\n",
"\t\tL341.7,362.1 L342.2,340.5 L342.7,317.3 L343.2,292.9 L343.6,267.5 L344.1,241.5 L344.6,215.4 L345.1,189.5\n",
"\t\tL345.5,164.3 L346.0,140.0 L346.5,117.1 L346.9,96.0 L347.4,76.8 L347.9,60.0 L348.4,45.8 L348.8,34.3\n",
"\t\tL349.3,25.8 L349.8,20.4 L350.3,18.2 L350.7,19.1 L351.2,23.3 L351.7,30.5 L352.1,40.8 L352.6,54.0\n",
"\t\tL353.1,69.8 L353.6,88.0 L354.0,108.4 L354.5,130.7 L355.0,154.4 L355.5,179.3 L355.9,205.0 L356.4,231.0\n",
"\t\tL356.9,257.1 L357.3,282.8 L357.8,307.7 L358.3,331.4 L358.8,353.7 L359.2,374.1 L359.7,392.3 L360.2,408.1\n",
"\t\tL360.7,421.3 L361.1,431.6 L361.6,438.8 L362.1,443.0 L362.5,443.9 L363.0,441.7 L363.5,436.3 L364.0,427.8\n",
"\t\tL364.4,416.3 L364.9,402.1 L365.4,385.3 L365.9,366.1 L366.3,345.0 L366.8,322.1 L367.3,297.8 L367.7,272.6\n",
"\t\tL368.2,246.7 L368.7,220.6 L369.2,194.6 L369.6,169.2 L370.1,144.8 L370.6,121.6 L371.1,100.0 L371.5,80.5\n",
"\t\tL372.0,63.2 L372.5,48.4 L372.9,36.4 L373.4,27.3 L373.9,21.2 L374.4,18.4 L374.8,18.7 L375.3,22.2\n",
"\t\tL375.8,28.8 L376.2,38.5 L376.7,51.1 L377.2,66.4 L377.7,84.2 L378.1,104.2 L378.6,126.1 L379.1,149.6\n",
"\t\tL379.6,174.3 L380.0,199.8 L380.5,225.8 L381.0,251.9 L381.4,277.7 L381.9,302.8 L382.4,326.8 L382.9,349.4\n",
"\t\tL383.3,370.1 L383.8,388.8 L384.3,405.2 L384.8,418.9 L385.2,429.7 L385.7,437.6 L386.2,442.4 L386.6,444.0\n",
"\t\tL387.1,442.4 L387.6,437.6 L388.1,429.7 L388.5,418.9 L389.0,405.2 L389.5,388.8 L390.0,370.1 L390.4,349.4\n",
"\t\tL390.9,326.8 L391.4,302.8 L391.8,277.7 L392.3,251.9 L392.8,225.8 L393.3,199.8 L393.7,174.3 L394.2,149.6\n",
"\t\tL394.7,126.1 L395.2,104.2 L395.6,84.2 L396.1,66.4 L396.6,51.1 L397.0,38.5 L397.5,28.8 L398.0,22.2\n",
"\t\tL398.5,18.7 L398.9,18.4 L399.4,21.2 L399.9,27.3 L400.4,36.4 L400.8,48.4 L401.3,63.2 L401.8,80.5\n",
"\t\tL402.2,100.0 L402.7,121.6 L403.2,144.8 L403.7,169.2 L404.1,194.6 L404.6,220.6 L405.1,246.7 L405.6,272.6\n",
"\t\tL406.0,297.8 L406.5,322.1 L407.0,345.0 L407.4,366.1 L407.9,385.3 L408.4,402.1 L408.9,416.3 L409.3,427.8\n",
"\t\tL409.8,436.3 L410.3,441.7 L410.8,443.9 L411.2,443.0 L411.7,438.8 L412.2,431.6 L412.6,421.3 L413.1,408.1\n",
"\t\tL413.6,392.3 L414.1,374.1 L414.5,353.7 L415.0,331.4 L415.5,307.7 L416.0,282.8 L416.4,257.1 L416.9,231.0\n",
"\t\tL417.4,205.0 L417.8,179.3 L418.3,154.4 L418.8,130.7 L419.3,108.4 L419.7,88.0 L420.2,69.8 L420.7,54.0\n",
"\t\tL421.2,40.8 L421.6,30.5 L422.1,23.3 L422.6,19.1 L423.0,18.2 L423.5,20.4 L424.0,25.8 L424.5,34.3\n",
"\t\tL424.9,45.8 L425.4,60.0 L425.9,76.8 L426.4,96.0 L426.8,117.1 L427.3,140.0 L427.8,164.3 L428.2,189.5\n",
"\t\tL428.7,215.4 L429.2,241.5 L429.7,267.5 L430.1,292.9 L430.6,317.3 L431.1,340.5 L431.5,362.1 L432.0,381.6\n",
"\t\tL432.5,398.9 L433.0,413.7 L433.4,425.7 L433.9,434.8 L434.4,440.9 L434.9,443.7 L435.3,443.4 L435.8,439.9\n",
"\t\tL436.3,433.3 L436.7,423.6 L437.2,411.0 L437.7,395.7 L438.2,377.9 L438.6,357.9 L439.1,336.0 L439.6,312.5\n",
"\t\tL440.1,287.8 L440.5,262.3 L441.0,236.3 L441.5,210.2 L441.9,184.4 L442.4,159.3 L442.9,135.3 L443.4,112.7\n",
"\t\tL443.8,92.0 L444.3,73.3 L444.8,56.9 L445.3,43.2 L445.7,32.4 L446.2,24.5 L446.7,19.7 L447.1,18.1\n",
"\t\tL447.6,19.7 L448.1,24.5 L448.6,32.4 L449.0,43.2 L449.5,56.9 L450.0,73.3 L450.5,92.0 L450.9,112.7\n",
"\t\tL451.4,135.3 L451.9,159.3 L452.3,184.4 L452.8,210.2 L453.3,236.3 L453.8,262.3 L454.2,287.8 L454.7,312.5\n",
"\t\tL455.2,336.0 L455.7,357.9 L456.1,377.9 L456.6,395.7 L457.1,411.0 L457.5,423.6 L458.0,433.3 L458.5,439.9\n",
"\t\tL459.0,443.4 L459.4,443.7 L459.9,440.9 L460.4,434.8 L460.9,425.7 L461.3,413.7 L461.8,398.9 L462.3,381.6\n",
"\t\tL462.7,362.1 L463.2,340.5 L463.7,317.3 L464.2,292.9 L464.6,267.5 L465.1,241.5 L465.6,215.4 L466.1,189.5\n",
"\t\tL466.5,164.3 L467.0,140.0 L467.5,117.1 L467.9,96.0 L468.4,76.8 L468.9,60.0 L469.4,45.8 L469.8,34.3\n",
"\t\tL470.3,25.8 L470.8,20.4 L471.3,18.2 L471.7,19.1 L472.2,23.3 L472.7,30.5 L473.1,40.8 L473.6,54.0\n",
"\t\tL474.1,69.8 L474.6,88.0 L475.0,108.4 L475.5,130.7 L476.0,154.4 L476.5,179.3 L476.9,205.0 L477.4,231.0\n",
"\t\tL477.9,257.1 L478.3,282.8 L478.8,307.7 L479.3,331.4 L479.8,353.7 L480.2,374.1 L480.7,392.3 L481.2,408.1\n",
"\t\tL481.7,421.3 L482.1,431.6 L482.6,438.8 L483.1,443.0 L483.5,443.9 L484.0,441.7 L484.5,436.3 L485.0,427.8\n",
"\t\tL485.4,416.3 L485.9,402.1 L486.4,385.3 L486.9,366.1 L487.3,345.0 L487.8,322.1 L488.3,297.8 L488.7,272.6\n",
"\t\tL489.2,246.7 L489.7,220.6 L490.2,194.6 L490.6,169.2 L491.1,144.8 L491.6,121.6 L492.0,100.0 L492.5,80.5\n",
"\t\tL493.0,63.2 L493.5,48.4 L493.9,36.4 L494.4,27.3 L494.9,21.2 L495.4,18.4 L495.8,18.7 L496.3,22.2\n",
"\t\tL496.8,28.8 L497.2,38.5 L497.7,51.1 L498.2,66.4 L498.7,84.2 L499.1,104.2 L499.6,126.1 L500.1,149.6\n",
"\t\tL500.6,174.3 L501.0,199.8 L501.5,225.8 L502.0,251.9 L502.4,277.7 L502.9,302.8 L503.4,326.8 L503.9,349.4\n",
"\t\tL504.3,370.1 L504.8,388.8 L505.3,405.2 L505.8,418.9 L506.2,429.7 L506.7,437.6 L507.2,442.4 L507.6,444.0\n",
"\t\tL508.1,442.4 L508.6,437.6 L509.1,429.7 L509.5,418.9 L510.0,405.2 L510.5,388.8 L511.0,370.1 L511.4,349.4\n",
"\t\tL511.9,326.8 L512.4,302.8 L512.8,277.7 L513.3,251.9 L513.8,225.8 L514.3,199.8 L514.7,174.3 L515.2,149.6\n",
"\t\tL515.7,126.1 L516.2,104.2 L516.6,84.2 L517.1,66.4 L517.6,51.1 L518.0,38.5 L518.5,28.8 L519.0,22.2\n",
"\t\tL519.5,18.7 L519.9,18.4 L520.4,21.2 L520.9,27.3 L521.4,36.4 L521.8,48.4 L522.3,63.2 L522.8,80.5\n",
"\t\tL523.2,100.0 L523.7,121.6 L524.2,144.8 L524.7,169.2 L525.1,194.6 L525.6,220.6 L526.1,246.7 L526.6,272.6\n",
"\t\tL527.0,297.8 L527.5,322.1 L528.0,345.0 L528.4,366.1 L528.9,385.3 L529.4,402.1 L529.9,416.3 L530.3,427.8\n",
"\t\tL530.8,436.3 L531.3,441.7 L531.8,443.9 L532.2,443.0 L532.7,438.8 L533.2,431.6 L533.6,421.3 L534.1,408.1\n",
"\t\tL534.6,392.3 L535.1,374.1 L535.5,353.7 L536.0,331.4 L536.5,307.7 L537.0,282.8 L537.4,257.1 L537.9,231.0\n",
"\t\t '/></g>\n",
"\t</g>\n",
"<g fill=\"none\" color=\"white\" stroke=\"rgb(148, 0, 211)\" stroke-width=\"2.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"2.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,18.1 L53.9,444.0 L575.0,444.0 L575.0,18.1 L53.9,18.1 Z '/></g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"</g>\n",
"</svg>\n",
"\n"
]
},
"metadata": {
"": ""
},
"output_type": "display_data"
}
],
"source": [
"sines = Stream.SinOsc(samplerate*20/1024):sub(1, 1024)\n",
"sines:gnuplot()"
]
},
{
"cell_type": "markdown",
"id": "580e13a3-f910-472c-b887-76929aab1d87",
"metadata": {},
"source": [
"The bins of the corresponding frequency spectrum correspond to frequencies according to the following formula:\n",
"\n",
"$$\n",
" f_i = {i {f_{srate} \\over N}}\n",
"$$\n",
"\n",
"Plotting the frequency spectrum's magnitudes of `sines` should therefore give us a clear signal around bin 20 (Lua index 21).\n",
"\n",
"**NOTE:** This does not need windowing since the waves fit perfectly into 1024 sample buffer."
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "02aec3d0-4ae9-4bcb-a034-764418b7827f",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{0, 0, 0, 1.173742634399e-14, 0, 0, 0, 3.9584680075211e-15, 0, 0, 0, 512, 0, 0, 0, 2.2315199565268e-14, 0, 0, 0, 8.6716166150709e-15, 0}\n"
]
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n",
"<svg \n",
" width=\"600\" height=\"480\"\n",
" viewBox=\"0 0 600 480\"\n",
" xmlns=\"http://www.w3.org/2000/svg\"\n",
" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n",
">\n",
"\n",
"<title>Gnuplot</title>\n",
"<desc>Produced by GNUPLOT 5.2 patchlevel 8 </desc>\n",
"\n",
"<g id=\"gnuplot_canvas\">\n",
"\n",
"<rect x=\"0\" y=\"0\" width=\"600\" height=\"480\" fill=\"none\"/>\n",
"<defs>\n",
"\n",
"\t<circle id='gpDot' r='0.5' stroke-width='0.5' stroke='currentColor'/>\n",
"\t<path id='gpPt0' stroke-width='0.222' stroke='currentColor' d='M-1,0 h2 M0,-1 v2'/>\n",
"\t<path id='gpPt1' stroke-width='0.222' stroke='currentColor' d='M-1,-1 L1,1 M1,-1 L-1,1'/>\n",
"\t<path id='gpPt2' stroke-width='0.222' stroke='currentColor' d='M-1,0 L1,0 M0,-1 L0,1 M-1,-1 L1,1 M-1,1 L1,-1'/>\n",
"\t<rect id='gpPt3' stroke-width='0.222' stroke='currentColor' x='-1' y='-1' width='2' height='2'/>\n",
"\t<rect id='gpPt4' stroke-width='0.222' stroke='currentColor' fill='currentColor' x='-1' y='-1' width='2' height='2'/>\n",
"\t<circle id='gpPt5' stroke-width='0.222' stroke='currentColor' cx='0' cy='0' r='1'/>\n",
"\t<use xlink:href='#gpPt5' id='gpPt6' fill='currentColor' stroke='none'/>\n",
"\t<path id='gpPt7' stroke-width='0.222' stroke='currentColor' d='M0,-1.33 L-1.33,0.67 L1.33,0.67 z'/>\n",
"\t<use xlink:href='#gpPt7' id='gpPt8' fill='currentColor' stroke='none'/>\n",
"\t<use xlink:href='#gpPt7' id='gpPt9' stroke='currentColor' transform='rotate(180)'/>\n",
"\t<use xlink:href='#gpPt9' id='gpPt10' fill='currentColor' stroke='none'/>\n",
"\t<use xlink:href='#gpPt3' id='gpPt11' stroke='currentColor' transform='rotate(45)'/>\n",
"\t<use xlink:href='#gpPt11' id='gpPt12' fill='currentColor' stroke='none'/>\n",
"\t<path id='gpPt13' stroke-width='0.222' stroke='currentColor' d='M0,1.330 L1.265,0.411 L0.782,-1.067 L-0.782,-1.076 L-1.265,0.411 z'/>\n",
"\t<use xlink:href='#gpPt13' id='gpPt14' fill='currentColor' stroke='none'/>\n",
"\t<filter id='textbox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>\n",
"\t <feFlood flood-color='white' flood-opacity='1' result='bgnd'/>\n",
"\t <feComposite in='SourceGraphic' in2='bgnd' operator='atop'/>\n",
"\t</filter>\n",
"\t<filter id='greybox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>\n",
"\t <feFlood flood-color='lightgrey' flood-opacity='1' result='grey'/>\n",
"\t <feComposite in='SourceGraphic' in2='grey' operator='atop'/>\n",
"\t</filter>\n",
"</defs>\n",
"<g fill=\"none\" color=\"white\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M53.9,444.0 L575.0,444.0 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,444.0 L62.9,444.0 M575.0,444.0 L566.0,444.0 '/>\t<g transform=\"translate(45.6,447.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"end\">\n",
"\t\t<text><tspan font-family=\"Arial\" >-1</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M53.9,337.5 L575.0,337.5 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,337.5 L62.9,337.5 M575.0,337.5 L566.0,337.5 '/>\t<g transform=\"translate(45.6,341.4)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"end\">\n",
"\t\t<text><tspan font-family=\"Arial\" >-0.5</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M53.9,231.0 L575.0,231.0 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,231.0 L62.9,231.0 M575.0,231.0 L566.0,231.0 '/>\t<g transform=\"translate(45.6,234.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"end\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M53.9,124.6 L575.0,124.6 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,124.6 L62.9,124.6 M575.0,124.6 L566.0,124.6 '/>\t<g transform=\"translate(45.6,128.5)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"end\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.5</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M53.9,18.1 L575.0,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,18.1 L62.9,18.1 M575.0,18.1 L566.0,18.1 '/>\t<g transform=\"translate(45.6,22.0)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"end\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 1</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M53.9,444.0 L53.9,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,444.0 L53.9,435.0 M53.9,18.1 L53.9,27.1 '/>\t<g transform=\"translate(53.9,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M140.8,444.0 L140.8,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M140.8,444.0 L140.8,435.0 M140.8,18.1 L140.8,27.1 '/>\t<g transform=\"translate(140.8,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.002</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M227.6,444.0 L227.6,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M227.6,444.0 L227.6,435.0 M227.6,18.1 L227.6,27.1 '/>\t<g transform=\"translate(227.6,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.004</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M314.5,444.0 L314.5,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M314.5,444.0 L314.5,435.0 M314.5,18.1 L314.5,27.1 '/>\t<g transform=\"translate(314.5,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.006</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M401.3,444.0 L401.3,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M401.3,444.0 L401.3,435.0 M401.3,18.1 L401.3,27.1 '/>\t<g transform=\"translate(401.3,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.008</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M488.2,444.0 L488.2,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M488.2,444.0 L488.2,435.0 M488.2,18.1 L488.2,27.1 '/>\t<g transform=\"translate(488.2,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.01</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M575.0,444.0 L575.0,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M575.0,444.0 L575.0,435.0 M575.0,18.1 L575.0,27.1 '/>\t<g transform=\"translate(575.0,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.012</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,18.1 L53.9,444.0 L575.0,444.0 L575.0,18.1 L53.9,18.1 Z '/></g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"\t<g id=\"gnuplot_plot_1\" ><title>gnuplot_plot_1</title>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='rgb(148, 0, 211)' d='M54.9,231.0 L55.9,231.0 L56.9,231.0 L57.8,231.0 L58.8,231.0 L59.8,231.0 L60.8,231.0 L61.8,231.0\n",
"\t\tL62.8,231.0 L63.7,231.0 L64.7,231.0 L65.7,231.0 L66.7,231.0 L67.7,231.0 L68.7,231.0 L69.7,231.0\n",
"\t\tL70.6,231.0 L71.6,231.0 L72.6,231.0 L73.6,231.0 L73.6,18.1 M75.5,18.1 L75.6,231.0 L76.5,231.0\n",
"\t\tL77.5,231.0 L78.5,231.0 L79.5,231.0 L80.5,231.0 L81.5,231.0 L82.5,231.0 L83.4,231.0 L84.4,231.0\n",
"\t\tL85.4,231.0 L86.4,231.0 L87.4,231.0 L88.4,231.0 L89.3,231.0 L90.3,231.0 L91.3,231.0 L92.3,231.0\n",
"\t\tL93.3,231.0 L94.3,231.0 L95.3,231.0 L96.2,231.0 L97.2,231.0 L98.2,231.0 L99.2,231.0 L100.2,231.0\n",
"\t\tL101.2,231.0 L102.1,231.0 L103.1,231.0 L104.1,231.0 L105.1,231.0 L106.1,231.0 L107.1,231.0 L108.1,231.0\n",
"\t\tL109.0,231.0 L110.0,231.0 L111.0,231.0 L112.0,231.0 L113.0,231.0 L114.0,231.0 L115.0,231.0 L115.9,231.0\n",
"\t\tL116.9,231.0 L117.9,231.0 L118.9,231.0 L119.9,231.0 L120.9,231.0 L121.8,231.0 L122.8,231.0 L123.8,231.0\n",
"\t\tL124.8,231.0 L125.8,231.0 L126.8,231.0 L127.8,231.0 L128.7,231.0 L129.7,231.0 L130.7,231.0 L131.7,231.0\n",
"\t\tL132.7,231.0 L133.7,231.0 L134.6,231.0 L135.6,231.0 L136.6,231.0 L137.6,231.0 L138.6,231.0 L139.6,231.0\n",
"\t\tL140.6,231.0 L141.5,231.0 L142.5,231.0 L143.5,231.0 L144.5,231.0 L145.5,231.0 L146.5,231.0 L147.4,231.0\n",
"\t\tL148.4,231.0 L149.4,231.0 L150.4,231.0 L151.4,231.0 L152.4,231.0 L153.4,231.0 L154.3,231.0 L155.3,231.0\n",
"\t\tL156.3,231.0 L157.3,231.0 L158.3,231.0 L159.3,231.0 L160.2,231.0 L161.2,231.0 L162.2,231.0 L163.2,231.0\n",
"\t\tL164.2,231.0 L165.2,231.0 L166.2,231.0 L167.1,231.0 L168.1,231.0 L169.1,231.0 L170.1,231.0 L171.1,231.0\n",
"\t\tL172.1,231.0 L173.0,231.0 L174.0,231.0 L175.0,231.0 L176.0,231.0 L177.0,231.0 L178.0,231.0 L179.0,231.0\n",
"\t\tL179.9,231.0 L180.9,231.0 L181.9,231.0 L182.9,231.0 L183.9,231.0 L184.9,231.0 L185.8,231.0 L186.8,231.0\n",
"\t\tL187.8,231.0 L188.8,231.0 L189.8,231.0 L190.8,231.0 L191.8,231.0 L192.7,231.0 L193.7,231.0 L194.7,231.0\n",
"\t\tL195.7,231.0 L196.7,231.0 L197.7,231.0 L198.6,231.0 L199.6,231.0 L200.6,231.0 L201.6,231.0 L202.6,231.0\n",
"\t\tL203.6,231.0 L204.6,231.0 L205.5,231.0 L206.5,231.0 L207.5,231.0 L208.5,231.0 L209.5,231.0 L210.5,231.0\n",
"\t\tL211.5,231.0 L212.4,231.0 L213.4,231.0 L214.4,231.0 L215.4,231.0 L216.4,231.0 L217.4,231.0 L218.3,231.0\n",
"\t\tL219.3,231.0 L220.3,231.0 L221.3,231.0 L222.3,231.0 L223.3,231.0 L224.3,231.0 L225.2,231.0 L226.2,231.0\n",
"\t\tL227.2,231.0 L228.2,231.0 L229.2,231.0 L230.2,231.0 L231.1,231.0 L232.1,231.0 L233.1,231.0 L234.1,231.0\n",
"\t\tL235.1,231.0 L236.1,231.0 L237.1,231.0 L238.0,231.0 L239.0,231.0 L240.0,231.0 L241.0,231.0 L242.0,231.0\n",
"\t\tL243.0,231.0 L243.9,231.0 L244.9,231.0 L245.9,231.0 L246.9,231.0 L247.9,231.0 L248.9,231.0 L249.9,231.0\n",
"\t\tL250.8,231.0 L251.8,231.0 L252.8,231.0 L253.8,231.0 L254.8,231.0 L255.8,231.0 L256.7,231.0 L257.7,231.0\n",
"\t\tL258.7,231.0 L259.7,231.0 L260.7,231.0 L261.7,231.0 L262.7,231.0 L263.6,231.0 L264.6,231.0 L265.6,231.0\n",
"\t\tL266.6,231.0 L267.6,231.0 L268.6,231.0 L269.5,231.0 L270.5,231.0 L271.5,231.0 L272.5,231.0 L273.5,231.0\n",
"\t\tL274.5,231.0 L275.5,231.0 L276.4,231.0 L277.4,231.0 L278.4,231.0 L279.4,231.0 L280.4,231.0 L281.4,231.0\n",
"\t\tL282.3,231.0 L283.3,231.0 L284.3,231.0 L285.3,231.0 L286.3,231.0 L287.3,231.0 L288.3,231.0 L289.2,231.0\n",
"\t\tL290.2,231.0 L291.2,231.0 L292.2,231.0 L293.2,231.0 L294.2,231.0 L295.2,231.0 L296.1,231.0 L297.1,231.0\n",
"\t\tL298.1,231.0 L299.1,231.0 L300.1,231.0 L301.1,231.0 L302.0,231.0 L303.0,231.0 L304.0,231.0 L305.0,231.0\n",
"\t\tL306.0,231.0 L307.0,231.0 L308.0,231.0 L308.9,231.0 L309.9,231.0 L310.9,231.0 L311.9,231.0 L312.9,231.0\n",
"\t\tL313.9,231.0 L314.8,231.0 L315.8,231.0 L316.8,231.0 L317.8,231.0 L318.8,231.0 L319.8,231.0 L320.8,231.0\n",
"\t\tL321.7,231.0 L322.7,231.0 L323.7,231.0 L324.7,231.0 L325.7,231.0 L326.7,231.0 L327.6,231.0 L328.6,231.0\n",
"\t\tL329.6,231.0 L330.6,231.0 L331.6,231.0 L332.6,231.0 L333.6,231.0 L334.5,231.0 L335.5,231.0 L336.5,231.0\n",
"\t\tL337.5,231.0 L338.5,231.0 L339.5,231.0 L340.4,231.0 L341.4,231.0 L342.4,231.0 L343.4,231.0 L344.4,231.0\n",
"\t\tL345.4,231.0 L346.4,231.0 L347.3,231.0 L348.3,231.0 L349.3,231.0 L350.3,231.0 L351.3,231.0 L352.3,231.0\n",
"\t\tL353.2,231.0 L354.2,231.0 L355.2,231.0 L356.2,231.0 L357.2,231.0 L358.2,231.0 L359.2,231.0 L360.1,231.0\n",
"\t\tL361.1,231.0 L362.1,231.0 L363.1,231.0 L364.1,231.0 L365.1,231.0 L366.0,231.0 L367.0,231.0 L368.0,231.0\n",
"\t\tL369.0,231.0 L370.0,231.0 L371.0,231.0 L372.0,231.0 L372.9,231.0 L373.9,231.0 L374.9,231.0 L375.9,231.0\n",
"\t\tL376.9,231.0 L377.9,231.0 L378.8,231.0 L379.8,231.0 L380.8,231.0 L381.8,231.0 L382.8,231.0 L383.8,231.0\n",
"\t\tL384.8,231.0 L385.7,231.0 L386.7,231.0 L387.7,231.0 L388.7,231.0 L389.7,231.0 L390.7,231.0 L391.7,231.0\n",
"\t\tL392.6,231.0 L393.6,231.0 L394.6,231.0 L395.6,231.0 L396.6,231.0 L397.6,231.0 L398.5,231.0 L399.5,231.0\n",
"\t\tL400.5,231.0 L401.5,231.0 L402.5,231.0 L403.5,231.0 L404.5,231.0 L405.4,231.0 L406.4,231.0 L407.4,231.0\n",
"\t\tL408.4,231.0 L409.4,231.0 L410.4,231.0 L411.3,231.0 L412.3,231.0 L413.3,231.0 L414.3,231.0 L415.3,231.0\n",
"\t\tL416.3,231.0 L417.3,231.0 L418.2,231.0 L419.2,231.0 L420.2,231.0 L421.2,231.0 L422.2,231.0 L423.2,231.0\n",
"\t\tL424.1,231.0 L425.1,231.0 L426.1,231.0 L427.1,231.0 L428.1,231.0 L429.1,231.0 L430.1,231.0 L431.0,231.0\n",
"\t\tL432.0,231.0 L433.0,231.0 L434.0,231.0 L435.0,231.0 L436.0,231.0 L436.9,231.0 L437.9,231.0 L438.9,231.0\n",
"\t\tL439.9,231.0 L440.9,231.0 L441.9,231.0 L442.9,231.0 L443.8,231.0 L444.8,231.0 L445.8,231.0 L446.8,231.0\n",
"\t\tL447.8,231.0 L448.8,231.0 L449.7,231.0 L450.7,231.0 L451.7,231.0 L452.7,231.0 L453.7,231.0 L454.7,231.0\n",
"\t\tL455.7,231.0 L456.6,231.0 L457.6,231.0 L458.6,231.0 L459.6,231.0 L460.6,231.0 L461.6,231.0 L462.5,231.0\n",
"\t\tL463.5,231.0 L464.5,231.0 L465.5,231.0 L466.5,231.0 L467.5,231.0 L468.5,231.0 L469.4,231.0 L470.4,231.0\n",
"\t\tL471.4,231.0 L472.4,231.0 L473.4,231.0 L474.4,231.0 L475.3,231.0 L476.3,231.0 L477.3,231.0 L478.3,231.0\n",
"\t\tL479.3,231.0 L480.3,231.0 L481.3,231.0 L482.2,231.0 L483.2,231.0 L484.2,231.0 L485.2,231.0 L486.2,231.0\n",
"\t\tL487.2,231.0 L488.2,231.0 L489.1,231.0 L490.1,231.0 L491.1,231.0 L492.1,231.0 L493.1,231.0 L494.1,231.0\n",
"\t\tL495.0,231.0 L496.0,231.0 L497.0,231.0 L498.0,231.0 L499.0,231.0 L500.0,231.0 L501.0,231.0 L501.9,231.0\n",
"\t\tL502.9,231.0 L503.9,231.0 L504.9,231.0 L505.9,231.0 L506.9,231.0 L507.8,231.0 L508.8,231.0 L509.8,231.0\n",
"\t\tL510.8,231.0 L511.8,231.0 L512.8,231.0 L513.8,231.0 L514.7,231.0 L515.7,231.0 L516.7,231.0 L517.7,231.0\n",
"\t\tL518.7,231.0 L519.7,231.0 L520.6,231.0 L521.6,231.0 L522.6,231.0 L523.6,231.0 L524.6,231.0 L525.6,231.0\n",
"\t\tL526.6,231.0 L527.5,231.0 L528.5,231.0 L529.5,231.0 L530.5,231.0 L531.5,231.0 L532.5,231.0 L533.4,231.0\n",
"\t\tL534.4,231.0 L535.4,231.0 L536.4,231.0 L537.4,231.0 L538.4,231.0 L539.4,231.0 L540.3,231.0 L541.3,231.0\n",
"\t\tL542.3,231.0 L543.3,231.0 L544.3,231.0 L545.3,231.0 L546.2,231.0 L547.2,231.0 L548.2,231.0 L549.2,231.0\n",
"\t\tL550.2,231.0 L551.2,231.0 L552.2,231.0 L553.1,231.0 L554.1,231.0 L555.1,231.0 L556.1,231.0 L557.1,231.0\n",
"\t\tL558.1,231.0 L559.0,231.0 '/></g>\n",
"\t</g>\n",
"<g fill=\"none\" color=\"white\" stroke=\"rgb(148, 0, 211)\" stroke-width=\"2.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"2.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,18.1 L53.9,444.0 L575.0,444.0 L575.0,18.1 L53.9,18.1 Z '/></g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"</g>\n",
"</svg>\n",
"\n"
]
},
"metadata": {
"": ""
},
"output_type": "display_data"
}
],
"source": [
"spectrum = tostream(magnitude(FFT(sines)))\n",
"print(spectrum:sub(10, 30))\n",
"spectrum:gnuplot()"
]
},
{
"cell_type": "markdown",
"id": "7ca7e0b3-1854-41b4-813f-016eb148387e",
"metadata": {},
"source": [
"Testing the inverse FFT - looks just like the original wave:"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "e7fc0ea8-d510-41aa-815e-f29055f5b8e1",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n",
"<svg \n",
" width=\"600\" height=\"480\"\n",
" viewBox=\"0 0 600 480\"\n",
" xmlns=\"http://www.w3.org/2000/svg\"\n",
" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n",
">\n",
"\n",
"<title>Gnuplot</title>\n",
"<desc>Produced by GNUPLOT 5.2 patchlevel 8 </desc>\n",
"\n",
"<g id=\"gnuplot_canvas\">\n",
"\n",
"<rect x=\"0\" y=\"0\" width=\"600\" height=\"480\" fill=\"none\"/>\n",
"<defs>\n",
"\n",
"\t<circle id='gpDot' r='0.5' stroke-width='0.5' stroke='currentColor'/>\n",
"\t<path id='gpPt0' stroke-width='0.222' stroke='currentColor' d='M-1,0 h2 M0,-1 v2'/>\n",
"\t<path id='gpPt1' stroke-width='0.222' stroke='currentColor' d='M-1,-1 L1,1 M1,-1 L-1,1'/>\n",
"\t<path id='gpPt2' stroke-width='0.222' stroke='currentColor' d='M-1,0 L1,0 M0,-1 L0,1 M-1,-1 L1,1 M-1,1 L1,-1'/>\n",
"\t<rect id='gpPt3' stroke-width='0.222' stroke='currentColor' x='-1' y='-1' width='2' height='2'/>\n",
"\t<rect id='gpPt4' stroke-width='0.222' stroke='currentColor' fill='currentColor' x='-1' y='-1' width='2' height='2'/>\n",
"\t<circle id='gpPt5' stroke-width='0.222' stroke='currentColor' cx='0' cy='0' r='1'/>\n",
"\t<use xlink:href='#gpPt5' id='gpPt6' fill='currentColor' stroke='none'/>\n",
"\t<path id='gpPt7' stroke-width='0.222' stroke='currentColor' d='M0,-1.33 L-1.33,0.67 L1.33,0.67 z'/>\n",
"\t<use xlink:href='#gpPt7' id='gpPt8' fill='currentColor' stroke='none'/>\n",
"\t<use xlink:href='#gpPt7' id='gpPt9' stroke='currentColor' transform='rotate(180)'/>\n",
"\t<use xlink:href='#gpPt9' id='gpPt10' fill='currentColor' stroke='none'/>\n",
"\t<use xlink:href='#gpPt3' id='gpPt11' stroke='currentColor' transform='rotate(45)'/>\n",
"\t<use xlink:href='#gpPt11' id='gpPt12' fill='currentColor' stroke='none'/>\n",
"\t<path id='gpPt13' stroke-width='0.222' stroke='currentColor' d='M0,1.330 L1.265,0.411 L0.782,-1.067 L-0.782,-1.076 L-1.265,0.411 z'/>\n",
"\t<use xlink:href='#gpPt13' id='gpPt14' fill='currentColor' stroke='none'/>\n",
"\t<filter id='textbox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>\n",
"\t <feFlood flood-color='white' flood-opacity='1' result='bgnd'/>\n",
"\t <feComposite in='SourceGraphic' in2='bgnd' operator='atop'/>\n",
"\t</filter>\n",
"\t<filter id='greybox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>\n",
"\t <feFlood flood-color='lightgrey' flood-opacity='1' result='grey'/>\n",
"\t <feComposite in='SourceGraphic' in2='grey' operator='atop'/>\n",
"\t</filter>\n",
"</defs>\n",
"<g fill=\"none\" color=\"white\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M53.9,444.0 L575.0,444.0 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,444.0 L62.9,444.0 M575.0,444.0 L566.0,444.0 '/>\t<g transform=\"translate(45.6,447.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"end\">\n",
"\t\t<text><tspan font-family=\"Arial\" >-1</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M53.9,337.5 L575.0,337.5 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,337.5 L62.9,337.5 M575.0,337.5 L566.0,337.5 '/>\t<g transform=\"translate(45.6,341.4)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"end\">\n",
"\t\t<text><tspan font-family=\"Arial\" >-0.5</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M53.9,231.0 L575.0,231.0 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,231.0 L62.9,231.0 M575.0,231.0 L566.0,231.0 '/>\t<g transform=\"translate(45.6,234.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"end\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M53.9,124.6 L575.0,124.6 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,124.6 L62.9,124.6 M575.0,124.6 L566.0,124.6 '/>\t<g transform=\"translate(45.6,128.5)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"end\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.5</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M53.9,18.1 L575.0,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,18.1 L62.9,18.1 M575.0,18.1 L566.0,18.1 '/>\t<g transform=\"translate(45.6,22.0)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"end\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 1</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M53.9,444.0 L53.9,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,444.0 L53.9,435.0 M53.9,18.1 L53.9,27.1 '/>\t<g transform=\"translate(53.9,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M158.1,444.0 L158.1,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M158.1,444.0 L158.1,435.0 M158.1,18.1 L158.1,27.1 '/>\t<g transform=\"translate(158.1,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.005</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M262.3,444.0 L262.3,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M262.3,444.0 L262.3,435.0 M262.3,18.1 L262.3,27.1 '/>\t<g transform=\"translate(262.3,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.01</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M366.6,444.0 L366.6,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M366.6,444.0 L366.6,435.0 M366.6,18.1 L366.6,27.1 '/>\t<g transform=\"translate(366.6,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.015</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M470.8,444.0 L470.8,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M470.8,444.0 L470.8,435.0 M470.8,18.1 L470.8,27.1 '/>\t<g transform=\"translate(470.8,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.02</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M575.0,444.0 L575.0,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M575.0,444.0 L575.0,435.0 M575.0,18.1 L575.0,27.1 '/>\t<g transform=\"translate(575.0,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.025</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,18.1 L53.9,444.0 L575.0,444.0 L575.0,18.1 L53.9,18.1 Z '/></g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"\t<g id=\"gnuplot_plot_1\" ><title>gnuplot_plot_1</title>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='rgb(148, 0, 211)' d='M54.4,205.0 L54.8,179.3 L55.3,154.4 L55.8,130.7 L56.3,108.4 L56.7,88.0 L57.2,69.8 L57.7,54.0\n",
"\t\tL58.2,40.8 L58.6,30.5 L59.1,23.3 L59.6,19.1 L60.0,18.2 L60.5,20.4 L61.0,25.8 L61.5,34.3\n",
"\t\tL61.9,45.8 L62.4,60.0 L62.9,76.8 L63.4,96.0 L63.8,117.1 L64.3,140.0 L64.8,164.3 L65.2,189.5\n",
"\t\tL65.7,215.4 L66.2,241.5 L66.7,267.5 L67.1,292.9 L67.6,317.3 L68.1,340.5 L68.6,362.1 L69.0,381.6\n",
"\t\tL69.5,398.9 L70.0,413.7 L70.4,425.7 L70.9,434.8 L71.4,440.9 L71.9,443.7 L72.3,443.4 L72.8,439.9\n",
"\t\tL73.3,433.3 L73.8,423.6 L74.2,411.0 L74.7,395.7 L75.2,377.9 L75.6,357.9 L76.1,336.0 L76.6,312.5\n",
"\t\tL77.1,287.8 L77.5,262.3 L78.0,236.3 L78.5,210.2 L79.0,184.4 L79.4,159.3 L79.9,135.3 L80.4,112.7\n",
"\t\tL80.8,92.0 L81.3,73.3 L81.8,56.9 L82.3,43.2 L82.7,32.4 L83.2,24.5 L83.7,19.7 L84.1,18.1\n",
"\t\tL84.6,19.7 L85.1,24.5 L85.6,32.4 L86.0,43.2 L86.5,56.9 L87.0,73.3 L87.5,92.0 L87.9,112.7\n",
"\t\tL88.4,135.3 L88.9,159.3 L89.3,184.4 L89.8,210.2 L90.3,236.3 L90.8,262.3 L91.2,287.8 L91.7,312.5\n",
"\t\tL92.2,336.0 L92.7,357.9 L93.1,377.9 L93.6,395.7 L94.1,411.0 L94.5,423.6 L95.0,433.3 L95.5,439.9\n",
"\t\tL96.0,443.4 L96.4,443.7 L96.9,440.9 L97.4,434.8 L97.9,425.7 L98.3,413.7 L98.8,398.9 L99.3,381.6\n",
"\t\tL99.7,362.1 L100.2,340.5 L100.7,317.3 L101.2,292.9 L101.6,267.5 L102.1,241.5 L102.6,215.4 L103.1,189.5\n",
"\t\tL103.5,164.3 L104.0,140.0 L104.5,117.1 L104.9,96.0 L105.4,76.8 L105.9,60.0 L106.4,45.8 L106.8,34.3\n",
"\t\tL107.3,25.8 L107.8,20.4 L108.3,18.2 L108.7,19.1 L109.2,23.3 L109.7,30.5 L110.1,40.8 L110.6,54.0\n",
"\t\tL111.1,69.8 L111.6,88.0 L112.0,108.4 L112.5,130.7 L113.0,154.4 L113.5,179.3 L113.9,205.0 L114.4,231.0\n",
"\t\tL114.9,257.1 L115.3,282.8 L115.8,307.7 L116.3,331.4 L116.8,353.7 L117.2,374.1 L117.7,392.3 L118.2,408.1\n",
"\t\tL118.7,421.3 L119.1,431.6 L119.6,438.8 L120.1,443.0 L120.5,443.9 L121.0,441.7 L121.5,436.3 L122.0,427.8\n",
"\t\tL122.4,416.3 L122.9,402.1 L123.4,385.3 L123.9,366.1 L124.3,345.0 L124.8,322.1 L125.3,297.8 L125.7,272.6\n",
"\t\tL126.2,246.7 L126.7,220.6 L127.2,194.6 L127.6,169.2 L128.1,144.8 L128.6,121.6 L129.1,100.0 L129.5,80.5\n",
"\t\tL130.0,63.2 L130.5,48.4 L130.9,36.4 L131.4,27.3 L131.9,21.2 L132.4,18.4 L132.8,18.7 L133.3,22.2\n",
"\t\tL133.8,28.8 L134.3,38.5 L134.7,51.1 L135.2,66.4 L135.7,84.2 L136.1,104.2 L136.6,126.1 L137.1,149.6\n",
"\t\tL137.6,174.3 L138.0,199.8 L138.5,225.8 L139.0,251.9 L139.5,277.7 L139.9,302.8 L140.4,326.8 L140.9,349.4\n",
"\t\tL141.3,370.1 L141.8,388.8 L142.3,405.2 L142.8,418.9 L143.2,429.7 L143.7,437.6 L144.2,442.4 L144.6,444.0\n",
"\t\tL145.1,442.4 L145.6,437.6 L146.1,429.7 L146.5,418.9 L147.0,405.2 L147.5,388.8 L148.0,370.1 L148.4,349.4\n",
"\t\tL148.9,326.8 L149.4,302.8 L149.8,277.7 L150.3,251.9 L150.8,225.8 L151.3,199.8 L151.7,174.3 L152.2,149.6\n",
"\t\tL152.7,126.1 L153.2,104.2 L153.6,84.2 L154.1,66.4 L154.6,51.1 L155.0,38.5 L155.5,28.8 L156.0,22.2\n",
"\t\tL156.5,18.7 L156.9,18.4 L157.4,21.2 L157.9,27.3 L158.4,36.4 L158.8,48.4 L159.3,63.2 L159.8,80.5\n",
"\t\tL160.2,100.0 L160.7,121.6 L161.2,144.8 L161.7,169.2 L162.1,194.6 L162.6,220.6 L163.1,246.7 L163.6,272.6\n",
"\t\tL164.0,297.8 L164.5,322.1 L165.0,345.0 L165.4,366.1 L165.9,385.3 L166.4,402.1 L166.9,416.3 L167.3,427.8\n",
"\t\tL167.8,436.3 L168.3,441.7 L168.8,443.9 L169.2,443.0 L169.7,438.8 L170.2,431.6 L170.6,421.3 L171.1,408.1\n",
"\t\tL171.6,392.3 L172.1,374.1 L172.5,353.7 L173.0,331.4 L173.5,307.7 L174.0,282.8 L174.4,257.1 L174.9,231.1\n",
"\t\tL175.4,205.0 L175.8,179.3 L176.3,154.4 L176.8,130.7 L177.3,108.4 L177.7,88.0 L178.2,69.8 L178.7,54.0\n",
"\t\tL179.2,40.8 L179.6,30.5 L180.1,23.3 L180.6,19.1 L181.0,18.2 L181.5,20.4 L182.0,25.8 L182.5,34.3\n",
"\t\tL182.9,45.8 L183.4,60.0 L183.9,76.8 L184.4,96.0 L184.8,117.1 L185.3,140.0 L185.8,164.3 L186.2,189.5\n",
"\t\tL186.7,215.4 L187.2,241.5 L187.7,267.5 L188.1,292.9 L188.6,317.3 L189.1,340.5 L189.6,362.1 L190.0,381.6\n",
"\t\tL190.5,398.9 L191.0,413.7 L191.4,425.7 L191.9,434.8 L192.4,440.9 L192.9,443.7 L193.3,443.4 L193.8,439.9\n",
"\t\tL194.3,433.3 L194.8,423.6 L195.2,411.0 L195.7,395.7 L196.2,377.9 L196.6,357.9 L197.1,336.0 L197.6,312.5\n",
"\t\tL198.1,287.8 L198.5,262.3 L199.0,236.3 L199.5,210.2 L199.9,184.4 L200.4,159.3 L200.9,135.3 L201.4,112.7\n",
"\t\tL201.8,92.0 L202.3,73.3 L202.8,56.9 L203.3,43.2 L203.7,32.4 L204.2,24.5 L204.7,19.7 L205.1,18.1\n",
"\t\tL205.6,19.7 L206.1,24.5 L206.6,32.4 L207.0,43.2 L207.5,56.9 L208.0,73.3 L208.5,92.0 L208.9,112.7\n",
"\t\tL209.4,135.3 L209.9,159.3 L210.3,184.4 L210.8,210.2 L211.3,236.3 L211.8,262.3 L212.2,287.8 L212.7,312.5\n",
"\t\tL213.2,336.0 L213.7,357.9 L214.1,377.9 L214.6,395.7 L215.1,411.0 L215.5,423.6 L216.0,433.3 L216.5,439.9\n",
"\t\tL217.0,443.4 L217.4,443.7 L217.9,440.9 L218.4,434.8 L218.9,425.7 L219.3,413.7 L219.8,398.9 L220.3,381.6\n",
"\t\tL220.7,362.1 L221.2,340.5 L221.7,317.3 L222.2,292.9 L222.6,267.5 L223.1,241.5 L223.6,215.4 L224.1,189.5\n",
"\t\tL224.5,164.3 L225.0,140.0 L225.5,117.1 L225.9,96.0 L226.4,76.8 L226.9,60.0 L227.4,45.8 L227.8,34.3\n",
"\t\tL228.3,25.8 L228.8,20.4 L229.3,18.2 L229.7,19.1 L230.2,23.3 L230.7,30.5 L231.1,40.8 L231.6,54.0\n",
"\t\tL232.1,69.8 L232.6,88.0 L233.0,108.4 L233.5,130.7 L234.0,154.4 L234.5,179.3 L234.9,205.0 L235.4,231.0\n",
"\t\tL235.9,257.1 L236.3,282.8 L236.8,307.7 L237.3,331.4 L237.8,353.7 L238.2,374.1 L238.7,392.3 L239.2,408.1\n",
"\t\tL239.7,421.3 L240.1,431.6 L240.6,438.8 L241.1,443.0 L241.5,443.9 L242.0,441.7 L242.5,436.3 L243.0,427.8\n",
"\t\tL243.4,416.3 L243.9,402.1 L244.4,385.3 L244.9,366.1 L245.3,345.0 L245.8,322.1 L246.3,297.8 L246.7,272.6\n",
"\t\tL247.2,246.7 L247.7,220.6 L248.2,194.6 L248.6,169.2 L249.1,144.8 L249.6,121.6 L250.1,100.0 L250.5,80.5\n",
"\t\tL251.0,63.2 L251.5,48.4 L251.9,36.4 L252.4,27.3 L252.9,21.2 L253.4,18.4 L253.8,18.7 L254.3,22.2\n",
"\t\tL254.8,28.8 L255.3,38.5 L255.7,51.1 L256.2,66.4 L256.7,84.2 L257.1,104.2 L257.6,126.1 L258.1,149.6\n",
"\t\tL258.6,174.3 L259.0,199.8 L259.5,225.8 L260.0,251.9 L260.4,277.7 L260.9,302.8 L261.4,326.8 L261.9,349.4\n",
"\t\tL262.3,370.1 L262.8,388.8 L263.3,405.2 L263.8,418.9 L264.2,429.7 L264.7,437.6 L265.2,442.4 L265.6,444.0\n",
"\t\tL266.1,442.4 L266.6,437.6 L267.1,429.7 L267.5,418.9 L268.0,405.2 L268.5,388.8 L269.0,370.1 L269.4,349.4\n",
"\t\tL269.9,326.8 L270.4,302.8 L270.8,277.7 L271.3,251.9 L271.8,225.8 L272.3,199.8 L272.7,174.3 L273.2,149.6\n",
"\t\tL273.7,126.1 L274.2,104.2 L274.6,84.2 L275.1,66.4 L275.6,51.1 L276.0,38.5 L276.5,28.8 L277.0,22.2\n",
"\t\tL277.5,18.7 L277.9,18.4 L278.4,21.2 L278.9,27.3 L279.4,36.4 L279.8,48.4 L280.3,63.2 L280.8,80.5\n",
"\t\tL281.2,100.0 L281.7,121.6 L282.2,144.8 L282.7,169.2 L283.1,194.6 L283.6,220.6 L284.1,246.7 L284.6,272.6\n",
"\t\tL285.0,297.8 L285.5,322.1 L286.0,345.0 L286.4,366.1 L286.9,385.3 L287.4,402.1 L287.9,416.3 L288.3,427.8\n",
"\t\tL288.8,436.3 L289.3,441.7 L289.8,443.9 L290.2,443.0 L290.7,438.8 L291.2,431.6 L291.6,421.3 L292.1,408.1\n",
"\t\tL292.6,392.3 L293.1,374.1 L293.5,353.7 L294.0,331.4 L294.5,307.7 L295.0,282.8 L295.4,257.1 L295.9,231.1\n",
"\t\tL296.4,205.0 L296.8,179.3 L297.3,154.4 L297.8,130.7 L298.3,108.4 L298.7,88.0 L299.2,69.8 L299.7,54.0\n",
"\t\tL300.2,40.8 L300.6,30.5 L301.1,23.3 L301.6,19.1 L302.0,18.2 L302.5,20.4 L303.0,25.8 L303.5,34.3\n",
"\t\tL303.9,45.8 L304.4,60.0 L304.9,76.8 L305.4,96.0 L305.8,117.1 L306.3,140.0 L306.8,164.3 L307.2,189.5\n",
"\t\tL307.7,215.4 L308.2,241.5 L308.7,267.5 L309.1,292.9 L309.6,317.3 L310.1,340.5 L310.6,362.1 L311.0,381.6\n",
"\t\tL311.5,398.9 L312.0,413.7 L312.4,425.7 L312.9,434.8 L313.4,440.9 L313.9,443.7 L314.3,443.4 L314.8,439.9\n",
"\t\tL315.3,433.3 L315.7,423.6 L316.2,411.0 L316.7,395.7 L317.2,377.9 L317.6,357.9 L318.1,336.0 L318.6,312.5\n",
"\t\tL319.1,287.8 L319.5,262.3 L320.0,236.3 L320.5,210.2 L320.9,184.4 L321.4,159.3 L321.9,135.3 L322.4,112.7\n",
"\t\tL322.8,92.0 L323.3,73.3 L323.8,56.9 L324.3,43.2 L324.7,32.4 L325.2,24.5 L325.7,19.7 L326.1,18.1\n",
"\t\tL326.6,19.7 L327.1,24.5 L327.6,32.4 L328.0,43.2 L328.5,56.9 L329.0,73.3 L329.5,92.0 L329.9,112.7\n",
"\t\tL330.4,135.3 L330.9,159.3 L331.3,184.4 L331.8,210.2 L332.3,236.3 L332.8,262.3 L333.2,287.8 L333.7,312.5\n",
"\t\tL334.2,336.0 L334.7,357.9 L335.1,377.9 L335.6,395.7 L336.1,411.0 L336.5,423.6 L337.0,433.3 L337.5,439.9\n",
"\t\tL338.0,443.4 L338.4,443.7 L338.9,440.9 L339.4,434.8 L339.9,425.7 L340.3,413.7 L340.8,398.9 L341.3,381.6\n",
"\t\tL341.7,362.1 L342.2,340.5 L342.7,317.3 L343.2,292.9 L343.6,267.5 L344.1,241.5 L344.6,215.4 L345.1,189.5\n",
"\t\tL345.5,164.3 L346.0,140.0 L346.5,117.1 L346.9,96.0 L347.4,76.8 L347.9,60.0 L348.4,45.8 L348.8,34.3\n",
"\t\tL349.3,25.8 L349.8,20.4 L350.3,18.2 L350.7,19.1 L351.2,23.3 L351.7,30.5 L352.1,40.8 L352.6,54.0\n",
"\t\tL353.1,69.8 L353.6,88.0 L354.0,108.4 L354.5,130.7 L355.0,154.4 L355.5,179.3 L355.9,205.0 L356.4,231.0\n",
"\t\tL356.9,257.1 L357.3,282.8 L357.8,307.7 L358.3,331.4 L358.8,353.7 L359.2,374.1 L359.7,392.3 L360.2,408.1\n",
"\t\tL360.7,421.3 L361.1,431.6 L361.6,438.8 L362.1,443.0 L362.5,443.9 L363.0,441.7 L363.5,436.3 L364.0,427.8\n",
"\t\tL364.4,416.3 L364.9,402.1 L365.4,385.3 L365.9,366.1 L366.3,345.0 L366.8,322.1 L367.3,297.8 L367.7,272.6\n",
"\t\tL368.2,246.7 L368.7,220.6 L369.2,194.6 L369.6,169.2 L370.1,144.8 L370.6,121.6 L371.1,100.0 L371.5,80.5\n",
"\t\tL372.0,63.2 L372.5,48.4 L372.9,36.4 L373.4,27.3 L373.9,21.2 L374.4,18.4 L374.8,18.7 L375.3,22.2\n",
"\t\tL375.8,28.8 L376.2,38.5 L376.7,51.1 L377.2,66.4 L377.7,84.2 L378.1,104.2 L378.6,126.1 L379.1,149.6\n",
"\t\tL379.6,174.3 L380.0,199.8 L380.5,225.8 L381.0,251.9 L381.4,277.7 L381.9,302.8 L382.4,326.8 L382.9,349.4\n",
"\t\tL383.3,370.1 L383.8,388.8 L384.3,405.2 L384.8,418.9 L385.2,429.7 L385.7,437.6 L386.2,442.4 L386.6,444.0\n",
"\t\tL387.1,442.4 L387.6,437.6 L388.1,429.7 L388.5,418.9 L389.0,405.2 L389.5,388.8 L390.0,370.1 L390.4,349.4\n",
"\t\tL390.9,326.8 L391.4,302.8 L391.8,277.7 L392.3,251.9 L392.8,225.8 L393.3,199.8 L393.7,174.3 L394.2,149.6\n",
"\t\tL394.7,126.1 L395.2,104.2 L395.6,84.2 L396.1,66.4 L396.6,51.1 L397.0,38.5 L397.5,28.8 L398.0,22.2\n",
"\t\tL398.5,18.7 L398.9,18.4 L399.4,21.2 L399.9,27.3 L400.4,36.4 L400.8,48.4 L401.3,63.2 L401.8,80.5\n",
"\t\tL402.2,100.0 L402.7,121.6 L403.2,144.8 L403.7,169.2 L404.1,194.6 L404.6,220.6 L405.1,246.7 L405.6,272.6\n",
"\t\tL406.0,297.8 L406.5,322.1 L407.0,345.0 L407.4,366.1 L407.9,385.3 L408.4,402.1 L408.9,416.3 L409.3,427.8\n",
"\t\tL409.8,436.3 L410.3,441.7 L410.8,443.9 L411.2,443.0 L411.7,438.8 L412.2,431.6 L412.6,421.3 L413.1,408.1\n",
"\t\tL413.6,392.3 L414.1,374.1 L414.5,353.7 L415.0,331.4 L415.5,307.7 L416.0,282.8 L416.4,257.1 L416.9,231.1\n",
"\t\tL417.4,205.0 L417.8,179.3 L418.3,154.4 L418.8,130.7 L419.3,108.4 L419.7,88.0 L420.2,69.8 L420.7,54.0\n",
"\t\tL421.2,40.8 L421.6,30.5 L422.1,23.3 L422.6,19.1 L423.0,18.2 L423.5,20.4 L424.0,25.8 L424.5,34.3\n",
"\t\tL424.9,45.8 L425.4,60.0 L425.9,76.8 L426.4,96.0 L426.8,117.1 L427.3,140.0 L427.8,164.3 L428.2,189.5\n",
"\t\tL428.7,215.4 L429.2,241.5 L429.7,267.5 L430.1,292.9 L430.6,317.3 L431.1,340.5 L431.5,362.1 L432.0,381.6\n",
"\t\tL432.5,398.9 L433.0,413.7 L433.4,425.7 L433.9,434.8 L434.4,440.9 L434.9,443.7 L435.3,443.4 L435.8,439.9\n",
"\t\tL436.3,433.3 L436.7,423.6 L437.2,411.0 L437.7,395.7 L438.2,377.9 L438.6,357.9 L439.1,336.0 L439.6,312.5\n",
"\t\tL440.1,287.8 L440.5,262.3 L441.0,236.3 L441.5,210.2 L441.9,184.4 L442.4,159.3 L442.9,135.3 L443.4,112.7\n",
"\t\tL443.8,92.0 L444.3,73.3 L444.8,56.9 L445.3,43.2 L445.7,32.4 L446.2,24.5 L446.7,19.7 L447.1,18.1\n",
"\t\tL447.6,19.7 L448.1,24.5 L448.6,32.4 L449.0,43.2 L449.5,56.9 L450.0,73.3 L450.5,92.0 L450.9,112.7\n",
"\t\tL451.4,135.3 L451.9,159.3 L452.3,184.4 L452.8,210.2 L453.3,236.3 L453.8,262.3 L454.2,287.8 L454.7,312.5\n",
"\t\tL455.2,336.0 L455.7,357.9 L456.1,377.9 L456.6,395.7 L457.1,411.0 L457.5,423.6 L458.0,433.3 L458.5,439.9\n",
"\t\tL459.0,443.4 L459.4,443.7 L459.9,440.9 L460.4,434.8 L460.9,425.7 L461.3,413.7 L461.8,398.9 L462.3,381.6\n",
"\t\tL462.7,362.1 L463.2,340.5 L463.7,317.3 L464.2,292.9 L464.6,267.5 L465.1,241.5 L465.6,215.4 L466.1,189.5\n",
"\t\tL466.5,164.3 L467.0,140.0 L467.5,117.1 L467.9,96.0 L468.4,76.8 L468.9,60.0 L469.4,45.8 L469.8,34.3\n",
"\t\tL470.3,25.8 L470.8,20.4 L471.3,18.2 L471.7,19.1 L472.2,23.3 L472.7,30.5 L473.1,40.8 L473.6,54.0\n",
"\t\tL474.1,69.8 L474.6,88.0 L475.0,108.4 L475.5,130.7 L476.0,154.4 L476.5,179.3 L476.9,205.0 L477.4,231.0\n",
"\t\tL477.9,257.1 L478.3,282.8 L478.8,307.7 L479.3,331.4 L479.8,353.7 L480.2,374.1 L480.7,392.3 L481.2,408.1\n",
"\t\tL481.7,421.3 L482.1,431.6 L482.6,438.8 L483.1,443.0 L483.5,443.9 L484.0,441.7 L484.5,436.3 L485.0,427.8\n",
"\t\tL485.4,416.3 L485.9,402.1 L486.4,385.3 L486.9,366.1 L487.3,345.0 L487.8,322.1 L488.3,297.8 L488.7,272.6\n",
"\t\tL489.2,246.7 L489.7,220.6 L490.2,194.6 L490.6,169.2 L491.1,144.8 L491.6,121.6 L492.0,100.0 L492.5,80.5\n",
"\t\tL493.0,63.2 L493.5,48.4 L493.9,36.4 L494.4,27.3 L494.9,21.2 L495.4,18.4 L495.8,18.7 L496.3,22.2\n",
"\t\tL496.8,28.8 L497.2,38.5 L497.7,51.1 L498.2,66.4 L498.7,84.2 L499.1,104.2 L499.6,126.1 L500.1,149.6\n",
"\t\tL500.6,174.3 L501.0,199.8 L501.5,225.8 L502.0,251.9 L502.4,277.7 L502.9,302.8 L503.4,326.8 L503.9,349.4\n",
"\t\tL504.3,370.1 L504.8,388.8 L505.3,405.2 L505.8,418.9 L506.2,429.7 L506.7,437.6 L507.2,442.4 L507.6,444.0\n",
"\t\tL508.1,442.4 L508.6,437.6 L509.1,429.7 L509.5,418.9 L510.0,405.2 L510.5,388.8 L511.0,370.1 L511.4,349.4\n",
"\t\tL511.9,326.8 L512.4,302.8 L512.8,277.7 L513.3,251.9 L513.8,225.8 L514.3,199.8 L514.7,174.3 L515.2,149.6\n",
"\t\tL515.7,126.1 L516.2,104.2 L516.6,84.2 L517.1,66.4 L517.6,51.1 L518.0,38.5 L518.5,28.8 L519.0,22.2\n",
"\t\tL519.5,18.7 L519.9,18.4 L520.4,21.2 L520.9,27.3 L521.4,36.4 L521.8,48.4 L522.3,63.2 L522.8,80.5\n",
"\t\tL523.2,100.0 L523.7,121.6 L524.2,144.8 L524.7,169.2 L525.1,194.6 L525.6,220.6 L526.1,246.7 L526.6,272.6\n",
"\t\tL527.0,297.8 L527.5,322.1 L528.0,345.0 L528.4,366.1 L528.9,385.3 L529.4,402.1 L529.9,416.3 L530.3,427.8\n",
"\t\tL530.8,436.3 L531.3,441.7 L531.8,443.9 L532.2,443.0 L532.7,438.8 L533.2,431.6 L533.6,421.3 L534.1,408.1\n",
"\t\tL534.6,392.3 L535.1,374.1 L535.5,353.7 L536.0,331.4 L536.5,307.7 L537.0,282.8 L537.4,257.1 L537.9,231.1\n",
"\t\t '/></g>\n",
"\t</g>\n",
"<g fill=\"none\" color=\"white\" stroke=\"rgb(148, 0, 211)\" stroke-width=\"2.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"2.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,18.1 L53.9,444.0 L575.0,444.0 L575.0,18.1 L53.9,18.1 Z '/></g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"</g>\n",
"</svg>\n",
"\n"
]
},
"metadata": {
"": ""
},
"output_type": "display_data"
}
],
"source": [
"IFFT(FFT(sines)):gnuplot()"
]
},
{
"cell_type": "markdown",
"id": "6c306c6e-dddc-4d8c-bac8-04f009c406df",
"metadata": {},
"source": [
"With 20.5 sines in the fragment, the plot is much better when applying a windowing function:"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "03d8fa36-aad6-4de9-9866-1551c5010d25",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n",
"<svg \n",
" width=\"600\" height=\"480\"\n",
" viewBox=\"0 0 600 480\"\n",
" xmlns=\"http://www.w3.org/2000/svg\"\n",
" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n",
">\n",
"\n",
"<title>Gnuplot</title>\n",
"<desc>Produced by GNUPLOT 5.2 patchlevel 8 </desc>\n",
"\n",
"<g id=\"gnuplot_canvas\">\n",
"\n",
"<rect x=\"0\" y=\"0\" width=\"600\" height=\"480\" fill=\"none\"/>\n",
"<defs>\n",
"\n",
"\t<circle id='gpDot' r='0.5' stroke-width='0.5' stroke='currentColor'/>\n",
"\t<path id='gpPt0' stroke-width='0.222' stroke='currentColor' d='M-1,0 h2 M0,-1 v2'/>\n",
"\t<path id='gpPt1' stroke-width='0.222' stroke='currentColor' d='M-1,-1 L1,1 M1,-1 L-1,1'/>\n",
"\t<path id='gpPt2' stroke-width='0.222' stroke='currentColor' d='M-1,0 L1,0 M0,-1 L0,1 M-1,-1 L1,1 M-1,1 L1,-1'/>\n",
"\t<rect id='gpPt3' stroke-width='0.222' stroke='currentColor' x='-1' y='-1' width='2' height='2'/>\n",
"\t<rect id='gpPt4' stroke-width='0.222' stroke='currentColor' fill='currentColor' x='-1' y='-1' width='2' height='2'/>\n",
"\t<circle id='gpPt5' stroke-width='0.222' stroke='currentColor' cx='0' cy='0' r='1'/>\n",
"\t<use xlink:href='#gpPt5' id='gpPt6' fill='currentColor' stroke='none'/>\n",
"\t<path id='gpPt7' stroke-width='0.222' stroke='currentColor' d='M0,-1.33 L-1.33,0.67 L1.33,0.67 z'/>\n",
"\t<use xlink:href='#gpPt7' id='gpPt8' fill='currentColor' stroke='none'/>\n",
"\t<use xlink:href='#gpPt7' id='gpPt9' stroke='currentColor' transform='rotate(180)'/>\n",
"\t<use xlink:href='#gpPt9' id='gpPt10' fill='currentColor' stroke='none'/>\n",
"\t<use xlink:href='#gpPt3' id='gpPt11' stroke='currentColor' transform='rotate(45)'/>\n",
"\t<use xlink:href='#gpPt11' id='gpPt12' fill='currentColor' stroke='none'/>\n",
"\t<path id='gpPt13' stroke-width='0.222' stroke='currentColor' d='M0,1.330 L1.265,0.411 L0.782,-1.067 L-0.782,-1.076 L-1.265,0.411 z'/>\n",
"\t<use xlink:href='#gpPt13' id='gpPt14' fill='currentColor' stroke='none'/>\n",
"\t<filter id='textbox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>\n",
"\t <feFlood flood-color='white' flood-opacity='1' result='bgnd'/>\n",
"\t <feComposite in='SourceGraphic' in2='bgnd' operator='atop'/>\n",
"\t</filter>\n",
"\t<filter id='greybox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>\n",
"\t <feFlood flood-color='lightgrey' flood-opacity='1' result='grey'/>\n",
"\t <feComposite in='SourceGraphic' in2='grey' operator='atop'/>\n",
"\t</filter>\n",
"</defs>\n",
"<g fill=\"none\" color=\"white\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M53.9,444.0 L575.0,444.0 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,444.0 L62.9,444.0 M575.0,444.0 L566.0,444.0 '/>\t<g transform=\"translate(45.6,447.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"end\">\n",
"\t\t<text><tspan font-family=\"Arial\" >-1</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M53.9,337.5 L575.0,337.5 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,337.5 L62.9,337.5 M575.0,337.5 L566.0,337.5 '/>\t<g transform=\"translate(45.6,341.4)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"end\">\n",
"\t\t<text><tspan font-family=\"Arial\" >-0.5</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M53.9,231.0 L575.0,231.0 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,231.0 L62.9,231.0 M575.0,231.0 L566.0,231.0 '/>\t<g transform=\"translate(45.6,234.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"end\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M53.9,124.6 L575.0,124.6 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,124.6 L62.9,124.6 M575.0,124.6 L566.0,124.6 '/>\t<g transform=\"translate(45.6,128.5)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"end\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.5</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M53.9,18.1 L575.0,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,18.1 L62.9,18.1 M575.0,18.1 L566.0,18.1 '/>\t<g transform=\"translate(45.6,22.0)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"end\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 1</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M53.9,444.0 L53.9,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,444.0 L53.9,435.0 M53.9,18.1 L53.9,27.1 '/>\t<g transform=\"translate(53.9,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M140.8,444.0 L140.8,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M140.8,444.0 L140.8,435.0 M140.8,18.1 L140.8,27.1 '/>\t<g transform=\"translate(140.8,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.002</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M227.6,444.0 L227.6,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M227.6,444.0 L227.6,435.0 M227.6,18.1 L227.6,27.1 '/>\t<g transform=\"translate(227.6,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.004</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M314.5,444.0 L314.5,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M314.5,444.0 L314.5,435.0 M314.5,18.1 L314.5,27.1 '/>\t<g transform=\"translate(314.5,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.006</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M401.3,444.0 L401.3,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M401.3,444.0 L401.3,435.0 M401.3,18.1 L401.3,27.1 '/>\t<g transform=\"translate(401.3,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.008</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M488.2,444.0 L488.2,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M488.2,444.0 L488.2,435.0 M488.2,18.1 L488.2,27.1 '/>\t<g transform=\"translate(488.2,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.01</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M575.0,444.0 L575.0,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M575.0,444.0 L575.0,435.0 M575.0,18.1 L575.0,27.1 '/>\t<g transform=\"translate(575.0,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.012</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,18.1 L53.9,444.0 L575.0,444.0 L575.0,18.1 L53.9,18.1 Z '/></g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"\t<g id=\"gnuplot_plot_1\" ><title>gnuplot_plot_1</title>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='rgb(148, 0, 211)' d='M72.1,18.1 L72.6,192.8 L72.6,18.1 M77.4,18.1 L77.5,59.0 L77.7,18.1 M84.6,18.1 L85.4,34.0\n",
"\t\tL86.4,52.6 L87.4,68.6 L88.4,82.4 L89.3,94.4 L90.3,104.9 L91.3,114.2 L92.3,122.4 L93.3,129.7\n",
"\t\tL94.3,136.3 L95.3,142.2 L96.2,147.5 L97.2,152.4 L98.2,156.8 L99.2,160.8 L100.2,164.5 L101.2,167.9\n",
"\t\tL102.1,171.0 L103.1,173.9 L104.1,176.5 L105.1,179.0 L106.1,181.3 L107.1,183.5 L108.1,185.5 L109.0,187.3\n",
"\t\tL110.0,189.1 L111.0,190.7 L112.0,192.3 L113.0,193.7 L114.0,195.1 L115.0,196.4 L115.9,197.6 L116.9,198.8\n",
"\t\tL117.9,199.9 L118.9,200.9 L119.9,201.9 L120.9,202.8 L121.8,203.7 L122.8,204.6 L123.8,205.4 L124.8,206.2\n",
"\t\tL125.8,206.9 L126.8,207.6 L127.8,208.3 L128.7,208.9 L129.7,209.5 L130.7,210.1 L131.7,210.7 L132.7,211.2\n",
"\t\tL133.7,211.7 L134.6,212.2 L135.6,212.7 L136.6,213.1 L137.6,213.6 L138.6,214.0 L139.6,214.4 L140.6,214.8\n",
"\t\tL141.5,215.2 L142.5,215.5 L143.5,215.9 L144.5,216.2 L145.5,216.6 L146.5,216.9 L147.4,217.2 L148.4,217.5\n",
"\t\tL149.4,217.8 L150.4,218.0 L151.4,218.3 L152.4,218.6 L153.4,218.8 L154.3,219.1 L155.3,219.3 L156.3,219.5\n",
"\t\tL157.3,219.8 L158.3,220.0 L159.3,220.2 L160.2,220.4 L161.2,220.6 L162.2,220.8 L163.2,221.0 L164.2,221.1\n",
"\t\tL165.2,221.3 L166.2,221.5 L167.1,221.6 L168.1,221.8 L169.1,222.0 L170.1,222.1 L171.1,222.3 L172.1,222.4\n",
"\t\tL173.0,222.6 L174.0,222.7 L175.0,222.8 L176.0,223.0 L177.0,223.1 L178.0,223.2 L179.0,223.3 L179.9,223.4\n",
"\t\tL180.9,223.6 L181.9,223.7 L182.9,223.8 L183.9,223.9 L184.9,224.0 L185.8,224.1 L186.8,224.2 L187.8,224.3\n",
"\t\tL188.8,224.4 L189.8,224.5 L190.8,224.6 L191.8,224.7 L192.7,224.7 L193.7,224.8 L194.7,224.9 L195.7,225.0\n",
"\t\tL196.7,225.1 L197.7,225.2 L198.6,225.2 L199.6,225.3 L200.6,225.4 L201.6,225.5 L202.6,225.5 L203.6,225.6\n",
"\t\tL204.6,225.7 L205.5,225.7 L206.5,225.8 L207.5,225.9 L208.5,225.9 L209.5,226.0 L210.5,226.0 L211.5,226.1\n",
"\t\tL212.4,226.2 L213.4,226.2 L214.4,226.3 L215.4,226.3 L216.4,226.4 L217.4,226.4 L218.3,226.5 L219.3,226.5\n",
"\t\tL220.3,226.6 L221.3,226.6 L222.3,226.7 L223.3,226.7 L224.3,226.8 L225.2,226.8 L226.2,226.9 L227.2,226.9\n",
"\t\tL228.2,226.9 L229.2,227.0 L230.2,227.0 L231.1,227.1 L232.1,227.1 L233.1,227.2 L234.1,227.2 L235.1,227.2\n",
"\t\tL236.1,227.3 L237.1,227.3 L238.0,227.3 L239.0,227.4 L240.0,227.4 L241.0,227.4 L242.0,227.5 L243.0,227.5\n",
"\t\tL243.9,227.5 L244.9,227.6 L245.9,227.6 L246.9,227.6 L247.9,227.7 L248.9,227.7 L249.9,227.7 L250.8,227.8\n",
"\t\tL251.8,227.8 L252.8,227.8 L253.8,227.8 L254.8,227.9 L255.8,227.9 L256.7,227.9 L257.7,228.0 L258.7,228.0\n",
"\t\tL259.7,228.0 L260.7,228.0 L261.7,228.1 L262.7,228.1 L263.6,228.1 L264.6,228.1 L265.6,228.2 L266.6,228.2\n",
"\t\tL267.6,228.2 L268.6,228.2 L269.5,228.2 L270.5,228.3 L271.5,228.3 L272.5,228.3 L273.5,228.3 L274.5,228.3\n",
"\t\tL275.5,228.4 L276.4,228.4 L277.4,228.4 L278.4,228.4 L279.4,228.4 L280.4,228.5 L281.4,228.5 L282.3,228.5\n",
"\t\tL283.3,228.5 L284.3,228.5 L285.3,228.6 L286.3,228.6 L287.3,228.6 L288.3,228.6 L289.2,228.6 L290.2,228.6\n",
"\t\tL291.2,228.7 L292.2,228.7 L293.2,228.7 L294.2,228.7 L295.2,228.7 L296.1,228.7 L297.1,228.8 L298.1,228.8\n",
"\t\tL299.1,228.8 L300.1,228.8 L301.1,228.8 L302.0,228.8 L303.0,228.8 L304.0,228.9 L305.0,228.9 L306.0,228.9\n",
"\t\tL307.0,228.9 L308.0,228.9 L308.9,228.9 L309.9,228.9 L310.9,228.9 L311.9,229.0 L312.9,229.0 L313.9,229.0\n",
"\t\tL314.8,229.0 L315.8,229.0 L316.8,229.0 L317.8,229.0 L318.8,229.0 L319.8,229.1 L320.8,229.1 L321.7,229.1\n",
"\t\tL322.7,229.1 L323.7,229.1 L324.7,229.1 L325.7,229.1 L326.7,229.1 L327.6,229.1 L328.6,229.2 L329.6,229.2\n",
"\t\tL330.6,229.2 L331.6,229.2 L332.6,229.2 L333.6,229.2 L334.5,229.2 L335.5,229.2 L336.5,229.2 L337.5,229.2\n",
"\t\tL338.5,229.2 L339.5,229.3 L340.4,229.3 L341.4,229.3 L342.4,229.3 L343.4,229.3 L344.4,229.3 L345.4,229.3\n",
"\t\tL346.4,229.3 L347.3,229.3 L348.3,229.3 L349.3,229.3 L350.3,229.4 L351.3,229.4 L352.3,229.4 L353.2,229.4\n",
"\t\tL354.2,229.4 L355.2,229.4 L356.2,229.4 L357.2,229.4 L358.2,229.4 L359.2,229.4 L360.1,229.4 L361.1,229.4\n",
"\t\tL362.1,229.4 L363.1,229.4 L364.1,229.5 L365.1,229.5 L366.0,229.5 L367.0,229.5 L368.0,229.5 L369.0,229.5\n",
"\t\tL370.0,229.5 L371.0,229.5 L372.0,229.5 L372.9,229.5 L373.9,229.5 L374.9,229.5 L375.9,229.5 L376.9,229.5\n",
"\t\tL377.9,229.5 L378.8,229.6 L379.8,229.6 L380.8,229.6 L381.8,229.6 L382.8,229.6 L383.8,229.6 L384.8,229.6\n",
"\t\tL385.7,229.6 L386.7,229.6 L387.7,229.6 L388.7,229.6 L389.7,229.6 L390.7,229.6 L391.7,229.6 L392.6,229.6\n",
"\t\tL393.6,229.6 L394.6,229.6 L395.6,229.6 L396.6,229.6 L397.6,229.7 L398.5,229.7 L399.5,229.7 L400.5,229.7\n",
"\t\tL401.5,229.7 L402.5,229.7 L403.5,229.7 L404.5,229.7 L405.4,229.7 L406.4,229.7 L407.4,229.7 L408.4,229.7\n",
"\t\tL409.4,229.7 L410.4,229.7 L411.3,229.7 L412.3,229.7 L413.3,229.7 L414.3,229.7 L415.3,229.7 L416.3,229.7\n",
"\t\tL417.3,229.7 L418.2,229.7 L419.2,229.7 L420.2,229.7 L421.2,229.8 L422.2,229.8 L423.2,229.8 L424.1,229.8\n",
"\t\tL425.1,229.8 L426.1,229.8 L427.1,229.8 L428.1,229.8 L429.1,229.8 L430.1,229.8 L431.0,229.8 L432.0,229.8\n",
"\t\tL433.0,229.8 L434.0,229.8 L435.0,229.8 L436.0,229.8 L436.9,229.8 L437.9,229.8 L438.9,229.8 L439.9,229.8\n",
"\t\tL440.9,229.8 L441.9,229.8 L442.9,229.8 L443.8,229.8 L444.8,229.8 L445.8,229.8 L446.8,229.8 L447.8,229.8\n",
"\t\tL448.8,229.8 L449.7,229.8 L450.7,229.8 L451.7,229.8 L452.7,229.8 L453.7,229.9 L454.7,229.9 L455.7,229.9\n",
"\t\tL456.6,229.9 L457.6,229.9 L458.6,229.9 L459.6,229.9 L460.6,229.9 L461.6,229.9 L462.5,229.9 L463.5,229.9\n",
"\t\tL464.5,229.9 L465.5,229.9 L466.5,229.9 L467.5,229.9 L468.5,229.9 L469.4,229.9 L470.4,229.9 L471.4,229.9\n",
"\t\tL472.4,229.9 L473.4,229.9 L474.4,229.9 L475.3,229.9 L476.3,229.9 L477.3,229.9 L478.3,229.9 L479.3,229.9\n",
"\t\tL480.3,229.9 L481.3,229.9 L482.2,229.9 L483.2,229.9 L484.2,229.9 L485.2,229.9 L486.2,229.9 L487.2,229.9\n",
"\t\tL488.2,229.9 L489.1,229.9 L490.1,229.9 L491.1,229.9 L492.1,229.9 L493.1,229.9 L494.1,229.9 L495.0,229.9\n",
"\t\tL496.0,229.9 L497.0,229.9 L498.0,229.9 L499.0,229.9 L500.0,229.9 L501.0,229.9 L501.9,229.9 L502.9,229.9\n",
"\t\tL503.9,229.9 L504.9,229.9 L505.9,229.9 L506.9,229.9 L507.8,229.9 L508.8,230.0 L509.8,230.0 L510.8,230.0\n",
"\t\tL511.8,230.0 L512.8,230.0 L513.8,230.0 L514.7,230.0 L515.7,230.0 L516.7,230.0 L517.7,230.0 L518.7,230.0\n",
"\t\tL519.7,230.0 L520.6,230.0 L521.6,230.0 L522.6,230.0 L523.6,230.0 L524.6,230.0 L525.6,230.0 L526.6,230.0\n",
"\t\tL527.5,230.0 L528.5,230.0 L529.5,230.0 L530.5,230.0 L531.5,230.0 L532.5,230.0 L533.4,230.0 L534.4,230.0\n",
"\t\tL535.4,230.0 L536.4,230.0 L537.4,230.0 L538.4,230.0 L539.4,230.0 L540.3,230.0 L541.3,230.0 L542.3,230.0\n",
"\t\tL543.3,230.0 L544.3,230.0 L545.3,230.0 L546.2,230.0 L547.2,230.0 L548.2,230.0 L549.2,230.0 L550.2,230.0\n",
"\t\tL551.2,230.0 L552.2,230.0 L553.1,230.0 L554.1,230.0 L555.1,230.0 L556.1,230.0 L557.1,230.0 L558.1,230.0\n",
"\t\tL559.0,230.0 '/></g>\n",
"\t</g>\n",
"<g fill=\"none\" color=\"white\" stroke=\"rgb(148, 0, 211)\" stroke-width=\"2.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"2.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,18.1 L53.9,444.0 L575.0,444.0 L575.0,18.1 L53.9,18.1 Z '/></g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"</g>\n",
"</svg>\n",
"\n"
]
},
"metadata": {
"": ""
},
"output_type": "display_data"
}
],
"source": [
"tostream(magnitude(FFT(Hamming(Stream.SinOsc(samplerate*20.5/1024):sub(1, 1024))))):gnuplot()"
]
},
{
"cell_type": "markdown",
"id": "c1e86db7-d3a6-4626-a71c-66bea1c04ae2",
"metadata": {},
"source": [
"Testing phase plotting. This is 20 sines but with phase 0.7 ($0.7 \\times 2\\pi$).\n",
"\n",
"**FIXME:** How exactly to interpret these numbers?"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "0d8e9009-255c-4840-b930-408eb3c419ed",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.9390625, 0, 0, 0, 0, 0, 0, 0, 0, 0}\n"
]
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n",
"<svg \n",
" width=\"600\" height=\"480\"\n",
" viewBox=\"0 0 600 480\"\n",
" xmlns=\"http://www.w3.org/2000/svg\"\n",
" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n",
">\n",
"\n",
"<title>Gnuplot</title>\n",
"<desc>Produced by GNUPLOT 5.2 patchlevel 8 </desc>\n",
"\n",
"<g id=\"gnuplot_canvas\">\n",
"\n",
"<rect x=\"0\" y=\"0\" width=\"600\" height=\"480\" fill=\"none\"/>\n",
"<defs>\n",
"\n",
"\t<circle id='gpDot' r='0.5' stroke-width='0.5' stroke='currentColor'/>\n",
"\t<path id='gpPt0' stroke-width='0.222' stroke='currentColor' d='M-1,0 h2 M0,-1 v2'/>\n",
"\t<path id='gpPt1' stroke-width='0.222' stroke='currentColor' d='M-1,-1 L1,1 M1,-1 L-1,1'/>\n",
"\t<path id='gpPt2' stroke-width='0.222' stroke='currentColor' d='M-1,0 L1,0 M0,-1 L0,1 M-1,-1 L1,1 M-1,1 L1,-1'/>\n",
"\t<rect id='gpPt3' stroke-width='0.222' stroke='currentColor' x='-1' y='-1' width='2' height='2'/>\n",
"\t<rect id='gpPt4' stroke-width='0.222' stroke='currentColor' fill='currentColor' x='-1' y='-1' width='2' height='2'/>\n",
"\t<circle id='gpPt5' stroke-width='0.222' stroke='currentColor' cx='0' cy='0' r='1'/>\n",
"\t<use xlink:href='#gpPt5' id='gpPt6' fill='currentColor' stroke='none'/>\n",
"\t<path id='gpPt7' stroke-width='0.222' stroke='currentColor' d='M0,-1.33 L-1.33,0.67 L1.33,0.67 z'/>\n",
"\t<use xlink:href='#gpPt7' id='gpPt8' fill='currentColor' stroke='none'/>\n",
"\t<use xlink:href='#gpPt7' id='gpPt9' stroke='currentColor' transform='rotate(180)'/>\n",
"\t<use xlink:href='#gpPt9' id='gpPt10' fill='currentColor' stroke='none'/>\n",
"\t<use xlink:href='#gpPt3' id='gpPt11' stroke='currentColor' transform='rotate(45)'/>\n",
"\t<use xlink:href='#gpPt11' id='gpPt12' fill='currentColor' stroke='none'/>\n",
"\t<path id='gpPt13' stroke-width='0.222' stroke='currentColor' d='M0,1.330 L1.265,0.411 L0.782,-1.067 L-0.782,-1.076 L-1.265,0.411 z'/>\n",
"\t<use xlink:href='#gpPt13' id='gpPt14' fill='currentColor' stroke='none'/>\n",
"\t<filter id='textbox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>\n",
"\t <feFlood flood-color='white' flood-opacity='1' result='bgnd'/>\n",
"\t <feComposite in='SourceGraphic' in2='bgnd' operator='atop'/>\n",
"\t</filter>\n",
"\t<filter id='greybox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>\n",
"\t <feFlood flood-color='lightgrey' flood-opacity='1' result='grey'/>\n",
"\t <feComposite in='SourceGraphic' in2='grey' operator='atop'/>\n",
"\t</filter>\n",
"</defs>\n",
"<g fill=\"none\" color=\"white\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M53.9,444.0 L575.0,444.0 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,444.0 L62.9,444.0 M575.0,444.0 L566.0,444.0 '/>\t<g transform=\"translate(45.6,447.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"end\">\n",
"\t\t<text><tspan font-family=\"Arial\" >-1</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M53.9,337.5 L575.0,337.5 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,337.5 L62.9,337.5 M575.0,337.5 L566.0,337.5 '/>\t<g transform=\"translate(45.6,341.4)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"end\">\n",
"\t\t<text><tspan font-family=\"Arial\" >-0.5</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M53.9,231.0 L575.0,231.0 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,231.0 L62.9,231.0 M575.0,231.0 L566.0,231.0 '/>\t<g transform=\"translate(45.6,234.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"end\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M53.9,124.6 L575.0,124.6 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,124.6 L62.9,124.6 M575.0,124.6 L566.0,124.6 '/>\t<g transform=\"translate(45.6,128.5)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"end\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.5</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M53.9,18.1 L575.0,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,18.1 L62.9,18.1 M575.0,18.1 L566.0,18.1 '/>\t<g transform=\"translate(45.6,22.0)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"end\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 1</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M53.9,444.0 L53.9,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,444.0 L53.9,435.0 M53.9,18.1 L53.9,27.1 '/>\t<g transform=\"translate(53.9,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M140.8,444.0 L140.8,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M140.8,444.0 L140.8,435.0 M140.8,18.1 L140.8,27.1 '/>\t<g transform=\"translate(140.8,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.002</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M227.6,444.0 L227.6,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M227.6,444.0 L227.6,435.0 M227.6,18.1 L227.6,27.1 '/>\t<g transform=\"translate(227.6,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.004</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M314.5,444.0 L314.5,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M314.5,444.0 L314.5,435.0 M314.5,18.1 L314.5,27.1 '/>\t<g transform=\"translate(314.5,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.006</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M401.3,444.0 L401.3,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M401.3,444.0 L401.3,435.0 M401.3,18.1 L401.3,27.1 '/>\t<g transform=\"translate(401.3,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.008</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M488.2,444.0 L488.2,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M488.2,444.0 L488.2,435.0 M488.2,18.1 L488.2,27.1 '/>\t<g transform=\"translate(488.2,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.01</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M575.0,444.0 L575.0,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M575.0,444.0 L575.0,435.0 M575.0,18.1 L575.0,27.1 '/>\t<g transform=\"translate(575.0,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.012</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,18.1 L53.9,444.0 L575.0,444.0 L575.0,18.1 L53.9,18.1 Z '/></g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"\t<g id=\"gnuplot_plot_1\" ><title>gnuplot_plot_1</title>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='rgb(148, 0, 211)' d='M54.9,231.0 L55.9,231.0 L56.9,231.0 L57.8,231.0 L58.8,231.0 L59.8,231.0 L60.8,231.0 L61.8,231.0\n",
"\t\tL62.8,231.0 L63.7,231.0 L64.7,231.0 L65.7,231.0 L66.7,231.0 L67.7,231.0 L68.7,231.0 L69.7,231.0\n",
"\t\tL70.6,231.0 L71.6,231.0 L72.6,231.0 L73.6,231.0 L74.6,31.1 L75.6,231.0 L76.5,231.0 L77.5,231.0\n",
"\t\tL78.5,231.0 L79.5,231.0 L80.5,231.0 L81.5,231.0 L82.5,231.0 L83.4,231.0 L84.4,231.0 L85.4,231.0\n",
"\t\tL86.4,231.0 L87.4,231.0 L88.4,231.0 L89.3,231.0 L90.3,231.0 L91.3,231.0 L92.3,231.0 L93.3,231.0\n",
"\t\tL94.3,231.0 L95.3,231.0 L96.2,231.0 L97.2,231.0 L98.2,231.0 L99.2,231.0 L100.2,231.0 L101.2,231.0\n",
"\t\tL102.1,231.0 L103.1,231.0 L104.1,231.0 L105.1,231.0 L106.1,231.0 L107.1,231.0 L108.1,231.0 L109.0,231.0\n",
"\t\tL110.0,231.0 L111.0,231.0 L112.0,231.0 L113.0,231.0 L114.0,231.0 L115.0,231.0 L115.9,231.0 L116.9,231.0\n",
"\t\tL117.9,231.0 L118.9,231.0 L119.9,231.0 L120.9,231.0 L121.8,231.0 L122.8,231.0 L123.8,231.0 L124.8,231.0\n",
"\t\tL125.8,231.0 L126.8,231.0 L127.8,231.0 L128.7,231.0 L129.7,231.0 L130.7,231.0 L131.7,231.0 L132.7,231.0\n",
"\t\tL133.7,231.0 L134.6,231.0 L135.6,231.0 L136.6,231.0 L137.6,231.0 L138.6,231.0 L139.6,231.0 L140.6,231.0\n",
"\t\tL141.5,231.0 L142.5,231.0 L143.5,231.0 L144.5,231.0 L145.5,231.0 L146.5,231.0 L147.4,231.0 L148.4,231.0\n",
"\t\tL149.4,231.0 L150.4,231.0 L151.4,231.0 L152.4,231.0 L153.4,231.0 L154.3,231.0 L155.3,231.0 L156.3,231.0\n",
"\t\tL157.3,231.0 L158.3,231.0 L159.3,231.0 L160.2,231.0 L161.2,231.0 L162.2,231.0 L163.2,231.0 L164.2,231.0\n",
"\t\tL165.2,231.0 L166.2,231.0 L167.1,231.0 L168.1,231.0 L169.1,231.0 L170.1,231.0 L171.1,231.0 L172.1,231.0\n",
"\t\tL173.0,231.0 L174.0,231.0 L175.0,231.0 L176.0,231.0 L177.0,231.0 L178.0,231.0 L179.0,231.0 L179.9,231.0\n",
"\t\tL180.9,231.0 L181.9,231.0 L182.9,231.0 L183.9,231.0 L184.9,231.0 L185.8,231.0 L186.8,231.0 L187.8,231.0\n",
"\t\tL188.8,231.0 L189.8,231.0 L190.8,231.0 L191.8,231.0 L192.7,231.0 L193.7,231.0 L194.7,231.0 L195.7,231.0\n",
"\t\tL196.7,231.0 L197.7,231.0 L198.6,231.0 L199.6,231.0 L200.6,231.0 L201.6,231.0 L202.6,231.0 L203.6,231.0\n",
"\t\tL204.6,231.0 L205.5,231.0 L206.5,231.0 L207.5,231.0 L208.5,231.0 L209.5,231.0 L210.5,231.0 L211.5,231.0\n",
"\t\tL212.4,231.0 L213.4,231.0 L214.4,231.0 L215.4,231.0 L216.4,231.0 L217.4,231.0 L218.3,231.0 L219.3,231.0\n",
"\t\tL220.3,231.0 L221.3,231.0 L222.3,231.0 L223.3,231.0 L224.3,231.0 L225.2,231.0 L226.2,231.0 L227.2,231.0\n",
"\t\tL228.2,231.0 L229.2,231.0 L230.2,231.0 L231.1,231.0 L232.1,231.0 L233.1,231.0 L234.1,231.0 L235.1,231.0\n",
"\t\tL236.1,231.0 L237.1,231.0 L238.0,231.0 L239.0,231.0 L240.0,231.0 L241.0,231.0 L242.0,231.0 L243.0,231.0\n",
"\t\tL243.9,231.0 L244.9,231.0 L245.9,231.0 L246.9,231.0 L247.9,231.0 L248.9,231.0 L249.9,231.0 L250.8,231.0\n",
"\t\tL251.8,231.0 L252.8,231.0 L253.8,231.0 L254.8,231.0 L255.8,231.0 L256.7,231.0 L257.7,231.0 L258.7,231.0\n",
"\t\tL259.7,231.0 L260.7,231.0 L261.7,231.0 L262.7,231.0 L263.6,231.0 L264.6,231.0 L265.6,231.0 L266.6,231.0\n",
"\t\tL267.6,231.0 L268.6,231.0 L269.5,231.0 L270.5,231.0 L271.5,231.0 L272.5,231.0 L273.5,231.0 L274.5,231.0\n",
"\t\tL275.5,231.0 L276.4,231.0 L277.4,231.0 L278.4,231.0 L279.4,231.0 L280.4,231.0 L281.4,231.0 L282.3,231.0\n",
"\t\tL283.3,231.0 L284.3,231.0 L285.3,231.0 L286.3,231.0 L287.3,231.0 L288.3,231.0 L289.2,231.0 L290.2,231.0\n",
"\t\tL291.2,231.0 L292.2,231.0 L293.2,231.0 L294.2,231.0 L295.2,231.0 L296.1,231.0 L297.1,231.0 L298.1,231.0\n",
"\t\tL299.1,231.0 L300.1,231.0 L301.1,231.0 L302.0,231.0 L303.0,231.0 L304.0,231.0 L305.0,231.0 L306.0,231.0\n",
"\t\tL307.0,231.0 L308.0,231.0 L308.9,231.0 L309.9,231.0 L310.9,231.0 L311.9,231.0 L312.9,231.0 L313.9,231.0\n",
"\t\tL314.8,231.0 L315.8,231.0 L316.8,231.0 L317.8,231.0 L318.8,231.0 L319.8,231.0 L320.8,231.0 L321.7,231.0\n",
"\t\tL322.7,231.0 L323.7,231.0 L324.7,231.0 L325.7,231.0 L326.7,231.0 L327.6,231.0 L328.6,231.0 L329.6,231.0\n",
"\t\tL330.6,231.0 L331.6,231.0 L332.6,231.0 L333.6,231.0 L334.5,231.0 L335.5,231.0 L336.5,231.0 L337.5,231.0\n",
"\t\tL338.5,231.0 L339.5,231.0 L340.4,231.0 L341.4,231.0 L342.4,231.0 L343.4,231.0 L344.4,231.0 L345.4,231.0\n",
"\t\tL346.4,231.0 L347.3,231.0 L348.3,231.0 L349.3,231.0 L350.3,231.0 L351.3,231.0 L352.3,231.0 L353.2,231.0\n",
"\t\tL354.2,231.0 L355.2,231.0 L356.2,231.0 L357.2,231.0 L358.2,231.0 L359.2,231.0 L360.1,231.0 L361.1,231.0\n",
"\t\tL362.1,231.0 L363.1,231.0 L364.1,231.0 L365.1,231.0 L366.0,231.0 L367.0,231.0 L368.0,231.0 L369.0,231.0\n",
"\t\tL370.0,231.0 L371.0,231.0 L372.0,231.0 L372.9,231.0 L373.9,231.0 L374.9,231.0 L375.9,231.0 L376.9,231.0\n",
"\t\tL377.9,231.0 L378.8,231.0 L379.8,231.0 L380.8,231.0 L381.8,231.0 L382.8,231.0 L383.8,231.0 L384.8,231.0\n",
"\t\tL385.7,231.0 L386.7,231.0 L387.7,231.0 L388.7,231.0 L389.7,231.0 L390.7,231.0 L391.7,231.0 L392.6,231.0\n",
"\t\tL393.6,231.0 L394.6,231.0 L395.6,231.0 L396.6,231.0 L397.6,231.0 L398.5,231.0 L399.5,231.0 L400.5,231.0\n",
"\t\tL401.5,231.0 L402.5,231.0 L403.5,231.0 L404.5,231.0 L405.4,231.0 L406.4,231.0 L407.4,231.0 L408.4,231.0\n",
"\t\tL409.4,231.0 L410.4,231.0 L411.3,231.0 L412.3,231.0 L413.3,231.0 L414.3,231.0 L415.3,231.0 L416.3,231.0\n",
"\t\tL417.3,231.0 L418.2,231.0 L419.2,231.0 L420.2,231.0 L421.2,231.0 L422.2,231.0 L423.2,231.0 L424.1,231.0\n",
"\t\tL425.1,231.0 L426.1,231.0 L427.1,231.0 L428.1,231.0 L429.1,231.0 L430.1,231.0 L431.0,231.0 L432.0,231.0\n",
"\t\tL433.0,231.0 L434.0,231.0 L435.0,231.0 L436.0,231.0 L436.9,231.0 L437.9,231.0 L438.9,231.0 L439.9,231.0\n",
"\t\tL440.9,231.0 L441.9,231.0 L442.9,231.0 L443.8,231.0 L444.8,231.0 L445.8,231.0 L446.8,231.0 L447.8,231.0\n",
"\t\tL448.8,231.0 L449.7,231.0 L450.7,231.0 L451.7,231.0 L452.7,231.0 L453.7,231.0 L454.7,231.0 L455.7,231.0\n",
"\t\tL456.6,231.0 L457.6,231.0 L458.6,231.0 L459.6,231.0 L460.6,231.0 L461.6,231.0 L462.5,231.0 L463.5,231.0\n",
"\t\tL464.5,231.0 L465.5,231.0 L466.5,231.0 L467.5,231.0 L468.5,231.0 L469.4,231.0 L470.4,231.0 L471.4,231.0\n",
"\t\tL472.4,231.0 L473.4,231.0 L474.4,231.0 L475.3,231.0 L476.3,231.0 L477.3,231.0 L478.3,231.0 L479.3,231.0\n",
"\t\tL480.3,231.0 L481.3,231.0 L482.2,231.0 L483.2,231.0 L484.2,231.0 L485.2,231.0 L486.2,231.0 L487.2,231.0\n",
"\t\tL488.2,231.0 L489.1,231.0 L490.1,231.0 L491.1,231.0 L492.1,231.0 L493.1,231.0 L494.1,231.0 L495.0,231.0\n",
"\t\tL496.0,231.0 L497.0,231.0 L498.0,231.0 L499.0,231.0 L500.0,231.0 L501.0,231.0 L501.9,231.0 L502.9,231.0\n",
"\t\tL503.9,231.0 L504.9,231.0 L505.9,231.0 L506.9,231.0 L507.8,231.0 L508.8,231.0 L509.8,231.0 L510.8,231.0\n",
"\t\tL511.8,231.0 L512.8,231.0 L513.8,231.0 L514.7,231.0 L515.7,231.0 L516.7,231.0 L517.7,231.0 L518.7,231.0\n",
"\t\tL519.7,231.0 L520.6,231.0 L521.6,231.0 L522.6,231.0 L523.6,231.0 L524.6,231.0 L525.6,231.0 L526.6,231.0\n",
"\t\tL527.5,231.0 L528.5,231.0 L529.5,231.0 L530.5,231.0 L531.5,231.0 L532.5,231.0 L533.4,231.0 L534.4,231.0\n",
"\t\tL535.4,231.0 L536.4,231.0 L537.4,231.0 L538.4,231.0 L539.4,231.0 L540.3,231.0 L541.3,231.0 L542.3,231.0\n",
"\t\tL543.3,231.0 L544.3,231.0 L545.3,231.0 L546.2,231.0 L547.2,231.0 L548.2,231.0 L549.2,231.0 L550.2,231.0\n",
"\t\tL551.2,231.0 L552.2,231.0 L553.1,231.0 L554.1,231.0 L555.1,231.0 L556.1,231.0 L557.1,231.0 L558.1,231.0\n",
"\t\tL559.0,231.0 '/></g>\n",
"\t</g>\n",
"<g fill=\"none\" color=\"white\" stroke=\"rgb(148, 0, 211)\" stroke-width=\"2.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"2.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,18.1 L53.9,444.0 L575.0,444.0 L575.0,18.1 L53.9,18.1 Z '/></g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"</g>\n",
"</svg>\n",
"\n"
]
},
"metadata": {
"": ""
},
"output_type": "display_data"
}
],
"source": [
"spectrum = tostream(phase(FFT(Stream.SinOsc(samplerate*20/1024, 0.7):sub(1, 1024))))\n",
"print(spectrum:sub(10, 30))\n",
"spectrum:gnuplot()"
]
},
{
"cell_type": "markdown",
"id": "12ed863d-99a4-4372-bb11-e0ce4b5013d3",
"metadata": {},
"source": [
"Let's try some naive real-time pitch shifting.\n",
"This however is [not easy to get right](https://www.reddit.com/r/DSP/comments/k6t24c/pitch_shifting_algorithm_in_frequency_domain/)!"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "623ef0a1-73fc-44eb-9068-9140e4dbdfaf",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING: Buffer underrun detected\n",
"WARNING: Buffer underrun detected\n"
]
}
],
"source": [
"haiku = SndfileStream(\"examples/haiku.flac\")\n",
"haiku:play()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "b31f48b0-e2a8-4db1-9ae2-982afcb05d18",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING: Buffer underrun detected\n"
]
}
],
"source": [
"haiku:FFT(1024):map(function(spectrum)\n",
" assert(#spectrum == 513)\n",
" -- NOTE: We cannot use Stream:resample() as it won't work with complex samples.\n",
" for i = 1, 512/2 do spectrum[i] = spectrum[i*2] end\n",
" for i = 512/2+1, 512 do spectrum[i] = 0i end\n",
" return spectrum\n",
"end):IFFT(1024):play()"
]
},
{
"cell_type": "markdown",
"id": "cdf40dfb-b7ac-42ae-a6c3-178c7c8db1ff",
"metadata": {},
"source": [
"Let's generate and plot the spectrum of a sine mixed with some noise:"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "58845a87-ed29-45e8-85c7-ac4b24013e5c",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n",
"<svg \n",
" width=\"600\" height=\"480\"\n",
" viewBox=\"0 0 600 480\"\n",
" xmlns=\"http://www.w3.org/2000/svg\"\n",
" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n",
">\n",
"\n",
"<title>Gnuplot</title>\n",
"<desc>Produced by GNUPLOT 5.2 patchlevel 8 </desc>\n",
"\n",
"<g id=\"gnuplot_canvas\">\n",
"\n",
"<rect x=\"0\" y=\"0\" width=\"600\" height=\"480\" fill=\"none\"/>\n",
"<defs>\n",
"\n",
"\t<circle id='gpDot' r='0.5' stroke-width='0.5' stroke='currentColor'/>\n",
"\t<path id='gpPt0' stroke-width='0.222' stroke='currentColor' d='M-1,0 h2 M0,-1 v2'/>\n",
"\t<path id='gpPt1' stroke-width='0.222' stroke='currentColor' d='M-1,-1 L1,1 M1,-1 L-1,1'/>\n",
"\t<path id='gpPt2' stroke-width='0.222' stroke='currentColor' d='M-1,0 L1,0 M0,-1 L0,1 M-1,-1 L1,1 M-1,1 L1,-1'/>\n",
"\t<rect id='gpPt3' stroke-width='0.222' stroke='currentColor' x='-1' y='-1' width='2' height='2'/>\n",
"\t<rect id='gpPt4' stroke-width='0.222' stroke='currentColor' fill='currentColor' x='-1' y='-1' width='2' height='2'/>\n",
"\t<circle id='gpPt5' stroke-width='0.222' stroke='currentColor' cx='0' cy='0' r='1'/>\n",
"\t<use xlink:href='#gpPt5' id='gpPt6' fill='currentColor' stroke='none'/>\n",
"\t<path id='gpPt7' stroke-width='0.222' stroke='currentColor' d='M0,-1.33 L-1.33,0.67 L1.33,0.67 z'/>\n",
"\t<use xlink:href='#gpPt7' id='gpPt8' fill='currentColor' stroke='none'/>\n",
"\t<use xlink:href='#gpPt7' id='gpPt9' stroke='currentColor' transform='rotate(180)'/>\n",
"\t<use xlink:href='#gpPt9' id='gpPt10' fill='currentColor' stroke='none'/>\n",
"\t<use xlink:href='#gpPt3' id='gpPt11' stroke='currentColor' transform='rotate(45)'/>\n",
"\t<use xlink:href='#gpPt11' id='gpPt12' fill='currentColor' stroke='none'/>\n",
"\t<path id='gpPt13' stroke-width='0.222' stroke='currentColor' d='M0,1.330 L1.265,0.411 L0.782,-1.067 L-0.782,-1.076 L-1.265,0.411 z'/>\n",
"\t<use xlink:href='#gpPt13' id='gpPt14' fill='currentColor' stroke='none'/>\n",
"\t<filter id='textbox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>\n",
"\t <feFlood flood-color='white' flood-opacity='1' result='bgnd'/>\n",
"\t <feComposite in='SourceGraphic' in2='bgnd' operator='atop'/>\n",
"\t</filter>\n",
"\t<filter id='greybox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>\n",
"\t <feFlood flood-color='lightgrey' flood-opacity='1' result='grey'/>\n",
"\t <feComposite in='SourceGraphic' in2='grey' operator='atop'/>\n",
"\t</filter>\n",
"</defs>\n",
"<g fill=\"none\" color=\"white\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M53.9,444.0 L575.0,444.0 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,444.0 L62.9,444.0 M575.0,444.0 L566.0,444.0 '/>\t<g transform=\"translate(45.6,447.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"end\">\n",
"\t\t<text><tspan font-family=\"Arial\" >-1</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M53.9,337.5 L575.0,337.5 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,337.5 L62.9,337.5 M575.0,337.5 L566.0,337.5 '/>\t<g transform=\"translate(45.6,341.4)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"end\">\n",
"\t\t<text><tspan font-family=\"Arial\" >-0.5</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M53.9,231.0 L575.0,231.0 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,231.0 L62.9,231.0 M575.0,231.0 L566.0,231.0 '/>\t<g transform=\"translate(45.6,234.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"end\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M53.9,124.6 L575.0,124.6 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,124.6 L62.9,124.6 M575.0,124.6 L566.0,124.6 '/>\t<g transform=\"translate(45.6,128.5)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"end\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.5</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M53.9,18.1 L575.0,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,18.1 L62.9,18.1 M575.0,18.1 L566.0,18.1 '/>\t<g transform=\"translate(45.6,22.0)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"end\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 1</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M53.9,444.0 L53.9,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,444.0 L53.9,435.0 M53.9,18.1 L53.9,27.1 '/>\t<g transform=\"translate(53.9,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M140.8,444.0 L140.8,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M140.8,444.0 L140.8,435.0 M140.8,18.1 L140.8,27.1 '/>\t<g transform=\"translate(140.8,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.002</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M227.6,444.0 L227.6,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M227.6,444.0 L227.6,435.0 M227.6,18.1 L227.6,27.1 '/>\t<g transform=\"translate(227.6,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.004</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M314.5,444.0 L314.5,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M314.5,444.0 L314.5,435.0 M314.5,18.1 L314.5,27.1 '/>\t<g transform=\"translate(314.5,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.006</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M401.3,444.0 L401.3,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M401.3,444.0 L401.3,435.0 M401.3,18.1 L401.3,27.1 '/>\t<g transform=\"translate(401.3,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.008</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M488.2,444.0 L488.2,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M488.2,444.0 L488.2,435.0 M488.2,18.1 L488.2,27.1 '/>\t<g transform=\"translate(488.2,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.01</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"currentColor\" stroke-width=\"0.50\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='gray' stroke-dasharray='2,4' class=\"gridline\" d='M575.0,444.0 L575.0,18.1 '/></g>\n",
"<g fill=\"none\" color=\"gray\" stroke=\"gray\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M575.0,444.0 L575.0,435.0 M575.0,18.1 L575.0,27.1 '/>\t<g transform=\"translate(575.0,465.9)\" stroke=\"none\" fill=\"black\" font-family=\"Arial\" font-size=\"12.00\" text-anchor=\"middle\">\n",
"\t\t<text><tspan font-family=\"Arial\" > 0.012</tspan></text>\n",
"\t</g>\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,18.1 L53.9,444.0 L575.0,444.0 L575.0,18.1 L53.9,18.1 Z '/></g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"\t<g id=\"gnuplot_plot_1\" ><title>gnuplot_plot_1</title>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='rgb(148, 0, 211)' d='M54.9,211.3 L55.9,163.9 L56.9,179.4 L57.8,173.9 L58.8,182.8 L59.8,185.9 L60.8,158.7 L61.8,229.5\n",
"\t\tL62.8,215.0 L63.1,18.1 M66.5,18.1 L66.7,138.1 L67.7,164.8 L68.7,193.1 L69.7,201.5 L70.6,185.9\n",
"\t\tL71.6,189.6 L72.6,223.7 L73.6,218.0 L74.6,204.2 L75.6,181.8 L76.5,209.8 L77.5,219.5 L78.5,174.5\n",
"\t\tL79.5,189.5 L80.5,206.1 L81.5,196.2 L82.5,178.5 L83.4,174.2 L84.4,215.2 L85.4,221.7 L86.4,204.5\n",
"\t\tL87.4,177.8 L88.4,204.0 L89.3,222.8 L90.3,162.9 L91.3,169.2 L92.3,183.8 L93.3,209.1 L94.3,205.9\n",
"\t\tL95.3,173.6 L96.2,149.9 L97.2,190.6 L98.2,204.3 L99.2,176.9 L100.2,183.3 L101.2,208.5 L102.1,212.2\n",
"\t\tL103.1,165.8 L104.1,198.2 L105.1,188.8 L106.1,154.7 L107.1,174.6 L108.1,204.5 L109.0,214.7 L110.0,205.6\n",
"\t\tL111.0,188.6 L112.0,180.6 L113.0,182.2 L114.0,160.5 L115.0,176.9 L115.9,197.4 L116.9,227.8 L117.9,210.3\n",
"\t\tL118.9,195.7 L119.9,215.0 L120.9,215.6 L121.8,197.7 L122.8,200.7 L123.8,191.3 L124.8,178.3 L125.8,161.9\n",
"\t\tL126.8,159.0 L127.8,172.6 L128.7,195.5 L129.7,212.4 L130.7,196.9 L131.7,180.7 L132.7,196.8 L133.7,219.7\n",
"\t\tL134.6,216.6 L135.6,224.0 L136.6,220.4 L137.6,180.7 L138.6,133.9 L139.6,177.8 L140.6,191.6 L141.5,218.7\n",
"\t\tL142.5,192.6 L143.5,155.1 L144.5,189.3 L145.5,195.7 L146.5,199.3 L147.4,192.2 L148.4,203.3 L149.4,198.9\n",
"\t\tL150.4,207.3 L151.4,212.9 L152.4,203.9 L153.4,195.2 L154.3,181.4 L155.3,227.5 L156.3,153.9 L157.3,188.1\n",
"\t\tL158.3,202.9 L159.3,162.2 L160.2,136.4 L161.2,145.6 L162.2,190.5 L163.2,197.6 L164.2,177.1 L165.2,182.2\n",
"\t\tL166.2,196.3 L167.1,171.2 L168.1,186.1 L169.1,199.2 L170.1,204.6 L171.1,203.8 L172.1,172.7 L173.0,186.9\n",
"\t\tL174.0,197.6 L175.0,201.3 L176.0,167.7 L177.0,174.2 L178.0,187.9 L179.0,183.7 L179.9,192.1 L180.9,171.3\n",
"\t\tL181.9,137.6 L182.9,147.6 L183.9,225.4 L184.9,218.8 L185.8,182.7 L186.8,186.6 L187.8,213.4 L188.8,173.1\n",
"\t\tL189.8,187.9 L190.8,189.0 L191.8,178.7 L192.7,216.0 L193.7,171.6 L194.7,139.2 L195.7,157.6 L196.7,184.2\n",
"\t\tL197.7,187.3 L198.6,205.9 L199.6,167.4 L200.6,144.9 L201.6,206.8 L202.6,191.7 L203.6,209.9 L204.6,181.9\n",
"\t\tL205.5,186.2 L206.5,217.6 L207.5,181.7 L208.5,144.8 L209.5,192.3 L210.5,160.6 L211.5,172.2 L212.4,212.3\n",
"\t\tL213.4,159.0 L214.4,172.5 L215.4,191.1 L216.4,191.2 L217.4,198.2 L218.3,153.3 L219.3,144.9 L220.3,158.2\n",
"\t\tL221.3,182.4 L222.3,158.6 L223.3,179.4 L224.3,213.2 L225.2,197.8 L226.2,196.9 L227.2,194.6 L228.2,215.1\n",
"\t\tL229.2,193.2 L230.2,211.6 L231.1,219.3 L232.1,222.3 L233.1,192.0 L234.1,166.8 L235.1,172.8 L236.1,178.8\n",
"\t\tL237.1,201.0 L238.0,188.5 L239.0,168.4 L240.0,212.8 L241.0,164.9 L242.0,200.0 L243.0,219.4 L243.9,197.1\n",
"\t\tL244.9,206.3 L245.9,215.3 L246.9,191.2 L247.9,184.1 L248.9,199.1 L249.9,188.7 L250.8,198.3 L251.8,153.2\n",
"\t\tL252.8,155.7 L253.8,164.5 L254.8,156.0 L255.8,157.9 L256.7,147.4 L257.7,153.7 L258.7,173.6 L259.7,188.9\n",
"\t\tL260.7,180.7 L261.7,167.3 L262.7,180.0 L263.6,187.6 L264.6,206.3 L265.6,190.4 L266.6,180.1 L267.6,159.4\n",
"\t\tL268.6,217.5 L269.5,181.7 L270.5,186.4 L271.5,209.6 L272.5,212.8 L273.5,199.7 L274.5,186.4 L275.5,195.9\n",
"\t\tL276.4,193.5 L277.4,145.4 L278.4,157.8 L279.4,177.0 L280.4,187.4 L281.4,154.8 L282.3,176.8 L283.3,198.2\n",
"\t\tL284.3,203.3 L285.3,182.6 L286.3,195.2 L287.3,188.8 L288.3,141.6 L289.2,153.9 L290.2,185.3 L291.2,189.0\n",
"\t\tL292.2,188.6 L293.2,175.0 L294.2,169.5 L295.2,196.3 L296.1,210.7 L297.1,198.3 L298.1,169.2 L299.1,165.7\n",
"\t\tL300.1,189.7 L301.1,192.9 L302.0,179.3 L303.0,186.1 L304.0,170.9 L305.0,173.6 L306.0,203.2 L307.0,189.3\n",
"\t\tL308.0,170.0 L308.9,185.9 L309.9,175.2 L310.9,178.4 L311.9,223.4 L312.9,222.4 L313.9,181.9 L314.8,175.4\n",
"\t\tL315.8,194.9 L316.8,193.7 L317.8,212.4 L318.8,188.0 L319.8,168.9 L320.8,191.7 L321.7,127.2 L322.7,137.9\n",
"\t\tL323.7,215.5 L324.7,168.3 L325.7,168.6 L326.7,160.8 L327.6,171.4 L328.6,198.2 L329.6,196.3 L330.6,164.0\n",
"\t\tL331.6,124.3 L332.6,141.2 L333.6,183.1 L334.5,205.9 L335.5,139.0 L336.5,178.7 L337.5,200.3 L338.5,186.8\n",
"\t\tL339.5,174.8 L340.4,197.7 L341.4,186.3 L342.4,133.1 L343.4,154.2 L344.4,226.4 L345.4,207.0 L346.4,189.6\n",
"\t\tL347.3,158.7 L348.3,164.8 L349.3,141.5 L350.3,153.8 L351.3,198.6 L352.3,192.7 L353.2,206.2 L354.2,160.2\n",
"\t\tL355.2,152.4 L356.2,164.3 L357.2,168.3 L358.2,195.3 L359.2,194.6 L360.1,205.1 L361.1,173.4 L362.1,205.1\n",
"\t\tL363.1,159.3 L364.1,204.1 L365.1,163.6 L366.0,167.5 L367.0,172.4 L368.0,205.0 L369.0,224.7 L370.0,221.2\n",
"\t\tL371.0,209.5 L372.0,189.1 L372.9,164.8 L373.9,189.9 L374.9,200.5 L375.9,202.1 L376.9,169.9 L377.9,199.2\n",
"\t\tL378.8,171.6 L379.8,206.8 L380.8,142.3 L381.8,114.1 L382.8,160.4 L383.8,183.6 L384.8,149.6 L385.7,157.3\n",
"\t\tL386.7,185.5 L387.7,145.7 L388.7,190.1 L389.7,195.8 L390.7,193.7 L391.7,190.6 L392.6,206.6 L393.6,144.5\n",
"\t\tL394.6,148.2 L395.6,187.9 L396.6,197.0 L397.6,181.2 L398.5,202.0 L399.5,211.2 L400.5,187.3 L401.5,215.8\n",
"\t\tL402.5,219.1 L403.5,211.5 L404.5,193.2 L405.4,188.0 L406.4,216.2 L407.4,192.1 L408.4,196.4 L409.4,201.0\n",
"\t\tL410.4,170.9 L411.3,133.1 L412.3,178.0 L413.3,216.1 L414.3,212.7 L415.3,194.5 L416.3,216.4 L417.3,183.2\n",
"\t\tL418.2,211.7 L419.2,204.9 L420.2,202.3 L421.2,179.4 L422.2,188.2 L423.2,158.0 L424.1,173.0 L425.1,225.6\n",
"\t\tL426.1,192.1 L427.1,189.6 L428.1,203.6 L429.1,201.6 L430.1,223.6 L431.0,223.7 L432.0,201.9 L433.0,200.1\n",
"\t\tL434.0,199.3 L435.0,180.3 L436.0,206.8 L436.9,218.5 L437.9,206.0 L438.9,191.6 L439.9,167.6 L440.9,179.7\n",
"\t\tL441.9,215.5 L442.9,170.6 L443.8,192.0 L444.8,167.4 L445.8,142.2 L446.8,183.4 L447.8,213.2 L448.8,203.5\n",
"\t\tL449.7,192.1 L450.7,192.4 L451.7,190.9 L452.7,140.9 L453.7,176.1 L454.7,207.2 L455.7,204.4 L456.6,161.0\n",
"\t\tL457.6,149.8 L458.6,151.1 L459.6,172.8 L460.6,204.1 L461.6,188.9 L462.5,163.6 L463.5,172.3 L464.5,182.2\n",
"\t\tL465.5,212.9 L466.5,219.6 L467.5,191.1 L468.5,224.0 L469.4,169.6 L470.4,137.5 L471.4,141.3 L472.4,178.2\n",
"\t\tL473.4,173.3 L474.4,175.4 L475.3,178.2 L476.3,172.3 L477.3,155.6 L478.3,169.4 L479.3,201.5 L480.3,218.8\n",
"\t\tL481.3,213.3 L482.2,222.1 L483.2,209.1 L484.2,172.6 L485.2,116.0 L486.2,169.2 L487.2,212.8 L488.2,206.7\n",
"\t\tL489.1,219.7 L490.1,196.3 L491.1,170.1 L492.1,185.7 L493.1,187.8 L494.1,195.5 L495.0,215.6 L496.0,187.6\n",
"\t\tL497.0,186.7 L498.0,206.5 L499.0,204.9 L500.0,183.5 L501.0,200.1 L501.9,205.3 L502.9,202.8 L503.9,164.7\n",
"\t\tL504.9,204.9 L505.9,182.1 L506.9,188.0 L507.8,197.1 L508.8,221.2 L509.8,198.1 L510.8,163.9 L511.8,172.4\n",
"\t\tL512.8,209.5 L513.8,172.3 L514.7,191.9 L515.7,201.8 L516.7,197.6 L517.7,203.3 L518.7,187.1 L519.7,206.7\n",
"\t\tL520.6,184.6 L521.6,180.6 L522.6,168.8 L523.6,206.3 L524.6,216.1 L525.6,173.1 L526.6,194.6 L527.5,156.2\n",
"\t\tL528.5,182.2 L529.5,198.5 L530.5,179.9 L531.5,167.0 L532.5,218.9 L533.4,188.5 L534.4,203.3 L535.4,197.7\n",
"\t\tL536.4,199.3 L537.4,188.3 L538.4,161.8 L539.4,175.4 L540.3,194.2 L541.3,156.1 L542.3,150.4 L543.3,224.2\n",
"\t\tL544.3,200.1 L545.3,214.8 L546.2,189.5 L547.2,220.7 L548.2,181.8 L549.2,171.8 L550.2,183.3 L551.2,204.1\n",
"\t\tL552.2,193.5 L553.1,226.0 L554.1,198.3 L555.1,228.4 L556.1,160.9 L557.1,154.2 L558.1,198.3 L559.0,228.5\n",
"\t\t '/></g>\n",
"\t</g>\n",
"<g fill=\"none\" color=\"white\" stroke=\"rgb(148, 0, 211)\" stroke-width=\"2.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"2.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"black\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"\t<path stroke='black' d='M53.9,18.1 L53.9,444.0 L575.0,444.0 L575.0,18.1 L53.9,18.1 Z '/></g>\n",
"<g fill=\"none\" color=\"black\" stroke=\"currentColor\" stroke-width=\"1.00\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\">\n",
"</g>\n",
"</g>\n",
"</svg>\n",
"\n"
]
},
"metadata": {
"": ""
},
"output_type": "display_data"
}
],
"source": [
"noisy = Stream.SinOsc(440):mix(NoiseStream, 0.4)\n",
"tostream(magnitude(FFT(Hamming(noisy:sub(1, 1024))))):mul(0.05):gnuplot()"
]
},
{
"cell_type": "markdown",
"id": "2141e582-948c-454e-834b-8148465e3869",
"metadata": {},
"source": [
"Try some very naive noise cancelling.\n",
"\n",
"**WARNING:** This plays indefinitely. Interrupt via Kernel → \"Interrupt Kernel\"."
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "b43ca02e-16b8-4738-a157-db6dc1bb5b22",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING: Buffer underrun detected\n"
]
},
{
"ename": "n/a",
"evalue": "fft.lua:124: interrupted!",
"execution_count": 22,
"output_type": "error",
"traceback": [
"fft.lua:124: interrupted!",
"stack traceback:",
"\tfft.lua:124: in function 'FFT_internal'",
"\tfft.lua:119: in function 'FFT_internal'",
"\tfft.lua:119: in function 'FFT_internal'",
"\tfft.lua:136: in function 'fnc'",
"\tapplause.lua:1871: in function 'tick'",
"\tapplause.lua:1870: in function 'tick'",
"\tapplause.lua:1870: in function 'stream_tick'",
"\tapplause.lua:1634: in function 'tick'",
"\tapplause.lua:726: in function <applause.lua:717>",
"\t[C]: in function 'xpcall'",
"\tapplause.lua:683: in function <applause.lua:663>",
"\t[C]: in function 'xpcall'",
"\t...ies/ilua/env/lib/python3.8/site-packages/ilua/interp.lua:65: in function 'handle_execute'",
"\t...ies/ilua/env/lib/python3.8/site-packages/ilua/interp.lua:176: in main chunk",
"stack traceback:",
"\t[C]: in function 'error'",
"\tapplause.lua:707: in function <applause.lua:663>",
"\t[C]: in function 'xpcall'",
"\t...ies/ilua/env/lib/python3.8/site-packages/ilua/interp.lua:65: in function 'handle_execute'",
"\t...ies/ilua/env/lib/python3.8/site-packages/ilua/interp.lua:176: in main chunk"
]
}
],
"source": [
"noisy:FFT(1024, Hamming):map(function(spectrum)\n",
" assert(#spectrum == 513)\n",
" for i = 1, #spectrum do\n",
" if (spectrum[i].re^2 + spectrum[i].im^2)^.5*0.05 < 0.8 then spectrum[i] = 0i end\n",
" end\n",
" return spectrum\n",
"end):IFFT(1024):play()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "fc38550e-835c-47a8-a792-7164109dafee",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Lua",
"language": "lua",
"name": "lua"
},
"language_info": {
"file_extension": ".lua",
"mimetype": "text/x-lua",
"name": "lua",
"version": "5.1"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
|