Added done Work
This commit is contained in:
101
2.py
Normal file
101
2.py
Normal file
@@ -0,0 +1,101 @@
|
||||
import plot_lib
|
||||
import read_file
|
||||
import editing_data
|
||||
import matplotlib
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
import scipy.signal as signal
|
||||
import os
|
||||
|
||||
matplotlib.use('Qt5Agg')
|
||||
|
||||
def plot1():
|
||||
volt_in, volt_out = read_file.read_xy_file("prak2/test.txt")
|
||||
|
||||
y = [volt_in, volt_out]
|
||||
x = volt_in
|
||||
|
||||
labels = ["Ideale Kennlinie", "Reale Kennlinie"]
|
||||
|
||||
plot_lib.plot_shared_xy(
|
||||
x=x,
|
||||
y_list=y,
|
||||
xlabel="Input Voltage (V)",
|
||||
ylabel="Output Voltage (V)",
|
||||
title="Kennlinie des Tiefpassfilters",
|
||||
show_points=True,
|
||||
save_path="prak2/kennlinie_tiefpass.svg",
|
||||
labels=labels
|
||||
)
|
||||
|
||||
diff = plot_lib.plot_difference(
|
||||
x=x,
|
||||
y1=y[0],
|
||||
y2=y[1],
|
||||
return_sum=True,
|
||||
xlabel="Input Voltage (V)",
|
||||
ylabel="Output Voltage (V)",
|
||||
title="Differenz der idealen und realen Kennlinie des Tiefpassfilters",
|
||||
show_points=True,
|
||||
save_path="prak2/kennlinie_tiefpass_diff.svg"
|
||||
)
|
||||
|
||||
print(diff)
|
||||
|
||||
def plot2():
|
||||
data_1k, indecies = read_file.read_data_with_indices("prak2/333_output1k.txt")
|
||||
data_3k, _ = read_file.read_data_with_indices("prak2/333_output3k.txt")
|
||||
data_5k, _ = read_file.read_data_with_indices("prak2/333_output5k.txt")
|
||||
data = [data_1k, data_3k, data_5k]
|
||||
labels = [r"$1\,\mathrm{k\Omega}$", r"$3\,\mathrm{k\Omega}$", r"$5\,\mathrm{k\Omega}$"]
|
||||
colors = ["red", "green", "blue"]
|
||||
indecies = indecies*1000
|
||||
ys = []
|
||||
xs = []
|
||||
|
||||
length = 169
|
||||
|
||||
figsize = (10, 6)
|
||||
plt.figure(figsize=figsize)
|
||||
|
||||
for i in range(len(data)):
|
||||
idxs = editing_data.detect_step_segments(data[i], diff_threshold=0.2, min_length=50)
|
||||
# print(i, idxs)
|
||||
y = data[i][idxs[0][0]:idxs[0][0]+length]
|
||||
x = np.arange(0, len(y)) / 48000 *1000000 # Zeit in mycrosekunden
|
||||
plt.plot(x, y, label=labels[i] + " (Messung)", color=colors[i], linestyle='--', marker='x', markersize=8)
|
||||
ys.append(y)
|
||||
xs.append(x)
|
||||
|
||||
C = 100e-9
|
||||
R = [1e3, 3e3, 5e3]
|
||||
|
||||
t = np.linspace(0, 0.0035, 1000)
|
||||
|
||||
for i in range(len(R)):
|
||||
Rs = R[i]
|
||||
label = labels[i]
|
||||
num = [5]
|
||||
den = [Rs*C, 1]
|
||||
system = signal.TransferFunction(num, den)
|
||||
t_out, y = signal.step(system, T=t)
|
||||
t_out = t_out * 1000 * 1000
|
||||
plt.plot(t_out, y, label=label + " (Ideal)", color=colors[i])
|
||||
|
||||
plt.xlim(0, 1.5*1000)
|
||||
plt.ylim(0, 5.5)
|
||||
plt.xlabel(r"Zeit ($\mu s$)")
|
||||
# plt.xlabel(r"Zeit (ms)")
|
||||
plt.ylabel("Voltage (V)")
|
||||
plt.title("Sprungantwort des Tiefpassfilters")
|
||||
plt.grid()
|
||||
plt.legend()
|
||||
plt.tight_layout()
|
||||
|
||||
save_path=f"prak2/tiefpass_mult_r.svg"
|
||||
plt.savefig(save_path, format="svg")
|
||||
plt.show()
|
||||
|
||||
if __name__ == "__main__":
|
||||
# plot1()
|
||||
plot2()
|
||||
Reference in New Issue
Block a user