Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

167 строки
4.0 KiB
Markdown

# Индивидуальное контрольное задание №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
signal = f(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)