From fef26c3cd47c1e6d3a9dc7592db5721b996ead6b Mon Sep 17 00:00:00 2001
From: Julian T <julian@jtle.dk>
Date: Wed, 23 Sep 2020 17:53:34 +0200
Subject: Added signal processing assignment

---
 sem5/sig/mm6/default.nix |  5 +++++
 sem5/sig/mm6/opg2.py     | 30 ++++++++++++++++++++++++++++++
 sem5/sig/mm6/opg3.py     | 29 +++++++++++++++++++++++++++++
 3 files changed, 64 insertions(+)
 create mode 100644 sem5/sig/mm6/default.nix
 create mode 100644 sem5/sig/mm6/opg2.py
 create mode 100644 sem5/sig/mm6/opg3.py

(limited to 'sem5/sig')

diff --git a/sem5/sig/mm6/default.nix b/sem5/sig/mm6/default.nix
new file mode 100644
index 0000000..5ba7198
--- /dev/null
+++ b/sem5/sig/mm6/default.nix
@@ -0,0 +1,5 @@
+with import <nixpkgs> {};
+stdenv.mkDerivation {
+    name = "plotting";
+    buildInputs = [ python38Packages.matplotlib python38Packages.numpy ];
+}
diff --git a/sem5/sig/mm6/opg2.py b/sem5/sig/mm6/opg2.py
new file mode 100644
index 0000000..38d65fe
--- /dev/null
+++ b/sem5/sig/mm6/opg2.py
@@ -0,0 +1,30 @@
+#!/usr/bin/env python3
+# 2020-09-23:s5/sig/mm6/opg/2 
+
+import matplotlib.pyplot as plt
+import sys
+import numpy as np
+
+lookahead = 100
+values = 50
+
+res = np.empty(values)
+
+for n in range(values):
+    s = 0
+    for k in range(lookahead):
+        h = np.exp(-k/8)
+
+        x = 1
+        if (n - k) < 0:
+            x = 0
+
+        s += x * h
+    res[n] = s
+
+x = np.arange(values)
+
+plt.plot(x, res)
+plt.show()
+
+
diff --git a/sem5/sig/mm6/opg3.py b/sem5/sig/mm6/opg3.py
new file mode 100644
index 0000000..c338c49
--- /dev/null
+++ b/sem5/sig/mm6/opg3.py
@@ -0,0 +1,29 @@
+#!/usr/bin/env python3
+# 2020-09-23:s5/sig/mm6/opg/3 #cc7f
+
+import matplotlib.pyplot as plt
+import numpy as np
+import sys
+
+# Load data
+data = []
+with open(sys.argv[1], "r") as f:
+    for line in f:
+        data.append(float(line))
+
+data = np.array(data)
+datalen = len(data)
+
+x = np.arange(datalen)
+before = plt.subplot(2, 1, 1)
+after  = plt.subplot(2, 1, 2)
+before.plot(x, data)
+
+res = np.empty(datalen)
+
+for i in range(datalen):
+    last = res[i-1] if i > 0 else 0
+    res[i] = np.exp(-1/8) * last + 1/8 * data[i]
+
+after.plot(x, res)
+plt.show()
-- 
cgit v1.2.3