Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы / Методическое пособие (1).pdf
Скачиваний:
0
Добавлен:
25.03.2026
Размер:
1.27 Mб
Скачать

6. Линейная фильтрация реальных цифровых сигналов

Цель работы: Научиться применять дискретное преобразование Фурье для спектрального анализа сигналов с большим количеством отсчетов. Получить практические навыки реализации алгоритмов шумоподавления в реальных сигналах с помощью линейных цифровых фильтров.

Дискретное преобразование Фурье.

На практике работа с реальными сигналами осуществляется по большому количеству дискретных отсчетов (десятки тысяч и более). Поэтому использовать для анализа непрерывный по частоте спектр не представляется возможным, так как преобразование дискретных сигналов будет представлять собой сумму как минимум из десятков тысяч слагаемых с непрерывным параметром ω. Поэтому на практике используют дискретное преобразование Фурье, которое имеет вид:

N 1

 

2πk

 

 

X (k) = x(n)exp j

N

n , k = 0,..., N 1,

(6.1)

n=0

 

 

 

где x(n) – n-ый отсчет дискретного сигнала, N – количество дискретных

отсчетов (подразумевается, что их нумерация начинается с n = 0), k – номер дискретной частоты, которой можно сопоставить реальную циклическую частоту ωk в спектре сигнала формулой

ω

 

=

k

 

ω

,

 

(6.2)

 

N

 

 

 

k

 

 

s

 

 

 

где ωs – циклическая частота дискретизации.

Функция X (k)

называется

дискретным образом Фурье сигнала

 

x(n) .

Фактически

дискретное

преобразование получается дискретизацией образа Фурье дискретного сигнала по частоте согласно соотношению (6.2). Если N достаточно велико, то можно пренебречь краевыми эффектами и считать дискретный образ Фурье приближенным спектром дискретного сигнала.

Дискретное преобразование Фурье обратимо:

 

1

N 1

 

2πk

 

 

 

 

x(n) =

 

X (k)exp j

N

n

,

n = 0,..., N 1.

(6.3)

 

 

N k =0

 

 

 

 

 

 

 

 

37

 

 

 

 

 

Соотношение (6.3) называют обратным дискретным преобразованием Фурье, а (6.1) – прямым дискретным преобразованием Фурье.

Широкое практическое применение дискретного преобразования Фурье для спектрального анализа обусловлено существованием алгоритма быстрого преобразования Фурье, который позволяет вычислить преобразование (6.1) или (6.3) за количество операций ~ N log N (по

сравнению

с N 2 при

прямом суммировании). Поэтому сложность

вычисления

дискретного

преобразования Фурье относительно медленно

растет с увеличением количество дискретных отсчетов N . Отметим, что максимальное ускорение данный алгоритм дает только при N = 2m , m .

Если количество отсчетов не равно степени двойки, то алгоритм быстрого преобразования Фурье тоже можно использовать, например, доопределяя сигнал нулями до нужного количества отсчетов.

В данной работе предлагается провести спектральный анализ, а также цифровую фильтрацию одного из следующих двух видов сигналов.

1) Звуковой сигнал

Первый вид сигналов представляет собой короткую звуковую запись человеческого голоса, на которую наложен синтетический синий шум. Частота дискретизации при записи голоса составляла 44100 Гц.

2) Электрокардиограмма (ЭКГ)

Второй вид сигналов представляет собой искусственно сгенерированную запись ЭКГ с ярко выраженными PQRST пиками. На ЭКГ была наложена модель сетевой помехи, а также синтетический белый шум. Частота дискретизации сигнала ЭКГ равна 512 Гц. Отметим, что ЭКГ является «почти периодическим» сигналом. Поэтому на спектре ЭКГ есть ярко выраженная основная гармоники, соответствующая частоте сердцебиения, а также высшие гармоники, имеющие кратные основной гармонике частоты.

Для обработки данных сигналов предлагается использовать средства математического пакета MATLAB. Для этого ознакомьтесь с требуемыми вам функциями в Приложении 8.

Программа работы

1) Постройте заданный вашим вариантом сигнал по временной области.

38

2)Найдите дискретный образ Фурье вашего сигнала. Постройте его дискретизованный амплитудный спектр. Определите, в каком частотном диапазоне находится полезный сигнал. Для сигналов ЭКГ определите частоту сердцебиения по спектру и приведите ее в отчете (в ударах/минуту). Для звуковых сигналов приведите в отчете содержание звукового сообщения.

3)Рассчитайте и примените к сигналу нужный фильтр (фильтры), которые позволят эффективно снизить уровень помех/шума при сохранении полезной информации. Для звукового сигнала ваша цель при фильтрации – сохранить разборчивость речи, при этом максимально понизив уровень громкости шума на фоне громкости самой речи. Для сигнала ЭКГ ваша цель

сделать PQRST пики как можно лучше различимыми во временной области.

4)Постройте отфильтрованный сигнал во временной области. Также постройте его амплитудный спектр (дискретизованный по частоте). Если вы применяли более одного фильтра к сигналу, то постройте соответствующие графики для выходного сигнала каждого из фильтров.

Контрольные вопросы

1)Что такое дискретное преобразование Фурье?

2)Во сколько примерно раз алгоритм быстрого преобразования Фурье ускоряет вычисления для 105 отсчетов?

3)Что такое оконное преобразование Фурье? Зачем оно применяется?

4)Какие искажения в сигнал вносит дискретизация по частоте? Как с этими искажениями можно бороться?

5)Что такое эффект наложения (aliasing в англоязычной литературе), возникающий при дискретизации высокочастотного сигнала?

39

7. Передискретизация сигналов с понижением частоты

Цель работы: Познакомиться с передискретизации сигналов с понижением частоты, научиться применять цифровые фильтры к реальным сигналам, а также изучить, какие искажения может вносить эффект алиасинга на примере звуковых сигналов.

Алиасинг

Как известно из теоремы Котельникова, дискретизация без потери информации о сигнале возможна только для сигналов с конечным спектром, с которыми мы не сталкиваемся при обработке реальных сигналов, так как они имеют конечную длительность. Однако дискретизация сигналов с бесконечным спектром либо со спектром, ширина которого превышает половину частоты дискретизации, не только приводит к потере информации о высокочастотных гармониках, но вносит искажения в низкочастотную область сигнала из-за так называемого эффекта «алиасинга» (aliasing). Данный эффект вероятно знаком читателю под названием «стробоскопический эффект». Его можно наблюдать в повседневной жизни, когда, например, мы производим съемку на камеру вращающегося колеса. Если частота вращения колеса будет чуть выше, чем частота кадров съемки, то на записи мы увидим очень медленно вращающееся колесо. Если же частота вращения колеса будет чуть меньше, чем частота кадров съемки, то на записи мы увидим колесо, медленно вращающееся уже в обратную сторону.

На практике высокочастотная часть спектра сигнала представляет собой не одну единственную гармонику, а довольно плотный спектр. Более того, в высокочастотной области сигнала обычно находятся различные широкополосные шумы, наводки и прочие не несущие полезной информации составляющие сигнала. При дискретизации таких сигналов алиасинг приводит к тому, что высокочастотные составляющие сигнала трансформируются в случайный набор низкочастотных гармоник, которые похожи для наблюдателя на широкополосный шум с диапазоном частот от нуля до половины частоты дискретизации. Для борьбы с алиасингом при дискретизации аналогового сигнала его предварительно пропускают через сглаживающий фильтр (ФНЧ). Граница полосы пропускания такого фильтра должна быть равна либо частоте Найквиста (половине частоты

40

дискретизации), либо совпадать с границей практической ширины спектра полезной составляющей сигнала, если она априори известна и меньше частоты Найквиста.

Однако зачастую добавление дополнительного аналогового фильтра в схему устройства для цифровой обработки сигнала может быть нецелесообразно с точки зрения простоты и стоимости устройства или попросту невозможно, если аналоговый сигнал отсутствует в системе в явном виде. Примером последнего случая является генерация кадров видеоизображения на программных движках в режиме реального времени, например, в компьютерных играх. В данном примере одним из самых эффективных способов борьбы с алиасингом, который проявляется в рябе изображения, является генерация кадра в большем разрешении и последующее его сглаживание уже с помощью цифрового фильтра. Данный метод известен в компьютерной графике под названием SSAA (supersample anti-aliasing). Его эффективность будет тем выше, чем в большем разрешении будет сгенерирован кадров при фиксированном разрешении монитора. Однако формирование кадра в большом разрешении требует избыточных затрат вычислительных ресурсов, поэтому в современных движках используются модифицированные методы сглаживания изображения, находящие компромисс между скоростью и качеством сглаживания.

Передискретизация сигналов

С передискретизацией цифровых сигналов приходится сталкиваться, конечно, не только в компьютерной графике. Вне зависимости от назначения такой процедуры, она требует использование цифрового фильтра низких частот для устранения искажений, вносимых такой процедурой.

Наиболее распространенным и простым в реализации является следующий алгоритм передискретизации. Пусть целевая и исходная частоты дискретации связаны соотношением

f

t

=

p

f

0

,

(7.1)

q

 

 

 

 

 

где p и q – натуральные числа, f0

– исходная частота дискретизации, а

ft

целевая. Тогда искомый алгоритм передискретизации состоит из трех шагов:

41

1)Между каждыми двумя соседними отсчетами исходного сигнала надо добавить ( p 1) нулевых отсчетов.

2)К получившемуся сигналу применить фильтр низких частот. Если дополнительная априорная информация о спектре сигнале отсутствует, то граница полосы пропускания такого фильтра выбирается равной половине от меньшей из двух частот дискретизации ( ft или f0 ).

3)Из получившегося после сглаживания сигнала выбираем каждый q-ый отсчет. Эти отсчеты и будут составлять конечный передискретизованный сигнал.

Вэтой лабораторной для исследования влияния алиасинга на сигнал мы ограничимся случаем p =1, т.е. исходная частота будет ровно в q раз

выше целевой, а первый шаг в данном алгоритме будет пропускаться.

В MATLAB описанный алгоритм передискретизации с использованием КИХ-фильтра реализован посредством функции

upfirdn(xin,h,p,q)

(7.2)

Здесь xin – это исходный дискретизованный сигнал, числа q и p имеют тот же смысл, что и в (7.1), а вектор h – это конечная импульсная характерика сглаживающего фильтра.

С остальными функциями MATLAB, которые понадобятся в данной лабораторной работе, можно ознакомиться в Приложении 8.

Программа работы

1)Импортируйте заданный вашим вариантом звуковой сигнал с частотой дискретизации 176400 Гц. Постройте его временной график, а также график его амплитудного спектра, вычислив быстрое преобразование Фурье от него. Прослушайте данный сигнал.

2)Преобразуйте импортированный сигнал в сигнал с частотой дискретизации в 4 раза меньше (44100 Гц) без использования сглаживающего фильтра. Это можно сделать командой Y=upfirdn(X,[1],1,4), где X – сигнал с частотой дискретизации 176400 Гц, а Y – сигнал с частотой дискретизации 44100 Гц. Сигнал Y, полученный таким образом, будет эквивалентен тому, что дискретизация изначально проводилась бы с частотой 44100 Гц вместо

42

176400 Гц. Постройте временной график сигнала Y, его амплитудный спектр, а также прослушайте получившийся сигнал. Сравните степень зашумленности сигналов X и Y по их амплитудным спектрам и аудиальному восприятию.

3)Так как человеческий голос покрывает не весь слышимый спектр частот, уровень шума в сигнале Y можно несколько снизить с помощью ФНЧ. Рассчитайте соответствующий нерекурсивный фильтр и примените его

ксигналу Y. Граничную частоту, порядок фильтра и оконную функцию подберите так, чтобы добиться наименьшего искажения голоса при наименьшем уровне шума. Результат фильтрации продемонстрируйте с помощью графика получившегося сигнала во временной области, а также его амплитудного спектра.

4)Теперь проведите передискретизацию исходного сигнала X, используя сглаживающий фильтр. Порядок фильтра, его граничную частоту (в Гц) и оконную функцию возьмите такие же, как в пункте 3. Аналогично пункту 3 продемонстрируйте результат передискретизации. Сравните уровень зашумленности сигналов, полученных в пункте 3 и 4.

Контрольные вопросы

1)Что такое дискретное преобразование Фурье?

2)Сравните скорость алгоритма быстрого преобразования Фурье и прямого вычисления дискретного преобразования Фурье?

3)Какие искажения в сигнал вносит дискретизация по частоте? Как с этими искажениями можно бороться?

4)Что такое алиасинг (aliasing в англоязычной литературе), возникающий при дискретизации высокочастотного сигнала?

5)Как рассчитать сглаживающий фильтр, используемый при передискретизации?

6)Опишите алгоритм передискретизации цифрового сигнала.

7)Почему при передискретизации обычно применяют нерекурсивные сглаживающие фильтры?

43