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

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' и в файле).