форкнуто от main/python-labs
Вы не можете выбрать более 25 тем
Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
31 строка
1.1 KiB
Python
31 строка
1.1 KiB
Python
# module_pulse.py
|
|
|
|
def generate_pulse_signal(ampl, pulse_len, period, n_samples, filename):
|
|
|
|
if not isinstance(pulse_len, int) or pulse_len <= 0:
|
|
raise ValueError("pulse_len должен быть целым > 0")
|
|
if not isinstance(period, int) or period <= 0:
|
|
raise ValueError("period должен быть целым > 0")
|
|
if period < pulse_len:
|
|
raise ValueError("period должен быть >= pulse_len (иначе пауза отрицательная)")
|
|
if not isinstance(n_samples, int) or n_samples <= 0:
|
|
raise ValueError("n_samples должен быть целым > 0")
|
|
if not isinstance(filename, str) or filename.strip() == "":
|
|
raise ValueError("filename должен быть непустой строкой")
|
|
|
|
signal = []
|
|
for i in range(n_samples):
|
|
pos_in_period = i % period
|
|
if pos_in_period < pulse_len:
|
|
signal.append(ampl)
|
|
else:
|
|
signal.append(0)
|
|
|
|
# запись столбцом
|
|
with open(filename, "w", encoding="utf-8") as f:
|
|
for i in range(len(signal)):
|
|
f.write(str(signal[i]) + "\n")
|
|
|
|
|
|
return signal
|