rcosdesign

Повышенный КИХ-проект импульсного формирующий фильтра косинуса

Синтаксис

b = rcosdesign(beta,span,sps)
b = rcosdesign(beta,span,sps,shape)

Описание

пример

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