From 5811c44cb0799ef550fd7e3684ad73f86d9f2980 Mon Sep 17 00:00:00 2001
From: Erik Strand <erik.strand@cba.mit.edu>
Date: Wed, 8 May 2019 18:40:50 -0400
Subject: [PATCH] Work on first gradient descent problem

---
 compressed_sensing.py | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/compressed_sensing.py b/compressed_sensing.py
index 775c6bb..e3967b1 100644
--- a/compressed_sensing.py
+++ b/compressed_sensing.py
@@ -20,6 +20,18 @@ def compute_dct_matrix(n_samples):
     return dct_matrix
 
 
+def compute_differences(recovered_dct, inverse_dct_matrix, sample_values):
+    return sample_values - np.matmul(inverse_dct_matrix, recovered_dct)
+
+
+def loss_e(differences, subset_indices):
+    return np.linalg.norm(differences[subset_indices])
+
+
+def grad_e(differences, dct_matrix, subset_indices):
+    return -2 * np.matmul(dct_matrix[:,subset_indices], differences[subset_indices])
+
+
 if __name__ == "__main__":
     f1 = 697 # Hz
     f2 = 1209 # Hz
@@ -59,3 +71,10 @@ if __name__ == "__main__":
     plt.plot(subset_sample_times, subset_sample_values)
     plt.savefig("fig_d.png")
     plt.close()
+
+    # Part (e)
+    recovered_dct = np.random.normal(0.0, 1.0, (n_samples))
+    differences = compute_differences(recovered_dct, inverse_dct_matrix, sample_values)
+    loss = loss_e(differences, subset_indices)
+    grad = grad_e(differences, dct_matrix, subset_indices)
+    print(grad)
-- 
GitLab