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

Этот пример показывает, как использовать преобразование Гильберта для выполнения амплитудной модуляции (AM) с одной боковой полосой (SSB) сигнала. Однополосные 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)

Figure contains an axes. The axes with title Periodogram Power Spectral Density Estimate contains an object of type line.

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

wc = pi/2;

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

periodogram(x1)
legend('Modulated')

Figure contains an axes. The axes with title Periodogram Power Spectral Density Estimate contains an object of type line. This object represents Modulated.

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

Разработайте трансформатор Гильберта, используя designfilt функция. Задайте порядок фильтра 64 и ширину перехода 0,1. Фильтрация сигнала.

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

xh = filter(Hhilbert,x);

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

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')

Figure contains an axes. The axes with title Periodogram Power Spectral Density Estimate contains 2 objects of type line. These objects represent Modulated, SSB.

Преобразуйте сигнал вниз и оцените PSD.

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

periodogram(ym)
legend('Downconverted')

Figure contains an axes. The axes with title Periodogram Power Spectral Density Estimate contains an object of type line. This object represents Downconverted.

Lowpass фильтрует модулированный сигнал, чтобы восстановить исходный. Задайте фильтр конечной импульсной характеристики lowpass 64-го порядка с частотой среза π/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')

Figure contains an axes. The axes with title Periodogram Power Spectral Density Estimate contains 2 objects of type line. These objects represent 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

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Original, Recovered.

Ссылки

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

См. также

| |