Added scope fft snippet
Used to compare the fft of signals taken from the DSOX2024A oscope
This commit is contained in:
parent
02512129e2
commit
8ebc6a36bc
45
scope_fft/scope_fft.py
Normal file
45
scope_fft/scope_fft.py
Normal file
@ -0,0 +1,45 @@
|
||||
import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
def sig_fft(file1, file2):
|
||||
# Load data from CSV files
|
||||
data = np.genfromtxt(file1, delimiter=',')[2:]
|
||||
data2 = np.genfromtxt(file2, delimiter=',')[2:]
|
||||
|
||||
# find where data is nan
|
||||
n_index = np.argmax(np.isnan(data[:,1]))
|
||||
n_index2 = np.argmax(np.isnan(data2[:,1]))
|
||||
# Define each column
|
||||
time = data[:n_index, 0]
|
||||
rx_signal = data[:n_index, 1]
|
||||
tx_signal = data[:n_index, 2]
|
||||
num_samples = time.size
|
||||
fs1 = 1 / (time[1] - time[0]) # Set sampling frequency
|
||||
|
||||
# Define each column for data 2
|
||||
time2 = data2[:n_index2, 0]
|
||||
rx_signal2 = data2[:n_index2, 1]
|
||||
tx_signal2 = data2[:n_index2, 2]
|
||||
num_samples2 = time2.size
|
||||
fs2 = 1 / (time2[1] - time2[0]) # Set sampling frequency
|
||||
# Plot raw data
|
||||
plt.figure(1)
|
||||
plt.plot(time, rx_signal, label='Data 1')
|
||||
plt.plot(time2, rx_signal2, label='Data 2')
|
||||
plt.title('Unfiltered Data')
|
||||
plt.legend()
|
||||
|
||||
# fft for data 1
|
||||
sigfft = np.fft.fft(rx_signal)
|
||||
freq = np.fft.fftfreq(rx_signal.shape[-1], 1/(fs1))
|
||||
# fft for data 2
|
||||
sigfft2 = np.fft.fft(rx_signal2)
|
||||
freq2 = np.fft.fftfreq(rx_signal2.shape[-1], 1/(fs2))
|
||||
# plot fft
|
||||
plt.figure(2)
|
||||
plt.plot(freq, np.abs(sigfft), label='Data 1')
|
||||
plt.plot(freq2, np.abs(sigfft2), label='Data 2')
|
||||
plt.title('FFT of Data')
|
||||
plt.xlim(0, 20000)
|
||||
|
||||
plt.show()
|
Loading…
Reference in New Issue
Block a user