Этот пример показывает, как использовать дискретное Преобразование Гильберта для реализации Single Sideband Modulation.
Преобразование Гильберта находит приложения в модуляторах и демодуляторах, обработке речи, медицинской визуализации, измерениях направления прибытия (DOA), по существу, где бы ни была комплексно-сигнальная (квадратурная) обработка, упрощает проект.
Модуляция с одной боковой полосой (SSB) является эффективной формой амплитудной модуляции (AM), которая использует половину полосы пропускания, используемой AM. Этот метод наиболее популярен в таких приложениях, как телефония, HAM-радио и HF-связь, то есть голосовая связь. Этот пример показов, как реализовать модуляцию SSB с помощью Трансформатора Гильберта.
Чтобы мотивировать необходимость использования трансформатора Гильберта в SSB-модуляции, полезно сначала быстро просмотреть двойную боковую модуляцию.
Простая форма AM является модуляцией Double Sideband (DSB), которая обычно состоит из двух сдвинутых по частоте копий модулированного сигнала на каждой стороне несущей частоты. Более точно это упоминается как подавленная несущая DSB и определяется как
где обычно упоминается как сигнал сообщения и - несущая частота. Как показано в уравнении выше, модуляция DSB состоит из умножения сигнала сообщения по перевозчику поэтому мы можем использовать теорему модуляции преобразований Фурье, чтобы вычислить преобразование
где - преобразование Фурье в дискретном времени (DTFT), . Если сигнал сообщения lowpass с пропускной способностью W, то является полосно-пропускающим сигналом с удвоенной пропускной способностью. Давайте рассмотрим пример сигнала DSB и его спектра.
% Define and plot a message signal which contains three tones at 500, 600, % and 700 Hz with varying amplitudes. Fs = 10e3; t = 0:1/Fs:0.1-1/Fs; m = sin(2*pi*500*t) + 0.5*sin(2*pi*600*t) + 2*sin(2*pi*700*t); plot(t,m) grid xlabel('Time') ylabel('Amplitude') title('Message Signal m(n)')
Ниже мы вычисляем и строим график спектра степени сигнала сообщения.
periodogram(m,[],4096,Fs,'power','centered') ylim([-75 12])
Двусторонний спектр степени четко показывает три тона около постоянного тока. Если мы увеличим масштаб дальше, мы сможем считать степень каждого компонента.
xlim([0.1 1]) ylim([-18 2])
Значение степени для тонального сигнала 500 Гц составляет примерно -6 дБ, для тонального сигнала 600 Гц - -12 дБ, а для тонального сигнала 700 Гц - 0 дБ, что соответствует амплитудам тонального сигнала сообщения 1, 0,5 и 2, соответственно.
Использование этого сигнала сообщения , давайте умножим его на несущую, чтобы создать сигнал DSB и посмотрим на его спектр.
fo = 3.5e3; % Carrier frequency in Hz f = m.*cos(2*pi*fo*t); idx = 100; plot(t(1:idx),f(1:idx),t(1:idx),m(1:idx),':') grid xlabel('Time') ylabel('Amplitude') title('Message Signal and Message Signal Modulated') legend('Modulated Message Signal','Message Signal m(n)')
Синяя сплошная линия является модулированным сигналом сообщения, а красная пунктирная линия является медленным изменяющимся сигналом сообщения. Спектр степени нашего модулированного сигнала тогда
periodogram(f,[],4096,Fs,'power','centered') ylim([-75 0])
Мы видим, что сигнал сообщения (три тональных сигнала) был смещен на центральную частоту . Кроме того, степень каждого компонента была уменьшена до одной четверти, из-за сокращения амплитуд в два раза, как указано DTFT модулированного . Давайте масштабируем, чтобы считать новые значения степени
ylim([-20 0])
Наши положительные частотные составляющие теперь на -6 дБ, -18 дБ и -12 дБ.
Теперь, когда мы определили DSB-модуляцию, давайте рассмотрим одну боковую полосу модуляции.
Single Sideband (SSB) Модуляция подобна модуляции DSB, но вместо использования всего спектра использует фильтр, чтобы выбрать нижнюю или верхнюю боковую полосу. Выбор нижней или верхней боковой полосы приводит к модуляции нижней боковой полосы (LSB) или верхней боковой полосы (USB), соответственно. Существует два подхода к устранению одной из боковых полос, один из которых является методом фильтра, а другой - методом фазирования. Процесс выборочной фильтрации верхней или нижней боковой полосы затруднен из-за требующихся жестких фильтров, особенно если существует содержимое сигнала, близкая к DC. Этот пример показывает, как использовать метод фазирования, который использует трансформатор Гильберта для реализации модуляции SSB.
Модуляция SSB требует перемены сигнала сообщения на другую центральную частоту, не создавая пар частотных составляющих и как в случае модуляции DSB, то есть, избегая необходимости фильтрации либо верхней, либо нижней боковой полосы. Это можно сделать с помощью трансформатора Гильберта.
Давайте сначала рассмотрим определение и свойства идеального преобразования Гильберта, прежде чем обсуждать его использование в модуляции SSB. Это поможет мотивировать его использование в SSB-модуляции.
Дискретное Преобразование Гильберта является процессом, посредством которого отрицательные частоты сигнала продвигаются по фазе на 90 степени, а положительные частоты задерживаются по фазе на 90 степени. Сдвиг результатов Преобразования Гильберта (+ j) и добавление его к исходному сигналу создает комплексный сигнал, как мы увидим ниже.
Если - Преобразование Гильберта , затем:
является комплексным сигналом, известным как Аналитический сигнал. Схема ниже показывает генерацию аналитического сигнала с помощью идеального преобразования Гильберта.
Одной из важных характеристик аналитического сигнала является то, что его спектральное содержимое лежит в положительном интервале Найквиста. Это потому, что, если мы сместим мнимую часть нашего аналитического (комплексного) сигнала на 90 степени (+ j) и добавим его к вещественной части, отрицательные частоты будут отменяться, в то время как положительные частоты будут добавляться. Это приводит к сигналу без отрицательных частот. Кроме того, величина частотной составляющей в комплексном сигнале в два раза превышает величину частотной составляющей в действительном сигнале. Это похоже на односторонний спектр, который содержит общую степень сигнала в положительных частотах.
Затем мы введем Спектральный Сдвигатель. Спектральный Сдвиг смещает (переводит) спектральное содержимое сигнала путем модулирования аналитического сигнала, сформированного из сигнала, спектр которого мы хотим сдвинуть. Эта концепция может использоваться для модуляции SSB, как показано ниже.
Использование сигнала сообщения заданные выше, мы создадим аналитический сигнал с помощью преобразования Гильберта, которое затем будет модулировано до желаемой центральной частоты. Схема показана на схеме ниже.
Использование этого метода спектральной перемены обеспечит сдвиг степени нашего сигнала на интересующую частоту при сохранении в конце действительного сигнала.
Как мы указывали ранее, аналитический сигнал состоит из исходного реального сигнала плюс преобразования Гильберта этого реального сигнала. Выполнение действительного сигнала функцией hilbert в Signal Processing Toolbox™ произведет аналитический сигнал.
Примечание: Функция hilbert генерирует полный аналитический (комплексный) сигнал, а не только мнимую часть.
mc = hilbert(m);
Мы также можем вычислить и построить график спектрального содержимого аналитического сигнала, созданного из нашего сигнала сообщения .
periodogram(mc,[],4096,Fs,'power','centered') ylim([-75 6])
Как показано на графике спектра, наш аналитический сигнал комплексен и содержит только положительные частотные составляющие. Более того, если мы измерим мощность или масштабирование нашего графика далее при положительной частотной составляющей, мы увидим, что степень частотных составляющих аналитического сигнала в два раза превышает общую степень положительной (или отрицательной) частотной составляющей реального сигнала, то есть она подобна одностороннему спектру, который содержит общую степень сигнала. См. график масштабирования ниже.
xlim([0.1 1]) ylim([-10 6])
Мы видим, что степень частотных составляющих аналитического (комплексного) сигнала 500 Гц, 600 Гц и 700 Гц составляет примерно 0, -6 дБ и 6 дБ, соответственно, что является полной степенью исходного сигнала. Эти значения соответствуют нашему исходному реальному сигналу, который имеет три тона с амплитудами 1, 0,5 и 2 соответственно.
На данной точке мы можем модулировать аналитический сигнал, чтобы переместить спектральное содержимое на другую центральную частоту, не создавая пар частотной составляющей и поддерживая реальный сигнал.
Чтобы модулировать сигнал к несущей частоте мы умножим аналитический сигнал на экспоненциальный.
mcm = mc.*exp(1i*2*pi*fo*t);
Как показано на схеме Спектрального Сдвига, после модулирования нашего сигнала мы вычислим действительную часть. Спектр которой является
periodogram(real(mcm),[],4096,Fs,'power','centered') ylim([-75 0])
Как показано на графике выше, наш сигнал был модулирован до новой центральной частоты не создавая пары частот, то есть приводя к верхней боковой полосе.
Если сравнить спектральный график выше с графиком модуляции DSB, то мы увидим, что Спектральный Сдвигатель выполнил SSB модуляцию.
Из нашей предыдущей производной мы видим, что SSB модулировал сигнал, может быть написано как
где - аналитический сигнал, заданный как
Расширяя это уравнение и принимая реальную часть, мы получаем
что приводит к одной боковой полосе, верхней боковой полосе (SSBU). Точно так же можно задать нижнюю боковую полосу SSB (SSBL) путем
Приведенное выше уравнение SSBU предлагает более эффективный способ реализации SSB. Вместо выполнения комплексного умножения с и затем выбрасывая мнимую часть, мы можем вычислить только те количества, в которых мы нуждаемся, внедряя SSBU, как показано ниже.
Чтобы реализовать модуляцию SSB, показанную выше, нам нужно вычислить Преобразование Гильберта нашего сигнала сообщения и модулируйте оба сигнала. Но прежде чем мы это сделаем, нам нужно указать на тот факт, что идеальные трансформаторы Гильберта не реализуются. Однако были разработаны алгоритмы, которые аппроксимируют трансформатор Гильберта, такие как метод конечной импульсной характеристики создания фильтра Паркса-Макклеллана, который можно использовать. Signal Processing Toolbox™ обеспечивает firpm
функция, которая проектирует такие фильтры. Кроме того, поскольку фильтр вводит задержку, нам нужно компенсировать эту задержку путем добавления задержки (N/2, где N - порядок фильтра) к сигналу, который умножается на член косинуса, как показано ниже.
Для конечной импульсной характеристики трансформатора Гильберта мы будем использовать фильтр нечетной длины, который в вычислительном отношении более эффективен, чем фильтр четной длины. Хотя даже фильтры длины пользуются меньшими ошибками полосы пропускания. Экономия в фильтрах нечетной длины является результатом того, что эти фильтры имеют несколько коэффициентов, которые равны нулю. Кроме того, использование фильтра нечетной длины потребует сдвига на целочисленную задержку, в отличие от дробной задержки времени, которая требуется фильтром четной длины. Для фильтра нечетной длины величины реакция Трансформатора Гильберта равна нулю для и . Для файлов с четной длиной ответ величины не должен быть 0 в поэтому они имеют увеличенные полосы пропускания. Поэтому для фильтров нечетной длины полезная полоса пропускания ограничена
Давайте спроектируем фильтр и постройм его нулевую фазовую характеристику.
Hd = designfilt('hilbertfir','FilterOrder',60, ... 'TransitionWidth',0.1,'DesignMethod','equiripple'); hfv = fvtool(Hd,'MagnitudeDisplay','Zero-phase', ... 'FrequencyRange','[-pi, pi)'); hfv.Color = 'white';
Чтобы аппроксимировать Преобразование Гильберта, мы будем фильтровать сигнал сообщения с фильтром.
m_tilde = filter(Hd,m);
Сигнал верхней боковой полосы тогда
G = filtord(Hd)/2; % Filter delay
m_delayed = [zeros(1,G),m(1:end-G)];
f = m_delayed.*cos(2*pi*fo*t) - m_tilde.*sin(2*pi*fo*t);
и спектр
periodogram(f,[],4096,Fs,'power','centered') ylim([-75 0])
Как видно на графике выше, мы успешно модулировали сигнал сообщения (три тональных сигнала) до несущей частоты 3,5 кГц и сохраняли только верхнюю боковую полосу.
Как мы видели, при помощи приближения к Преобразованию Гильберта мы можем получить аналитические сигналы, которые полезны во многих приложениях сигналов, которые требуют спектральной перемены. В частности, мы видели, как приблизительный трансформатор Гильберта может использоваться для реализации Single Sideband Modulation.