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

4.3 KiB

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

Все значения сохранены в файл