Одна Модуляция Боковой полосы через Гильбертово Преобразование

Этот пример показывает, как использовать дискретное Гильбертово Преобразование, чтобы реализовать Одну Модуляцию Боковой полосы.

Гильбертово Преобразование находит применение в модуляторах и демодуляторах, речевой обработке, медицинской обработке изображений, измерениях направления прибытия (DOA), по существу где угодно комплексный сигнал (квадратура), обработка упрощает проект.

Введение

Одна Боковая полоса (SSB), Модуляция является эффективной формой Амплитудной модуляции (AM), которая использует половину пропускной способности, используемой AM. Этот метод является самым популярным в приложениях, таких как телефония, Любительское радио, и коммуникации HF, т.е. основанные на речи коммуникации. Этот пример показывает, как реализовать Модуляцию SSB с помощью Гильбертова Преобразователя.

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

Двойная модуляция боковой полосы

Простая форма AM является Двойной Боковой полосой (DSB) Модуляция, которая обычно состоит из двух переключенных частотой копий модулируемого сигнала по обе стороны от несущей частоты. Более точно это упоминается как DSB Подавленный Поставщик услуг и задано как

f[n]=m[n]потому что(2πfon/fs)

где m [n] обычно упоминается как сигнал сообщения, и fo является несущей частотой. Как показано в уравнении выше, модуляция DSB состоит из умножения сигнала m [n] сообщения поставщиком услуг because(2*pi*fo*n/fs), поэтому, мы можем использовать теорему модуляции преобразований Фурье, чтобы вычислить преобразование f [n]

F(f)=12[M(f-fo)+M(f+fo)]

где M (f) является Преобразованием Фурье дискретного времени (DTFT) m [n]. Если сигнал сообщения является lowpass с пропускной способностью W, то F (f) является полосовым сигналом с дважды пропускной способностью. Давайте посмотрим на пример сигнал 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:.1-1/Fs;
m = sin(2*pi*500*t) + .5*sin(2*pi*600*t) + 2*sin(2*pi*700*t);
plot(t,m); 

% Plot annotations.
grid
xlabel('Time')
ylabel('Amplitude')
title('Message Signal m[n]')

Ниже мы вычисляем и строим спектр мощности сигнала сообщения.

periodogram(m, [], 4096, Fs, 'power', 'centered');

% Let's zoom into the area of interest.
ylim([-75,12]);

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

xlim([0.1 1]);
ylim([-18 2]);

Степень для тона на 500 Гц составляет примерно-6 дБ, поскольку тон на 600 Гц составляет-12 дБ, и для тона на 700 Гц 0 дБ, который соответствует тональным амплитудам сигнала сообщения 1, 0.5, и 2, соответственно.

Используя этот сигнал m [n] сообщения, давайте умножим его на поставщика услуг, чтобы создать сигнал 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),'r:');   % View a portion.
grid

% Plot annotations.
xlabel('Time')
ylabel('Amplitude')
title('Message Signal and Message Signal Modulated')
legend('Modulated Message Signal','Message Signal m[n]')

hgcf = gcf;
hgcf.Color = 'white';

Синяя сплошная линия является модулируемым сигналом сообщения, и красная пунктирная линия является медленным переменным сигналом сообщения. Спектр мощности нашего модулируемого сигнала затем

periodogram(f, [], 4096, Fs, 'power', 'centered');

% Let's zoom into the area of interest.

ylim([-75,0]);

hgcf = gcf;
hgcf.Color = 'white';

Мы видим, что сигнал сообщения (три тона), был переключен к центральной частоте fo. Кроме того, мощность каждого компонента была уменьшена одной четверти, из-за разделенных на два амплитуд, как обозначено DTFT модулируемого m [n]. Давайте масштабировать, чтобы считать новые значения степени

ylim([-20,0]);

Наши положительные частотные составляющие теперь в-6,-18, и-12 дБ.

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

Одна модуляция боковой полосы

Одна Боковая полоса (SSB), Модуляция подобна модуляции DSB, но вместо того, чтобы использовать целый спектр это использует фильтр, чтобы выбрать или более низкую или верхнюю боковую полосу. Выбор более низкой или верхней боковой полосы приводит к более низкой боковой полосе (LSB) или верхняя боковая полоса (USB) модуляция, соответственно. Существует два подхода к устранению одной из боковых полос, каждый - метод фильтра, и другой метод фазировки. Процесс выборочной фильтрации верхней или более низкой боковой полосы является трудным из-за строгих требуемых фильтров, особенно если существует содержимое сигнала близко к DC. Этот пример показывает, как использовать метод фазировки, который использует Гильбертов Преобразователь, чтобы реализовать Модуляцию SSB.

Модуляция SSB требует перемены сигнала сообщения к другой центральной частоте, не создавая пары частотных составляющих X (f-fo) и X (f+fo) как в случае модуляции DSB, т.е. избегая потребности отфильтровать или верхнюю или более низкую боковую полосу. Это может быть сделано при помощи Гильбертова Преобразователя.

Давайте сначала рассмотрим определение и свойства идеального Гильбертова Преобразования, прежде чем мы обсудим его использование в модуляции SSB. Это поможет мотивировать его использование в модуляции SSB.

Идеальный Гильберт преобразовывает

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

Если ми [n] является Гильбертовым Преобразованием г-на [n], то:

mc[n]=mr[n]+jmi[n]

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

Одна важная характеристика аналитического сигнала - то, что его спектральное содержимое находится в положительном интервале Найквиста. Это вызвано тем, что, если мы переключим мнимую часть нашего аналитического (комплексного) сигнала 90 градусами (+j) и добавим его в действительную часть, отрицательные частоты отменят, в то время как положительные частоты добавят. Это приводит к сигналу без отрицательных частот. Кроме того, значение частотной составляющей в комплексном сигнале является дважды значением частотной составляющей в действительном сигнале. Это подобно одностороннему спектру, который содержит общую степень сигнала в положительных частотах.

Затем мы вводим Спектральный Переключатель. Спектральные сдвиги Переключателя (переводят) спектральное содержимое сигнала путем модуляции аналитического сигнала, сформированного из сигнала, спектр которого мы хотим переключить. Эта концепция может использоваться для модуляции SSB как показано позже.

Спектральный переключатель

Используя сигнал m [n] сообщения, заданный выше, мы создадим аналитический сигнал путем использования Гильбертова Преобразования, которое будет затем модулироваться к желаемой центральной частоте. Схему показывают в схеме ниже.

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

Когда мы указали ранее, что аналитический сигнал составлен из исходного сигнала с действительным знаком плюс Гильбертово Преобразование того действительного сигнала. Выполнение действительного сигнала функцией hilbert в Signal Processing Toolbox™ произведет аналитический сигнал.

Примечание: функция hilbert производит полный аналитический (комплексный) сигнал, не только мнимую часть.

mc = hilbert(m);

Мы можем также вычислить и построить спектральное содержимое аналитического сигнала, созданного из нашего сигнала m [n] сообщения.

periodogram(mc, [], 4096, Fs, 'power', 'centered');
hgcf.Color = 'white';

% Let's zoom in.
ylim([-75,6]);

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

xlim([0.1,1]);
ylim([-10,6]);

Мы видим, что степень частотных составляющих аналитического (комплексного) сигнала 500, 600, и 700 Гц является примерно 0,-6, и 6 дБ, соответственно, который является общей степенью исходного сигнала. Эти значения соответствуют нашему исходному сигналу с действительным знаком, который имеет три тона с амплитудами 1, 0.5, и 2, соответственно.

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

Чтобы модулировать сигнал к несущей частоте fo, мы умножим аналитический сигнал на экспоненциал.

mcm = mc.*exp(1i*2*pi*fo*t);

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

periodogram(real(mcm), [], 4096, Fs, 'power', 'centered');

% Zooming in we get
ylim([-75,0]);

hgcf = gcf;
hgcf.Color = 'white';

Как показано в графике выше нашего сигнала модулировался к новой центральной частоте fo, не создавая пары частоты, т.е. это привело к верхней боковой полосе.

Если мы сравниваем спектральный график выше с той из модуляции DSB, мы видим, что Спектральный Шифтер выполнил модуляцию SSB.

Эффективное внедрение модуляции SSB

От нашей предыдущей деривации мы видим, что SSB модулировал сигнал, f [n] может быть записан как

f[n]=[mc[n]exp(j2πfon/fs)]

где мГц [n] является аналитическим сигналом, заданным как

mc[n]=m[n]+jm[n]

При расширении того уравнения и принятии действительного участия мы добираемся

f[n]=[m[n]потому что(2πfon/fs)-m[n]sin(2πfon/fs)]

который приводит к одной боковой полосе, верхняя боковая полоса (SSBU). Точно так же мы можем задать SSB более низкая боковая полоса (SSBL)

f[n]=[mc[n]exp(-j2πfon/fs)]

f[n]=[m[n]потому что(2πfon/fs)+m[n]sin(2πfon/fs)]

Уравнение SSBU выше предлагает более эффективный способ реализовать SSB. Вместо того, чтобы выполнять комплексное умножение мГц [n] с exp (j*2*pi*fo*n/fs) и затем выбрасывать мнимую часть, мы можем вычислить только количества, в которых мы нуждаемся путем реализации SSBU как показано ниже.

Чтобы реализовать модуляцию SSB, показанную выше, мы должны вычислить Гильбертово Преобразование нашего сигнала m [n] сообщения и модулировать оба сигнала. Но прежде чем мы делаем это, мы должны указать на то, что идеальные Гильбертовы преобразователи не осуществимы. Однако алгоритмы, которые аппроксимируют Гильбертов Преобразователь, такой как КИХ-метод проектирования фильтра Парков-McClellan, были разработаны, который может использоваться. MATLAB® Signal Processing Toolbox™ обеспечивает функцию firpm, которая разрабатывает такие фильтры. Кроме того, поскольку фильтр вводит задержку, которую мы должны компенсировать ту задержку путем добавления задержки (N/2, где N является порядком фильтра) к сигналу, который умножается на термин косинуса как показано ниже.

Для КИХ преобразователь Гильберта мы будем использовать нечетный фильтр длины, который в вычислительном отношении более эффективен, чем ровный фильтр длины. Хотя даже фильтры длины обладают меньшими ошибками полосы пропускания. Сбережения в нечетных фильтрах длины являются результатом, что эти фильтры имеют несколько из коэффициентов, которые являются нулем. Кроме того, использование нечетного фильтра длины потребует сдвига целочисленной задержкой, в противоположность дробной задержке, которая требуется ровным фильтром длины. Для нечетного фильтра длины ответ значения Гильбертова Преобразователя является нулем для w = 0 и w = пи. Для даже программ для работы с файлами длины ответ значения не должен быть 0 в пи, поэтому они увеличили пропускную способность. Таким образом для нечетных фильтров длины полезная пропускная способность ограничивается

0<w<π

Давайте разработаем фильтр и построим его нулевой фазовый отклик.

Hd = designfilt('hilbertfir','FilterOrder',60,...
                             'TransitionWidth',0.1,...
                             'DesignMethod','equiripple');

hfv = fvtool(Hd,'Analysis','Magnitude',...
    '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');

% Zooming in we get
ylim([-75,0]);
hgcf = gcf;
hgcf.Color = 'white';

Как замечено в графике выше мы успешно модулировали сигнал сообщения (три тона) к несущей частоте 3.5k Гц и сохранили только верхнюю боковую полосу.

Сводные данные

Как мы видели, при помощи приближения к Гильбертову Преобразованию, мы можем произвести аналитические сигналы, которые полезны во многих приложениях сигнала, которые требуют спектральной перемены. В частности мы видели, как аппроксимированный Гильбертов Преобразователь может использоваться, чтобы реализовать Одну Модуляцию Боковой полосы.