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

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

Преобразование Гильберта находит применение в модуляторах и демодуляторах, речевой обработке, медицинской обработке изображений, измерениях направления прибытия (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 Гц и сохранили только верхнюю боковую полосу.

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

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