diff --git a/TEMA8/Modul0.py b/TEMA8/Modul0.py new file mode 100644 index 0000000..2bf9018 --- /dev/null +++ b/TEMA8/Modul0.py @@ -0,0 +1,29 @@ +import Modul1 + +def main(): + A = float(input("Амплитуда импульса: ")) + Prod_Imp = int(input("Продолжительность импульса (в отсчетах): ")) + period = int(input("Период (импульс + пауза, в отсчетах): ")) + num_ot = int(input("Общее число отсчетов: ")) + filename = input("Имя файла для сохранения: ") + + # Генерация сигнала + from Modul1 import f as G + signal = G(A, Prod_Imp, period, num_ot, filename) + + # Вывод результатов + print('Сгенерирован сигнал') + for i in range(len(signal)): + print(f"{i}: {signal[i]}") + + print('Все значения сохранены в файл') + + import matplotlib.pyplot as plt + plt.title('График импульсного сигнала') + plt.xlabel('Номер отсчета') + plt.ylabel('Амплитуда') + plt.plot(signal) + plt.show() + +main() + diff --git a/TEMA8/Modul1.py b/TEMA8/Modul1.py new file mode 100644 index 0000000..456a27d --- /dev/null +++ b/TEMA8/Modul1.py @@ -0,0 +1,16 @@ +def f(A, Prod_Imp, period, num_ot, filename): + # Генерация сигнала + signal = [] + for i in range(num_ot): + # Определяем положение в текущем периоде + pos = i % period + # Если находимся в пределах длительности импульса + if pos < Prod_Imp: + signal.append(A) + else: + signal.append(0.0) + # Запись в файл + with open(filename, 'w', encoding='utf-8') as f: + for i in signal: + f.write(f"{i}\n") + return signal diff --git a/TEMA8/Ris1.png b/TEMA8/Ris1.png new file mode 100644 index 0000000..562e535 Binary files /dev/null and b/TEMA8/Ris1.png differ diff --git a/TEMA8/r.txt b/TEMA8/r.txt new file mode 100644 index 0000000..bbb1922 --- /dev/null +++ b/TEMA8/r.txt @@ -0,0 +1,100 @@ +5.0 +5.0 +5.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +5.0 +5.0 +5.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +5.0 +5.0 +5.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +5.0 +5.0 +5.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +5.0 +5.0 +5.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +5.0 +5.0 +5.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +5.0 +5.0 +5.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +5.0 +5.0 +5.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +5.0 +5.0 +5.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +5.0 +5.0 +5.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 diff --git a/TEMA8/test8.md b/TEMA8/test8.md new file mode 100644 index 0000000..e77a712 --- /dev/null +++ b/TEMA8/test8.md @@ -0,0 +1,173 @@ +# Индивидуальное контрольное задание #4 по Теме 8 +Лазарев Данил, А-01-23 + +# Задание +По указанному преподавателем варианту контрольного задания обратитесь к индивидуальному заданию с таким номером в теме 7, разработайте функцию, на ее основе создайте модуль. Создайте второй модуль, в котором должны быть инструкции для ввода/создания исходных данных для проверки работы функции, вызов функции и отображение полученных результатов. + +Разработайте функцию с 5 аргументами, создающую отсчеты сигнала в виде последовательности импульсов с заданными параметрами: амплитуда, продолжительность импульса, период (импульс + пауза), число отсчетов (аргументы функции). Сигнал должен быть записан в виде столбца в текстовый файл с заданным именем (5-й аргумент функции), а также возвращен в вызывающую программу в виде списка + +# Решение +Модуль 1 +``` +def f(A, Prod_Imp, period, num_ot, filename): + # Генерация сигнала + signal = [] + for i in range(num_ot): + # Определяем положение в текущем периоде + pos = i % period + # Если находимся в пределах длительности импульса + if pos < Prod_Imp: + signal.append(A) + else: + signal.append(0.0) + # Запись в файл + with open(filename, 'w', encoding='utf-8') as f: + for i in signal: + f.write(f"{i}\n") + return signal +``` +Модуль 2 +``` +import Modul1 + +def main(): + A = float(input("Амплитуда импульса: ")) + Prod_Imp = int(input("Продолжительность импульса (в отсчетах): ")) + period = int(input("Период (импульс + пауза, в отсчетах): ")) + num_ot = int(input("Общее число отсчетов: ")) + filename = input("Имя файла для сохранения: ") + + # Генерация сигнала + from Modul1 import f as G + signal = G(A, Prod_Imp, period, num_ot, filename) + + # Вывод результатов + print('Сгенерирован сигнал') + for i in range(len(signal)): + print(f"{i}: {signal[i]}") + + print('Все значения сохранены в файл') + + import matplotlib.pyplot as plt + plt.title('График импульсного сигнала') + plt.xlabel('Номер отсчета') + plt.ylabel('Амплитуда') + plt.plot(signal) + plt.show() + +main() +``` +Итоговый вывод: +``` +>> Амплитуда импульса: 5 +>> Продолжительность импульса (в отсчетах): 3 +>> Период (импульс + пауза, в отсчетах): 10 +>> Общее число отсчетов: 100 +>> Имя файла для сохранения: r.txt + +Сгенерирован сигнал + +0: 5.0 +1: 5.0 +2: 5.0 +3: 0.0 +4: 0.0 +5: 0.0 +6: 0.0 +7: 0.0 +8: 0.0 +9: 0.0 +10: 5.0 +11: 5.0 +12: 5.0 +13: 0.0 +14: 0.0 +15: 0.0 +16: 0.0 +17: 0.0 +18: 0.0 +19: 0.0 +20: 5.0 +21: 5.0 +22: 5.0 +23: 0.0 +24: 0.0 +25: 0.0 +26: 0.0 +27: 0.0 +28: 0.0 +29: 0.0 +30: 5.0 +31: 5.0 +32: 5.0 +33: 0.0 +34: 0.0 +35: 0.0 +36: 0.0 +37: 0.0 +38: 0.0 +39: 0.0 +40: 5.0 +41: 5.0 +42: 5.0 +43: 0.0 +44: 0.0 +45: 0.0 +46: 0.0 +47: 0.0 +48: 0.0 +49: 0.0 +50: 5.0 +51: 5.0 +52: 5.0 +53: 0.0 +54: 0.0 +55: 0.0 +56: 0.0 +57: 0.0 +58: 0.0 +59: 0.0 +60: 5.0 +61: 5.0 +62: 5.0 +63: 0.0 +64: 0.0 +65: 0.0 +66: 0.0 +67: 0.0 +68: 0.0 +69: 0.0 +70: 5.0 +71: 5.0 +72: 5.0 +73: 0.0 +74: 0.0 +75: 0.0 +76: 0.0 +77: 0.0 +78: 0.0 +79: 0.0 +80: 5.0 +81: 5.0 +82: 5.0 +83: 0.0 +84: 0.0 +85: 0.0 +86: 0.0 +87: 0.0 +88: 0.0 +89: 0.0 +90: 5.0 +91: 5.0 +92: 5.0 +93: 0.0 +94: 0.0 +95: 0.0 +96: 0.0 +97: 0.0 +98: 0.0 +99: 0.0 + +Все значения сохранены в файл +``` +![](Ris1.png) \ No newline at end of file