예제 #1
0
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)
    """
예제 #2
0
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()
예제 #3
0
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")
예제 #4
0
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)
예제 #5
0
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)
예제 #6
0
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)
예제 #7
0
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)
    """
예제 #8
0
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)
    """
예제 #9
0
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")
예제 #10
0
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")