Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

lab5 / report_lab5

.docx
Скачиваний:
3
Добавлен:
04.02.2020
Размер:
187.07 Кб
Скачать

Санкт-Петербургский Государственный Электротехнический Университет "ЛЭТИ"

кафедра физики

Задание №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()

Соседние файлы в папке lab5