3.7 KiB
ИКЗ по теме 8
Добровольска Елизавета,А-02-23
Задание
для проверки работы функции, вызов функции и отображение полученных результатов. Разработайте функцию с 5 аргументами, создающую отсчеты сигнала в виде последовательности импульсов с заданными параметрами: амплитуда, продолжительность импульса, период (импульс + пауза), число отсчетов (аргументы функции). Сигнал должен быть записан в виде столбца в текстовый файл с заданным именем (5-й аргумент функции), а также возвращен в вызывающую программу в виде списка.
Решение
Код модуля для генерации сигнала:
def generate_pulsed_signal(amplitude, pulse_duration, period, num_samples, filename):
signal_data = []
for i in range(num_samples):
# Определяем находится ли текущий отсчет в фазе импульсаа
if (i % period) < pulse_duration:
signal_data.append(amplitude)
else:
signal_data.append(0) # Фаза паузы
# Запись сигнала в файлик
with open(filename, 'w') as f:
for sample in signal_data:
f.write(f"{sample}\n")
return signal_data
Основной модуль:
from signal_generator import generate_pulsed_signal
print("Генерация импульсного сигнала")
signal_amplitude = 10.0
signal_pulse_duration = 5
signal_period = 15
signal_num_samples = 100
output_file_name = "pulsed_signal.txt"
print(f"\nПараметры сигнала:")
print(f" Амплитуда: {signal_amplitude}")
print(f" Продолжительность импульса: {signal_pulse_duration} отсчетов")
print(f" Период (импульс+пауза): {signal_period} отсчетов")
print(f" Общее число отсчетов: {signal_num_samples}")
print(f" Файл для записи: {output_file_name}")
generated_signal = generate_pulsed_signal(
signal_amplitude,
signal_pulse_duration,
signal_period,
signal_num_samples,
output_file_name
)
print(f"\nСигнал успешно сгенерирован и записан в файл '{output_file_name}'.")
print("\nПервые 20 отсчетов сгенерированного сигнала (возвращенный список):")
print(generated_signal[:20])
print("\n(Полный список доступен в переменной 'generated_signal' и в файле).")
Вывод в консоли:
Генерация импульсного сигнала
Параметры сигнала: Амплитуда: 10.0 Продолжительность импульса: 5 отсчетов Период (импульс+пауза): 15 отсчетов Общее число отсчетов: 100 Файл для записи: pulsed_signal.txt
Сигнал успешно сгенерирован и записан в файл 'pulsed_signal.txt'.
Первые 20 отсчетов сгенерированного сигнала (возвращенный список): [10.0, 10.0, 10.0, 10.0, 10.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10.0, 10.0, 10.0, 10.0, 10.0]
(Полный список доступен в переменной 'generated_signal' и в файле).