Skip to content
Snippets Groups Projects
Commit 06b7d461 authored by Erik Strand's avatar Erik Strand
Browse files

Plot DCT

parent ad5c4350
No related branches found
No related tags found
No related merge requests found
import numpy as np import numpy as np
import scipy
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
...@@ -6,22 +7,35 @@ def sample_two_sins(f1, f2, sample_times): ...@@ -6,22 +7,35 @@ def sample_two_sins(f1, f2, sample_times):
sample_rads = 2 * np.pi * sample_times sample_rads = 2 * np.pi * sample_times
return np.sin(f1 * sample_rads) + np.sin(f2 * sample_rads) return np.sin(f1 * sample_rads) + np.sin(f2 * sample_rads)
def compute_dct_matrix(n_samples):
dct_matrix = np.zeros((n_samples, n_samples))
root_one_over_n = np.sqrt(1.0 / n_samples)
root_two_over_n = np.sqrt(2.0 / n_samples)
for j in range(0, n_samples):
dct_matrix[0, j] = root_one_over_n
for i in range(1, n_samples):
for j in range(0, n_samples):
dct_matrix[i, j] = root_two_over_n * np.cos(np.pi * (2 * j + 1) * i / (2 * n_samples))
return dct_matrix
if __name__ == "__main__": if __name__ == "__main__":
f1 = 697 # Hz f1 = 697 # Hz
f2 = 1209 # Hz f2 = 1209 # Hz
# Part (a)
sample_period = 0.01 sample_period = 0.01
n_samples = 1000 n_samples = 250
sample_times = (sample_period / n_samples) * np.arange(n_samples) sample_times = (sample_period / n_samples) * np.arange(n_samples)
sample_values = sample_two_sins(f1, f2, sample_times) sample_values = sample_two_sins(f1, f2, sample_times)
plt.plot(sample_times, sample_values) plt.plot(sample_times, sample_values)
plt.savefig("fig_a.png") plt.savefig("fig_a.png")
plt.close() plt.close()
sample_period = 0.02 # Part (b)
n_samples = 1000 dct_matrix = compute_dct_matrix(n_samples)
sample_times = (sample_period / n_samples) * np.arange(n_samples) dct = np.matmul(dct_matrix, sample_values)
sample_values = sample_two_sins(f1, f2, sample_times) plt.plot(np.arange(n_samples), dct)
plt.plot(sample_times, sample_values)
plt.savefig("fig_b.png") plt.savefig("fig_b.png")
plt.close() plt.close()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment