Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Методы обработки данных в научных исследованиях. Учебное пособие
.pdf
2.2) интерполяторы Лагранжа (частный случай — кубическая
интерполяция).
3. CIC-фильтры (каскады гребенчатых фильтров и интеграторов). Этот класс фильтров не использует умножений при вычислении, что позволяет сэкономить вычислительные ресурсы.
5.2. Децимация с целым коэффициентом
Процесс уменьшения частоты дискретизации сигнала называется децимацией. Иногда этот термин употребляют только для
уменьшения частоты дискретизации в целое число раз (далее N).
Децимация цифрового сигнала с целым коэффициентом производится в два этапа:
цифровая фильтрация сигнала с целью удаления высокоча-
стотных составляющих, не удовлетворяющих условиям теоремы
Котельникова для новой частоты дискретизации;
удаление (отбрасывание) лишних отсчетов (сохраняется
каждый N-й отсчет).
Второй этап иногда обозначают термином downsampling.
В обиходе он может употребляться как синоним термина «децимация».
Первый этап необходим для исключения наложения спектров,
природа которого аналогична наложению спектров при первоначальной дискретизации аналогового сигнала. Наложение спектров
особенно заметно на тех участках сигнала, которые содержат значительные высокочастотные спектральные составляющие.
Иллюстрация алгоритма децимации дискретного сигнала (с коэффициентом 2) показана на рис. 16. Красные точки обозначают
отсчеты, сплошные линии — непрерывный сигнал, представлением которого эти отсчеты являются. Сверху — исходный сигнал,
в середине — этот же сигнал после фильтрации в цифровом фильтре нижних частот, снизу — децимированный сигнал.
При программной реализации алгоритма децимации «лишние»
отсчеты не удаляются, а просто не вычисляются. При этом число
обращений к цифровому фильтру уменьшается в N раз. При аппаратной реализации экономии можно достичь путем использования
полифазных фильтров.
41

Рис. 16. Алгоритм децимации дискретного сигнала
5.3. Интерполяция с целым коэффициентом
Интерполяцией называют увеличение частоты в целое или дробное число раз путем вычисления промежуточных отсчетов по уже
имеющимся. Идеальная интерполяция позволяет точно восстановить значения сигнала в промежуточных отсчетах.
Стандартный алгоритм интерполяции сигнала с целым коэффициентом заключается в следующем:
1)
вставка нулевых отсчетов на место отсчетов, которые необхо-
димо вычислить;
2)
фильтрация сигнала цифровым фильтром нижних частот для
того, чтобы убрать спектральные составляющие сигнала, которых
42

заведомо не могло быть в исходном сигнале согласно теореме Котельникова; выход фильтра умножается на коэффициент интерполяции для нормирования.
Первый этап иногда обозначается термином upsampling. При
этом в обиходе он может употребляться как синоним термина «интерполяция».
Иллюстрация алгоритма интерполяции дискретного сигнала
(с коэффициентом 2) показана на рис. 17. Красные точки обозначают исходные отсчеты сигнала; сплошные линии — непрерывный
сигнал, представлением которого эти отсчеты являются. Сверху —
исходный сигнал, в середине — этот же сигнал со вставленными
нулевыми отсчетами (зеленые точки), снизу — интерполированный
сигнал (синие точки — интерполированные значения отсчетов).
Рис. 17. Алгоритм интерполяции дискретного сигнала
43

При программной реализации интерполяции нулевые отсчеты не
участвуют в вычислении выходного сигнала фильтра, что позволяет
оптимизировать процесс вычисления. При аппаратной реализации для
экономии ресурсов возможно использование полифазных фильтров.
5.4. Комбинация интерполяции и децимации
Для того чтобы изменить частоту дискретизации сигнала в M/N
раз (M и N — целые положительные числа), можно сначала увеличить частоту дискретизации в M раз, а затем уменьшить ее в N раз.
Фильтрацию сигнала достаточно произвести всего один раз — между интерполяцией и децимацией.
Недостатком данного метода является необходимость фильтрации сигнала на повышенной в M раз частоте дискретизации, что
требует значительных вычислительных ресурсов. При этом соответствующая частота может во много раз превосходить как исходную, так и окончательную частоту передискретизации, особенно
если M и N — близкие большие числа. Так, при передискретизации
звукового сигнала с 44 100 до 48 000 Гц этим методом нужно увеличить частоту дискретизации в 160 раз до 7 056 000 Гц и затем
уменьшить ее в 147 раз до 48 000 Гц. Таким образом, в данном примере вычисления приходится производить на частоте дискретизации более 7 МГц.
5.5. Передискретизация с помощью полифазных фильтров
Метод передискретизации с помощью полифазных фильтров
аналогичен предыдущему, с тем отличием, что в нем вместо одного
фильтра, работающего на высокой частоте дискретизации, используется несколько фильтров, работающих на низкой частоте. При
этом удается добиться сокращения количества необходимых вычислений, так как для каждого отсчета следует вычислить выходной
сигнал только одного из этих фильтров.
Полифазный фильтр представляет собой набор небольших фильтров, работающих параллельно, каждый из которых обрабатывает
только подмножество отсчетов сигнала (если всего имеется N фильтров, каждый фильтр будет обрабатывать только каждый N-й отсчет).
Полифазные фильтры применяются для передискретизации как
с целым, так и с дробным коэффициентом.
44

5.6. Передискретизация с помощью ДПФ
Передискретизация с помощью ДПФ используется для повышения частоты дискретизации в целое или дробное число раз. Алгоритм работает только с конечными отрезками сигнала. Пусть N —
начальное число отсчетов, M — число отсчетов в передискретизованном сигнале. Алгоритм включает в себя следующие операции.
1. Вычисляется ДПФ исходного сигнала (чаще всего по алго-
ритму БПФ).
2. В середину спектра вставляется необходимое число нулевых
компонент:
2.1) если N нечетное:
1
yx i
ii
1,
yiMN
01 ,
i
yx MN iM
iiMN
N
2
NN
11
22
N
1
1;
2
2.2) если N четное:
yx i
ii
N
x
2
yi
i
22
02 ,
yiMN
i
1,
1
N
1
x
2
yiMN
i
22
yx MN iM
iiMN
N
2
N
2
N
1,
NN
22
N
1,
2.
3. Вычисляется обратное ДПФ с нормировкой.
45

Любой метод, основанный на ДПФ, предназначен в первую очередь для периодических дискретных сигналов. Для обработки непериодических сигналов необходимо выбирать отрезки сигнала для
вычисления ДПФ таким образом, чтобы их концы перекрывались.
5.7. Применение передискретизации
Широко применяется как аппаратная (на основе специализированных микросхем или FPGA), так и программная (на базе процессоров общего назначения или сигнальных процессоров) реализация
алгоритмов передискретизации.
Выбор конкретной реализации алгоритма передискретизации —
результат компромисса между качеством преобразования и его вычислительной сложностью. Основным параметром, влияющим на
эти характеристики, является близость используемых цифровых
фильтров к идеальным. Более качественные фильтры требуют
больших ресурсов для вычисления.
На практике передискретизация в большинстве случаев ведет
к потере информации о сигнале по следующим причинам:
при уменьшении частоты дискретизации сигнал необходимо
отфильтровать с целью удаления высокочастотных спектральных
составляющих, которые не соответствуют условиям теоремы Котельникова для новой частоты дискретизации;
неизбежная неидеальность применяемых цифровых филь-
тров;
вычисления, производимые над цифровыми (квантованными
по уровню) сигналами, ведут к необратимым ошибкам округления.
Таким образом, при увеличении частоты дискретизации с последующим уменьшением ее до исходного значения качество сигнала
будет потеряно (если только высокая частота не кратна низкой).
46

6. АМПЛИТУДНАЯ МОДУЛЯЦИЯ И ДЕМОДУЛЯЦИЯ
Амплитудная модуляция и демодуляция сигналов является очень
важной для радиосвязи, техники ускорителей, радиолокации, ультразвуковой и оптической доплеровской анемометрии и других областей, где применяют частотно-модулированные сигналы заранее
заданной формы. В данном разделе показаны алгоритмы и их программная реализация для амплитудной модуляции и демодуляции
цифровых сигналов.
6.1. Амплитудная модуляция
При амплитудной модуляции изменяемым параметром несущего
сигнала является его амплитуда.
Пусть
ut
— информационный сигнал,
m
()
ut
— несущий сиг-
c
()
нал (несущее колебание). Тогда амплитудно-модулированный сигнал ( )
ut имеет вид
am
()
ut
() () 1 ,
utut m
am c
ut
m
m
()
max
где m — коэффициент модуляции.
Пример программы, реализующей амплитудную модуляцию,
представлен ниже.
voidMixer(float*AmplSignal,float*CarrierSignal,
float*Output,intLen,floatkoeff)
{
for(inti=0;i<Len;i++)
{
Output[i]=CarrierSignal[i]*(1.0f+koeff*
AmplSignal[i]);
}
return;
}
Здесь использован нормированный модулирующий сигнал, т. е.
u
, такой что
m
()
ut
u
m
m
()
ut
m
max
.
47

Если ( ) cos( ),
ut U wt то амплитудно-модулированный сигнал
ccc
примет вид
() 1 cos( ).
utU m wt
am c c
Данное выражение описывает несущий сигнал ( ),
ванный по амплитуде сигналом
()
ut
m
()
ut
m
max
()
ut с коэффициентом модуляции
m
ut модулиро-
c
m. В качестве примера ниже представлен несущий (рис. 18), моду-
лирующий (рис. 19) сигнал и результат амплитудной модуляции
с коэффициентом 0,5 (рис. 20).
Рис. 18. Пример несущего сигнала
Рис. 19. Пример модулирующего сигнала
48

Рис. 20. Амплитудная модуляция с коэффициентом модуляции 0,5
Для неискаженной модуляции необходимо выполнение условия
Если оно не будет выполняться, то наблюдается перемодуля-
1.m
ция несущего сигнала. Пример перемодурованного сигнала при коэффициенте модуляции 1,5 показан ни рис. 21.
Рис. 21. Перемодурованный сигнал при коэффициенте модуляции 1,5
49

Пусть необходимо выполнить модуляцию несущего колебания
моногармоническим сигналом. Выражение для несущего колебания
с частотой
Здесь
рующего синусоидального сигнала с частотой
w имеет вид (начальную фазу положим равной нулю)
c
ut U wt
() cos( ).
ccc
U — амплитуда несущего сигнала. Выражение для модули-
c
w имеет вид
m
ut U wt
() cos( ),
mmm
где φ — начальная фаза,
( ) (1 cos( ))cos( )
utU m wt wt
am c m c
cos( ) (cos(( ) )
Uwt wwt
cc cm
cos(( ) )).
wwt
cm
() .
ut U Тогда
mm
max
mU
c
2
Таким образом, типичный радиосигнал состоит из несущего колебания и двух боковых полос. Боковые полосы имеют частоту, отличную от
.cw Для синусоидального сигнала, представленного
здесь, боковые полосы — синусоидальные сигналы с частотами
ww и .
cm
ww
cm
Программа на языке С, реализующая модуляцию гармонического несущего сигнала, представлена ниже.
voidHarmonicMixer(float*AmplSignal,intLen,float
koeff,floatcarrier_freq,floatcarrier_ampl,float
*Output)
{
for(inti=0;i<Len;i++)
{
floatcarrier_val=carrier_ampl*
cos(carrier_freq*i);
Output[i]=carri‐
er_val*(1.0f+koeff*AmplSignal[i]);
}
return;
}
50
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
