summaryrefslogtreecommitdiff
path: root/exercise04/helpers/ex_4_1.py
diff options
context:
space:
mode:
Diffstat (limited to 'exercise04/helpers/ex_4_1.py')
-rw-r--r--exercise04/helpers/ex_4_1.py63
1 files changed, 63 insertions, 0 deletions
diff --git a/exercise04/helpers/ex_4_1.py b/exercise04/helpers/ex_4_1.py
new file mode 100644
index 0000000..2208737
--- /dev/null
+++ b/exercise04/helpers/ex_4_1.py
@@ -0,0 +1,63 @@
+#!/usr/bin/env python3
+
+# SPDX-License-Identifier: BSD-3-Clause
+#
+# Copyright 2020 Philipp Le
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# 3. Neither the name of the copyright holder nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+# THE POSSIBILITY OF SUCH DAMAGE.
+
+
+import numpy
+
+def latex_table(ar):
+ return " & ".join(["$"+str(it)+"$" for it in ar])
+
+print("$n$ & "+latex_table([int(num) for num in numpy.linspace(0,8,9)]))
+
+t=numpy.linspace(0,1e-6,9)
+print("$t$ in \\si{\\micro\\second} & "+latex_table(t*1e6))
+
+x=2*numpy.cos(2*numpy.pi*2e6*t+(numpy.pi/3))
+print("$u[n]$ in \\si{V} & "+latex_table(numpy.round(x*100)/100))
+
+print("")
+
+phi=2*numpy.pi*numpy.array([0,1,2,3])/4
+omega=phi/125e-9
+f=omega/(2*numpy.pi)
+print("$\\phi[k]$ & "+latex_table(numpy.round(phi*100)/100))
+print("$\\omega[k]$ & "+latex_table(numpy.round(omega*100)/100))
+print("$f[k]$ & "+latex_table(f))
+
+
+Xft = numpy.fft.fft(x[0:4])
+Xft_abs = numpy.abs(Xft)
+Xft_phase = numpy.angle(Xft)
+print("$\\underline{U}[k]$ & "+latex_table(numpy.round(Xft*100)/100))
+print("$|\\underline{U}[k]|$ & "+latex_table(numpy.round(Xft_abs*100)/100))
+print("$\\arg\\left(\\underline{U}[k]\\right)$ & "+latex_table(numpy.round(Xft_phase*100)/100))