МИНОБРНАУКИ РОССИИ
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ
ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
«ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА)
Кафедра математического обеспечения и применения ЭВМ
ОТЧЕТ
по практической работе №2
по дисциплине «Цифровая обработка сигналов»
Тема: Моделирование и анализ линейных комбинаций дискретных сигналов
Студент гр. 0303 |
|
Архипов В.А. |
Студент гр. 0303 |
|
Болкунов В.О. |
Студент гр. 0303 |
|
Калмак Д.А. |
Преподаватель |
|
Середа А.-В.И. |
Санкт-Петербург
2023
Цель работы.
Изучить математическое описание линейных комбинаций дискретных гармонических сигналов и овладеть программными средствами их моделирования.
Основные теоретические положения.
Дискретный единичный скачок
Дискретный прямоугольный импульс
Линейная комбинация дискретных гармонических сигналов
, где
Дискретный гармонический сигнал
Постановка задачи.
С помощью программных средств провести моделирование и анализ стандартных дискретных последовательностей. Результаты подкрепить соответствующими графиками и выводами.
Выполнение работы.
Выполнение работы происходило в среде Google Colab при помощи языка Python 3 и библиотеки matplotlib для отображения графиков.
На основе заданного номера бригады Nb были вычислены необходимые для работы константы: - длина последовательности, - основание экспоненты, - амплитуда гармонического сигнала, - частоты гармонических сигналов, - амплитуда импульса, - начальный момент импульса, - длина импульса, - амплитуды гармонических сигналов, , , - частоты гармонических сигналов, , , - коэффициенты линейной комбинации гармонических сигналов, которые представлены в табл. 1.
Таблица 1 - Необходимые для работы константы
Переменная |
Назначение |
Значение |
|
Номер бригады |
21 |
|
Длина последовательности |
31 |
|
Основание экспоненты |
-0.805 |
|
Амплитуда гармонического сигнала |
2 |
|
Частоты гармонических сигналов |
0.448799 |
|
Амплитуда импульса |
21 |
|
Начальный момент импульса |
4 |
|
Длина импульса |
6 |
|
Амплитуды гармонических сигналов |
2.5 |
|
4.7 |
|
|
3.2 |
|
|
Частоты гармонических сигналов |
0.628319 |
|
0.349066 |
|
|
0.184800 |
|
|
Коэффициенты линейной комбинации гармонических сигналов |
0.5 |
|
1.7 |
|
|
2.4 |
Далее были определены функции delta_d, sigma_d, s1, x1, x2, x3 s2, s3_wrap, s4 (табл. 2), и вычислены их значения на заданном интервале дискретного нормированного времени. Исходный код представлен в Приложении А.
Таблица 2 - Функции для моделирования сигналов
|
Дискретный единичный скачок |
|
Дискретный прямоугольный импульс |
|
Гармонические сигналы |
|
|
|
|
|
Линейная комбинация дискретных гармонических сигналов |
|
Экспоненциальная огибающая |
|
Дискретный гармонический сигнал огибаемый экспоненциальной огибающей |
|
Периодический прямоугольный импульс |
На основе определённых констант, функций и их значений, были выполнены следующие шаги работы.
1. Дискретный прямоугольный импульс
График дискретного прямоугольного импульса на основе дискретного единичного скачка на интервале времени представлен на рис. 1.
Рисунок 1 - График дискретного прямоугольного импульса на основе дискретного единичного скачка
Данный сигнал был смоделирован путём вычитания двух дискретных единичных скачков с разными задержками:
2. Линейная комбинация дискретных гармонических сигналов
Графики последовательностей на интервале времени представлены соответственно на рис. 2-4.
Рисунок 2 - График последовательности
Рисунок 3 - График последовательности
Рисунок 4 - График последовательности
График линейной комбинации дискретных гармонических сигналов на интервале времени представлен на рис. 5.
Рисунок 5 - График линейной комбинации дискретных гармонических сигналов
Линейная комбинация сигналов была смоделирована путём сложения гармонических сигналов с их домножением на линейные коэффициенты:
Среднее значение сигнала:
Энергия
Средняя мощность
3. Дискретный гармонический сигнал
Графики дискретного гармонического сигнала и экспоненциальной огибающей на интервале времени представлены на рис. 6.
Рисунок 6 - График дискретного гармонического сигнала и экспоненциальной огибающей
Чтобы сигнал огибал сигнал , исходный сигнал был домножен на .
4. Периодическая последовательность дискретных прямоугольных импульсов
График пяти периодов периодической последовательности дискретных прямоугольных импульсов амплитуды и длительности с периодом, вдвое большим длительности импульса, то есть 12 представлен на рис. 7.
Рисунок 7 - График пяти периодов периодической последовательности дискретных прямоугольных импульсов
Периодический сигнал был смоделирован на основе дискретного прямоугольного импульса путём взятия аргумента по модулю периода сигнала:
Выводы.
В ходе выполнений практической работы было с помощью программных средств проведено моделирование и анализ следующих стандартных дискретных последовательностей:
дискретного прямоугольного сигнала
линейная комбинация дискретных гармонических сигналов
для данного сигнала были вычислены среднее значение, энергия и средняя мощность
дискретный гармонический сигнал
для данного сигнала была определена аналитическая формула
периодическая последовательность дискретных прямоугольных импульсов
Для смоделированных сигналов были построены соответствующие графики последовательностей.
ПРИЛОЖЕНИЕ А
Исходный код
import math
import cmath
import matplotlib.pyplot as plt
# Номер бригады
Nb = 21
# Длина последовательности
N = 30 + (Nb % 5)
# Основание экспоненты
a = ((-1) ** Nb) * (0.8 + 0.005 * (Nb % 20))
# Амплитуда гармонического сигнала
C = 1 + (Nb % 5)
# Частота гармонического сигнала
w0 = math.pi / (6 + (Nb % 5))
# Амплитуда импульса
U = Nb
# Начальный момент импульса
n0 = 3 + (Nb % 5)
# Длина импульса
n_imp = 5 + (Nb % 5)
# Амплитуды гармонических сигналов
B1 = 1.5 + (Nb % 5)
B2 = 5.7 - (Nb % 5)
B3 = 2.2 + (Nb % 5)
# Частоты гармонических сигналов
w1 = math.pi / (4 + (Nb % 5))
w2 = math.pi / (8 + (Nb % 5))
w3 = math.pi / (16 + (Nb % 5))
# Коэффициенты линейной комбинации гармонических сигналов
a1 = 1.5 - (Nb % 5)
a2 = 0.7 + (Nb % 5)
a3 = 1.4 + (Nb % 5)
# Период последовательности s4
T = 2 * n_imp
# Точки интервала дискретного нормированного времени
Xn = [i for i in range(N)]
# Точки [0; 5N - 1]
Xn5 = [i for i in range(N * 5)]
# Точки 5-ти периодов последовательности s4
Xs4 = [i for i in range(T * 5)]
# Дискретный единичный скачок
def sigma_d(k):
return int(k >= 0)
# Дискретный прямоугольный импульс
def s1(k):
return U * (sigma_d(k - n0) - sigma_d(k - (n0 + n_imp)))
# Гармонические сигналы
def x1(k):
return B1 * math.sin(w1*k)
def x2(k):
return B2 * math.sin(w2*k)
def x3(k):
return B3 * math.sin(w3*k)
# Линейная комбинация дискретных гармонических сигналов
def s2(k):
return a1 * x1(k) + a2 * x2(k) + a3 * x3(k)
# Дискретный гармонический сигнал s3 с экспоненциальной огибающей
def s3(k):
return C * math.cos(w0 * k) * s3_wrap(k)
# Экспоненциальая огибающая
def s3_wrap(k):
return abs(a) ** k
# Периодическая последовательность s4
def s4(k):
return s1(k % T)
# Значения сигналов
s1_Y = [s1(k) for k in Xn]
x1_Y = [x1(k) for k in Xn5]
x2_Y = [x2(k) for k in Xn5]
x3_Y = [x3(k) for k in Xn5]
s2_Y = [s2(k) for k in Xn5]
s3_Y = [s3(k) for k in Xn]
s3_wrap_Y = [s3_wrap(k) for k in Xn]
s4_Y = [s4(k) for k in Xs4]
# График дискретного прямоугольного импульса
plt.figure(figsize=(10,5))
plt.plot(Xn, s1_Y, 'o--', label='$s_1(k)$')
plt.xlabel('$k$')
plt.legend()
# График 1-го гармонического сигнала
plt.figure(figsize=(20,5))
plt.plot(Xn5, x1_Y, 'o--', color='royalblue', label='$x_1(k)$')
plt.xlabel('$k$')
plt.legend()
# График 2-го гармонического сигнала
plt.figure(figsize=(20,5))
plt.plot(Xn5, x2_Y, 'o--', color='hotpink', label='$x_2(k)$')
plt.xlabel('$k$')
plt.legend()
# График 3-го гармонического сигнала
plt.figure(figsize=(20,5))
plt.plot(Xn5, x3_Y, 'o--', color='crimson', label='$x_3(k)$')
plt.xlabel('$k$')
plt.legend()
# График 3-го гармонического сигнала
plt.figure(figsize=(20,5))
plt.plot(Xn5, s2_Y, 'o--', color='salmon', label='$s_2(k)$')
plt.xlabel('$k$')
plt.legend()
# Среднее значение
mean_s2 = sum(s2_Y) / len(s2_Y)
# Энергия
E = sum([s ** 2 for s in s2_Y])
# Мощность
P = E / len(s2_Y)
print(f'mean_s2 = {mean_s2} , E = {E} , P = {P}')
# График гармонического сигнала с экспоненциальной огибающей
plt.figure(figsize=(10,5))
plt.plot(Xn, s3_Y, 'o--', label='$s_3(k)$')
plt.plot(Xn, s3_wrap_Y, 'o--', label='$|a|^k$')
plt.xlabel('$k$')
plt.legend()
# График прямоугольного дискретного импульса на 5-ти периодах
plt.figure(figsize=(10,5))
plt.plot(Xs4, s4_Y, 'o--', label='$s_4(k)$')
plt.xlabel('$k$')
plt.legend()