форкнуто от main/python-labs
Родитель
05e77ebb09
Сommit
fad1a92cca
@ -0,0 +1,28 @@
|
|||||||
|
# main_test.py
|
||||||
|
|
||||||
|
from module_pulse import generate_pulse_signal
|
||||||
|
|
||||||
|
def main():
|
||||||
|
print("Генератор импульсного сигнала (вариант 4)\n")
|
||||||
|
|
||||||
|
ampl = float(input("Амплитуда: "))
|
||||||
|
pulse_len = int(input("Длительность импульса (отсчёты): "))
|
||||||
|
period = int(input("Период (импульс+пауза, отсчёты): "))
|
||||||
|
n_samples = int(input("Число отсчётов: "))
|
||||||
|
filename = input("Имя файла для записи (например signal.txt): ").strip()
|
||||||
|
|
||||||
|
signal = generate_pulse_signal(ampl, pulse_len, period, n_samples, filename)
|
||||||
|
|
||||||
|
print("\nГотово.")
|
||||||
|
print(f"Сигнал записан в файл: {filename}")
|
||||||
|
print("Первые 30 отсчётов (или меньше):")
|
||||||
|
print(signal[:30])
|
||||||
|
|
||||||
|
# чтобы было видно структуру по периодам:
|
||||||
|
print("\nСигнал по строкам (индекс: значение) для первых 30:")
|
||||||
|
for i in range(min(30, len(signal))):
|
||||||
|
print(i, ":", signal[i])
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
@ -0,0 +1,30 @@
|
|||||||
|
# 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
|
||||||
@ -0,0 +1,20 @@
|
|||||||
|
5.0
|
||||||
|
5.0
|
||||||
|
5.0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
5.0
|
||||||
|
5.0
|
||||||
|
5.0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
5.0
|
||||||
|
5.0
|
||||||
|
5.0
|
||||||
|
0
|
||||||
Загрузка…
Ссылка в новой задаче