def main(): N = 4096 # get frequency data for each tone #A_data, B_data, C_data = get_tones() A_data, B_data = get_tones() a_fft = fourier.fft(A_data, 1, N) b_fft = fourier.fft(B_data, 1, N) #c_fft = fourier.fft(C_data, 1, N) a_psd = fourier.psd(a_fft) b_psd = fourier.psd(b_fft) #c_psd = fourier.psd(c_fft) fs = 44100 bins = [] for k in range(0, N): bins.append((k * fs) / N) max_a = max(a_psd) max_b = max(b_psd) #max_c = max(c_psd) # for i in a_psd: # print(i / max_a) for i in b_psd: print(i / max_b) """
def main(): signal_x = [] signal_y = [] samples = 512 for i in range(0, 512): t = i / samples signal_x.append(add_sin(t, 4, 0.1)) signal_y.append(mult_sin(t, 4, 0.1)) x_fft = fourier.fft(signal_x, 1, 512) y_fft = fourier.fft(signal_y, 1, 512) x_psd = [] y_psd = [] for i in x_fft: temp = i * i.conjugate() x_psd.append(temp.real) for i in y_fft: temp = i * i.conjugate() y_psd.append(temp.real) with open("Q2_results.txt", 'w') as file: file.write("x(t) PSD DATA" + "\n" + "\n") for i in x_psd: file.write(str(i) + "\n") file.write("\n" + "y(t) PSD DATA" + "\n") for i in y_psd: file.write(str(i) + "\n") #q3a() q3b()
def q3a(): test_signal1 = gen_signal(0) test_signal2 = gen_signal(10) test_signal3 = gen_signal(500) sig1_fft = fourier.fft(test_signal1, 1, 1024) sig2_fft = fourier.fft(test_signal2, 1, 1024) sig3_fft = fourier.fft(test_signal3, 1, 1024) sig1_psd = fourier.psd(sig1_fft) sig2_psd = fourier.psd(sig2_fft) sig3_psd = fourier.psd(sig3_fft) with open("Q3a_results.txt", 'w') as file: file.write("PSD Data for Signal 1 with pulse index = 0 " + "\n" + "\n") for i in sig1_psd: file.write(str(i) + "\n") file.write("\n" + "PSD Data for Signal 2 with pulse index = 10 " + "\n" + "\n") for i in sig2_psd: file.write(str(i) + "\n") file.write("\n" + "PSD Data for Signal 3 with pulse index = 500 " + "\n" + "\n") for i in sig3_psd: file.write(str(i) + "\n")
def smooth_filter(og_signal, filter_signal): conv_fft = fourier.fft(og_signal, 1, 1024) filtered_fft = fourier.fft(filter_signal, 1, 1024) temp_list = [] for i in range(0, 1024): t = conv_fft[i] * filtered_fft[i] temp_list.append(t) return fourier.fft(temp_list, -1, 1024)
def main(): pulse, response = get_data() for i in range(0, 972): pulse.append(0) pulse_fft = fourier.fft(pulse, 1, 1024) resp_fft = fourier.fft(response, 1, 1024) corr_list = fast_correlation(pulse_fft, resp_fft) fcc_final = fourier.fft(corr_list, -1, 1024) find_distance(fcc_final) filtered_response = create_filter(response, 6) final = smooth_filter(fcc_final, filtered_response) max_final = max(final)
def q3b(): h_0 = gen_sinusoidal(0) h_1 = gen_sinusoidal(0.1) h_2 = gen_sinusoidal(0.25) h_3 = gen_sinusoidal(0.75) fft_0 = fourier.fft(h_0, 1, 512) fft_1 = fourier.fft(h_1, 1, 512) fft_2 = fourier.fft(h_2, 1, 512) fft_3 = fourier.fft(h_3, 1, 512) alpha = 0.9999 #for i in fft_2: #print(i) psd_0 = fourier.psd(fft_0) psd_1 = fourier.psd(fft_1) psd_2 = fourier.psd(fft_2) psd_3 = fourier.psd(fft_3)
def main(): fs_signal = generate_fs() fs_fft = fourier.fft(fs_signal, 1, 512) samples = 512 S = 50 low_pass(fs_fft, samples) high_pass(fs_fft, samples) band_pass(fs_fft, samples) notch_filter(fs_fft, samples) """
def main(): N = 4096 # get frequency data for each tone A_data, B_data, C_data = get_tones() a_fft = fourier.fft(A_data, 1, N) b_fft = fourier.fft(B_data, 1, N) c_fft = fourier.fft(C_data, 1, N) a_psd = fourier.psd(a_fft) b_psd = fourier.psd(b_fft) c_psd = fourier.psd(c_fft) fs = 44100 bins = [] for k in range(0, N): bins.append((k * fs) / N) max_a = max(a_psd) max_b = max(b_psd) max_c = max(c_psd) """
def notch_filter(fs_fft, samples): """ :param x: :param S: :return: """ filter_sig = [1] * samples nf_filter = [] for i in range(3, 8): filter_sig[i] = 0 for i in range(0, samples): nf_filter.append(fs_fft[i] * filter_sig[i]) final = fourier.fft(nf_filter, -1, samples) with open("notch_filter.txt", 'w') as file: for i in final: file.write(str(i) + "\n")
def band_pass(fs_fft, samples): """ :param x: :param S: :return: """ filter_sig = [0] * samples bp_filter = [] for i in range(3, 8): filter_sig[i] = 1 for i in range(0, samples): bp_filter.append(fs_fft[i] * filter_sig[i]) final = fourier.fft(bp_filter, -1, samples) with open("band_pass.txt", 'w') as file: for i in final: file.write(str(i) + "\n")