lab5 / report_lab5
.docxСанкт-Петербургский Государственный Электротехнический Университет "ЛЭТИ"
кафедра физики
Задание №5 по дисциплине
"Физические основы информационных технологий"
Название: Искажение сигнала в волноводе
Фамилия И.О.: |
|
группа: |
|
Преподаватель: |
Альтмарк А.М. |
Итоговый балл: |
|
|
|
Санкт-Петербург
2019
Цель работы.
Радиоимпульсы, предназначенные для последовательной передачи двоичного кода, распространяются через волновод. Оценить дистанцию прохождения последовательности радиоимпульсов в цилиндрическом диэлектрическом волноводе, определяемую искажением сигнала из-за волноводной дисперсии. При расчетах учитывать только первую моду. Исходными данными являются параметры волновода (R-радиус волновода, -диэлектрическая проницаемость), параметры последовательности радиоимпульсов (,,) и порог, разделяющий уровень "0" и "1". Порог определяется следующей формулой:
,
где S - уровень сигнала между импульсами, - максимальное значение сигнала внутри импульса
Задание на лаборатоную работу.
Поставлены следующие задачи:
1. Определение фазовой скорости от частоты путем интерполирования или аппроксимации данных. Определение пороговой частоты (частоты, при которой фазовая скорость уходит в бесконечность).
2. Построение спектра сигнала. Спектр должен находится практически во всем диапазоне графика фазовой скорости.
3. Обратное преобразование Фурье с учетом волноводной дисперсии.
4. Построение зависимости последовательности импульсов от расстояния. Анализ областей, расположенных между сигналами, на превышение порога. Остановка программы с выводом дистанции в качестве ответа.
Исходные данные.
Вариант №12:
R, см |
|
f, ГГц |
|
|
|
|
1 |
5.7 |
15 |
0.666 |
2 |
0.0666 |
0.4 |
Выполнение работы.
Для построения графика зависимости фазовой скорости и групповой скоростей от частоты были найдены корни уравнения волновода. Далее был построен сигнал прямоугольного импульса, и с помощью преобразования Фурье по полученным данным был построен спектр радиоимпульса.
Выполнив обратное преобразование Фурье, были построены зависимости сигнала от времени и от расстояния. По графику зависимости сигнала от расстояния была определена дистанция прохождения последовательности радиоимпульсов в цилиндрическом диэлектрическом волноводе, составляющая 0,996м. Графики зависимостей представлены на рис. 1.
Рисунок 1 –зависимости.
Выводы.
В ходе выполнения данной лабораторной работы была построены графики спектра радиоимпульса, графики зависимости сигнала от расстояния и от времени, также была определена дистанция прохождения последовательности радиоимпульсов в цилиндрическом диэлектрическом волноводе, она составляет 0,996 м.
Приложение А
Исходный код программы
import matplotlib.pyplot as plt
import numpy as np
from scipy.interpolate import interp1d
from scipy.special import jn_zeros
from scipy.constants import c
# исходные данные
R = 0.01
Eps = 5.7
freq = 15e9
dt_1 = 0.666e-9
dt_2 = 2e-9
dt_3 = 0.0666e-9
P = 0.4
def step_function(x):
if x <= 0:
return 0
else:
return 1
def sin_x(x):
if x == 0:
return 1
else:
return np.sin(x) / x
def spectrum(f):
return sin_x((f - freq) * np.pi * dt_1) * dt_1
def signal(t, z):
sum = 0
for f in freq_array:
if norm_freq[0] < f < norm_freq[-1]:
sum += spectrum(f) * 1e9 * np.cos(f * 2 * np.pi * t - (f * 2 * np.pi * z) / (c * interp_omega(f)))
return sum
count = 5 # количество корней
roots = jn_zeros(0, count)
# поиск частот для фазовых скоростей
omegas = [2 * np.pi * (5 + i / 5) * 1e9 for i in range(1, 200)] # TODO количество
speed = []
group_speed = []
# расчёт фазовых и групповых скоростей
for index in range(count):
speed_array = [1 / (np.sqrt(Eps - (c * roots[index] / (R * omega)) ** 2)) for omega in omegas]
group_speed_array = [(omegas[i + 1] - omegas[i]) / (omegas[i + 1] / speed_array[i + 1] - omegas[i] / speed_array[i])
for i in range(len(speed_array) - 1)]
speed += [speed_array]
group_speed += [group_speed_array]
# нахождение импульса
N = 2 ** 10
time_moments = [dt_2 * i / (N - 1) for i in range(N)]
impulse_array = [np.sin(2 * freq * np.pi * t) * (step_function(t - dt_1) - step_function(t)) for t in time_moments]
# вычисляем преобразование Фурье
N1 = 60
freq_array = [k / dt_2 for k in range(N1)]
spectr_points = [abs(spectrum(f)) for f in freq_array]
spectr_points = np.array(spectr_points) / max(spectr_points)
norm_freq = np.array(omegas) / (2 * np.pi)
# иследование сигнала со времнем
N = 1000
z = 0
time_1 = [4 * dt_2 * i / (N - 1) for i in range(N)]
interp_omega = interp1d(norm_freq, speed[0], kind='cubic')
signal_from_time = [signal(t - dt_1 / 2, z) for t in time_1]
# сигнал после некоторой дистанции
num = 0
distance = [num + i / N for i in range(N)]
signal_from_dist = [signal(+ dt_1 / 2, d) for d in distance]
res = 0
for i in range(len(signal_from_dist) - 1):
if signal_from_dist[i] < P < signal_from_dist[i + 1]:
res = distance[i]
print("Дистанция равна:", res)
plt.figure(1, figsize=(8, 15))
plt.grid(True)
plt.subplot(5, 1, 1)
plt.title('Фазовые и групповые скорости')
max = 1 / np.sqrt(Eps)
plt.ylim(0, 1)
plt.plot([omegas[0], omegas[-1]], [max, max], linestyle='--', color='black')
for index in range(count):
plt.plot(omegas, speed[index], color='blue', linewidth=0.8)
plt.plot(omegas[0:-1], group_speed[index], color='red', linewidth=0.8)
plt.subplot(5, 1, 2)
plt.title("Импульс")
plt.plot(time_moments, impulse_array, color="red")
plt.subplot(5, 1, 3)
plt.title('Спектр')
for f, val in zip(freq_array, spectr_points):
plt.plot([f, f], [0, val], color='blue', linewidth=0.5)
plt.plot(freq_array, spectr_points, color='red')
plt.plot([norm_freq[0], norm_freq[0]], [0, 1], color='black', linestyle='--', linewidth=0.8)
plt.subplot(5, 1, 4)
plt.title("Сигнал с течением времени")
plt.plot(time_1, signal_from_time, color='red')
plt.subplot(5, 1, 5)
plt.title("Сигнал после прохождения дистанции")
plt.plot(distance, signal_from_dist, color='red')
plt.plot([distance[0], distance[-1]], [P, P], color='blue', linestyle='--', linewidth=0.8)
plt.savefig("im.png")
plt.show()