Однополосная амплитудная модуляция

В этом примере показано, как использовать преобразование Гильберта, чтобы выполнить одно боковую полосу (SSB) амплитудная модуляция (AM) сигнала. Сигналы Single-sideband AM имеют меньше пропускной способности, чем нормальные сигналы AM.

Сгенерируйте 512 выборок симулированного широкополосного сигнала с помощью sinc функция. Задайте пропускную способность π/4 рад/выборка.

N = 512;
n = 0:N-1;

bw = 1/4;
x = sinc((n-N/2)*bw);

Добавьте белый Гауссов шум, таким образом, что отношение сигнал-шум составляет 20 дБ. Сбросьте генератор случайных чисел для восстанавливаемых результатов. Используйте periodogram функционируйте, чтобы оценить степень спектральную плотность (PSD) сигнала.

rng default

SNR = 20;
noise = randn(size(x))*std(x)/db2mag(SNR);
x = x + noise;

periodogram(x)

Амплитуда модулирует сигнал с помощью косинуса несущей частоты ωc=π/2. Умножьтесь 2 так, чтобы степень модулируемого сигнала равнялась степени исходного сигнала. Оцените PSD.

wc = pi/2;

x1 = x.*cos(wc*n)*sqrt(2);

periodogram(x1)
legend('Modulated')

Амплитудная модуляция SSB уменьшает пропускную способность сигнала наполовину. Чтобы выполнить амплитудную модуляцию SSB, необходимо сначала вычислить преобразование Гильберта сигнала. Затем амплитуда модулируют сигнал с помощью синуса с той же несущей частотой, ωc, как прежде, и добавляют его в предыдущий сигнал.

Спроектируйте Гильбертов трансформатор с помощью designfilt функция. Задайте порядка фильтра 64 и ширину перехода 0,1. Отфильтруйте сигнал.

Hhilbert = designfilt('hilbertfir','FilterOrder',64, ...
    'TransitionWidth',0.1);

xh = filter(Hhilbert,x);

Используйте grpdelay функция, чтобы определить задержку, gd, введенный фильтром. Компенсируйте задержку путем отбрасывания первого gd точки отфильтрованного сигнала и дополняющий нулями в конце. Амплитуда модулирует результат и добавляет его в оригинал. Сравните PSDs.

gd = mean(grpdelay(Hhilbert));
xh = xh(gd+1:end);
eh = zeros(size(x));
eh(1:length(xh)) = xh;

x2 = eh.*sin(wc*n)*sqrt(2);

y = x1+x2;

periodogram([x1;y]')
legend('Modulated','SSB')

Downconvert сигнал и оценка PSD.

ym = y.*cos(wc*n)*sqrt(2);

periodogram(ym)
legend('Downconverted')

Фильтр lowpass модулируемый сигнал восстановить оригинал. Задайте КИХ 64-го порядка фильтр lowpass с частотой среза π/2. Компенсируйте задержку, введенную фильтром.

d = designfilt('lowpassfir','FilterOrder',64, ...
    'CutoffFrequency',0.5);
dem = filter(d,ym);

gd = mean(grpdelay(d));
dem = dem(gd+1:end);

dm = zeros(size(x));
dm(1:length(dem)) = dem;

Оцените PSD отфильтрованного сигнала и сравните его с тем из оригинала.

periodogram([x;dm]')
legend('Original','Recovered')

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

snrOrig = snr(x,noise)
snrOrig = 20.0259
snrRecv = snr(dm,noise)
snrRecv = 20.1373
plot(n,[x;dm]')
legend('Original','Recovered')
axis tight

Ссылки

Маркируйте, Джон Р., Майкл М. Дэниел и Эндрю К. Зингер. Компьютерные исследования в сигналах и системах Используя MATLAB. 2-й выпуск. Верхний Сэддл-Ривер, NJ: Prentice Hall, 2002.

Смотрите также

| |