rcosdesign

Создание формирующего импульс КИХ-фильтра приподнятого косинуса

Описание

пример

b = rcosdesign(beta,span,sps) возвращает коэффициенты, b, это соответствует повышенному КИХ-фильтру косинуса квадратного корня с фактором спада, заданным beta. Фильтр является усеченным к span символы и каждый период символа содержат sps выборки. Порядок фильтра, sps*span, должно быть ровным. Энергия фильтра равняется 1.

пример

b = rcosdesign(beta,span,sps,shape) возвращается квадратный корень повысил фильтр косинуса, когда вы устанавливаете shape к 'sqrt' и нормальный повышенный КИХ косинуса фильтрует, когда вы устанавливаете shape к 'normal'.

Примеры

свернуть все

Задайте фактор спада 0,25. Обрежьте фильтр до 6 символов и представляйте каждый символ с 4 выборками. Проверьте тот 'sqrt' значение по умолчанию shape параметр.

h = rcosdesign(0.25,6,4);
mx = max(abs(h-rcosdesign(0.25,6,4,'sqrt')))
mx = 0
fvtool(h,'Analysis','impulse')

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

Создайте нормальный повышенный фильтр косинуса со спадом 0.25. Укажите, что этот фильтр охватывает 4 символа с 3 выборками на символ.

rf = 0.25;
span = 4;
sps = 3;

h1 = rcosdesign(rf,span,sps,'normal');
fvtool(h1,'impulse')

Нормальный фильтр имеет нулевые пересечения в целочисленных множителях sps. Это таким образом удовлетворяет критерию Найквиста нулевой интерференции межсимвола. Фильтр квадратного корня, однако, не делает:

h2 = rcosdesign(rf,span,sps,'sqrt');
fvtool(h2,'impulse')

Примените операцию свертки к фильтру квадратного корня с собой. Обрежьте импульсную характеристику, исходящую от максимума, таким образом, это имеет ту же длину как h1. Нормируйте ответ с помощью максимума. Затем сравните фильтр квадратного корня, к которому применяют операцию свертки, с нормальным фильтром.

h3 = conv(h2,h2);
p2 = ceil(length(h3)/2);
m2 = ceil(p2-length(h1)/2);
M2 = floor(p2+length(h1)/2);
ct = h3(m2:M2);

stem([h1/max(abs(h1));ct/max(abs(ct))]','filled')
xlabel('Samples')
ylabel('Normalized amplitude')
legend('h1','h2 * h2')

Ответ, к которому применяют операцию свертки, не совпадает с нормальным фильтром из-за своей конечной длины. Увеличьте span получить более близкое соглашение между ответами и лучшую податливость с критерием Найквиста.

В этом примере показано, как передать сигнал через квадратный корень, повышенный фильтр косинуса.

Задайте параметры фильтра.

rolloff = 0.25;     % Rolloff factor
span = 6;           % Filter span in symbols
sps = 4;            % Samples per symbol

Сгенерируйте квадратный корень, повышенные коэффициенты фильтра косинуса.

b = rcosdesign(rolloff, span, sps);

Создайте вектор данных, содержащих положительные и отрицательные значения.

d = 2*randi([0 1], 100, 1) - 1;

Сверхдискретизируйте и отфильтруйте данные для импульсного формирования.

x = upfirdn(d, b, sps);

Добавьте шум.

r = x + randn(size(x))*0.01;

Отфильтруйте и проредите полученный сигнал для согласованной фильтрации.

y = upfirdn(r, b, 1, sps);

В этом примере показано, как интерполировать и десятикратно уменьшить сигналы с помощью квадратного корня, повышенные фильтры косинуса, спроектированные с rcosdesign функция. Этот пример требует программного обеспечения Communications Toolbox™.

Задайте повышенные параметры фильтра косинуса квадратного корня. Задайте параметры сигнального созвездия.

rolloff = 0.25; % Filter rolloff
span = 6;       % Filter span
sps = 4;        % Samples per symbol
M = 4;          % Size of the signal constellation
k = log2(M);    % Number of bits per symbol

Сгенерируйте коэффициенты повышенного фильтра косинуса квадратного корня с помощью rcosdesign функция.

rrcFilter = rcosdesign(rolloff, span, sps);

Сгенерируйте 10 000 символов данных с помощью randi функция.

data = randi([0 M-1], 10000, 1);

Примените модуляцию PSK к символам данных. Поскольку размер созвездия равняется 4, тип модуляции является QPSK.

modData = pskmod(data, M, pi/4);

Используя upfirdn функционируйте, сверхдискретизируйте и отфильтруйте входные данные.

txSig = upfirdn(modData, rrcFilter, sps);

Преобразуйте Eb/N0 в ОСШ и затем передайте сигнал через канал AWGN.

EbNo = 7;
snr = EbNo + 10*log10(k) - 10*log10(sps);
rxSig = awgn(txSig, snr, 'measured');

Отфильтруйте и проредите полученный сигнал. Удалите фрагмент сигнала составлять задержку фильтра.

rxFilt = upfirdn(rxSig, rrcFilter, 1, sps);
rxFilt = rxFilt(span+1:end-span);

Создайте scatterplot модулируемых данных с помощью первых 5 000 символов.

hScatter = scatterplot(sqrt(sps)* ...
    rxSig(1:sps*5000),...
    sps,0,'g.');
hold on
scatterplot(rxFilt(1:5000),1,0,'kx',hScatter)
title('Received Signal, Before and After Filtering')
legend('Before Filtering','After Filtering')
axis([-3 3 -3 3]) % Set axis ranges
hold off

Входные параметры

свернуть все

Фактор спада, заданный как действительный неотрицательный скаляр, не больше, чем 1. Фактор спада определяет избыточную пропускную способность фильтра. Нулевой спад соответствует фильтру кирпичной стены и модульному спаду к чистому повышенному косинусу.

Типы данных: double | single

Количество символов, заданных как положительный целочисленный скаляр.

Типы данных: double | single

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

Типы данных: double | single

Форма повышенного окна косинуса, заданного как любой 'normal' или 'sqrt'.

Выходные аргументы

свернуть все

Повышенные коэффициенты фильтра косинуса, возвращенные как вектор-строка.

Типы данных: double | single

Советы

  • Если у вас есть лицензия на программное обеспечение Communications Toolbox™, можно выполнить многоскоростную повышенную фильтрацию косинуса с потоковой передачей поведения. Для этого используйте Систему object™ фильтры, comm.RaisedCosineTransmitFilter и comm.RaisedCosineReceiveFilter.

Ссылки

[1] Tranter, Уильям Х., К. Сэм Шэнмугэн, Теодор С. Рэппэпорт и Курт Л. Косбар. Принципы симуляции систем связи с приложениями беспроводной связи. Верхний Сэддл-Ривер, NJ: Prentice Hall, 2004.

Расширенные возможности

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

Введенный в R2013b