форкнуто от main/python-labs
Родитель
a2c084dced
Сommit
e633e7c731
@ -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()
|
||||
|
||||
@ -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
|
||||
|
После Ширина: | Высота: | Размер: 46 KiB |
@ -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
|
||||
@ -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
|
||||
|
||||
Все значения сохранены в файл
|
||||
```
|
||||

|
||||
Загрузка…
Ссылка в новой задаче