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