diff options
-rw-r--r-- | examples/fft.ipynb | 2154 | ||||
-rw-r--r-- | examples/fft.lua | 2 |
2 files changed, 2155 insertions, 1 deletions
diff --git a/examples/fft.ipynb b/examples/fft.ipynb new file mode 100644 index 0000000..ff447f2 --- /dev/null +++ b/examples/fft.ipynb @@ -0,0 +1,2154 @@ +{ + "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": 20, + "id": "bd0e1d6d-ad05-46dc-9701-92846bc8a683", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Buffer underrun detected\n" + ] + } + ], + "source": [ + "-- FIXME: Use a different sound file!\n", + "robin = SndfileStream(\"tracks/robin-mono.wav\"):sub(sec(10.284), sec(17.466)):eval()\n", + "robin:play()\n", + "robin: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": "n/a" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/fft.lua b/examples/fft.lua index 85d0bc2..417f3c6 100644 --- a/examples/fft.lua +++ b/examples/fft.lua @@ -28,7 +28,7 @@ end):IFFT(1024):play() noisy = Stream.SinOsc(440):mix(NoiseStream, 0.4) tostream(magnitude(FFT(Hamming(noisy:sub(1, 1024))))):mul(0.05):gnuplot() --- Naive noise canceling +-- Naive noise cancelling noisy:FFT(1024, Hamming):map(function(spectrum) assert(#spectrum == 513) for i = 1, #spectrum do |