КИХ Найквист (полоса L-th) Создание фильтра

В этом примере показано, как спроектировать КИХ lowpass фильтры Найквиста. Это также сравнивает эти фильтры с повышенным косинусом и фильтрами приподнятого косинуса квадратного корня. Эти фильтры широко используются в формировании импульса для систем цифровой передачи. Они также находят применение в интерполяции/децимации и наборах фильтров.

Сравнение ответа величины

График показывает ответ величины equiripple фильтра Найквиста и фильтра приподнятого косинуса. Оба фильтра имеют порядок 60 и фактор спада 0,5. Поскольку фильтр equiripple имеет оптимальную equiripple полосу задерживания, он имеет большее затухание в полосе задерживания для того же порядка фильтра и ширины перехода. Фильтр приподнятого косинуса получен путем усечения аналитической импульсной характеристики, и это не оптимально ни в каком смысле.

NBand = 4;
N = 60;           % Filter order
R = 0.5;          % Rolloff factor
TW = R/(NBand/2); % Transition Bandwidth
f1 = fdesign.nyquist(NBand,'N,TW',N,TW);
eq = design(f1,'equiripple','Zerophase',true,'SystemObject',true);
coeffs = rcosdesign(R,N/NBand,NBand,'normal');
coeffs = coeffs/max(abs(coeffs))/NBand;
rc     = dsp.FIRFilter('Numerator',coeffs);
fvt = fvtool(eq,rc,'Color','white');
legend(fvt,'Equiripple NYQUIST design','Raised Cosine design');

На самом деле в этом примере необходимо увеличить порядок проекта повышенного косинуса к приблизительно 1 400 для того, чтобы достигнуть подобного затухания.

Сравнение импульсной характеристики

Здесь мы сравниваем импульсные характеристики. Заметьте, что импульсная характеристика в обоих случаях является нулем каждая 4-я выборка (за исключением средней выборки). Фильтры Найквиста также известны как ленточные фильтры L-th, потому что частота среза является Pi/L, и импульсная характеристика является нулем каждая выборка L-th. В этом случае у нас есть 4-е ленточные фильтры.

f1.FilterOrder = 38;
eq1 = design(f1,'equiripple','Zerophase',true,'SystemObject',true);
coeffs = rcosdesign(R,f1.FilterOrder/NBand,NBand,'normal');
coeffs = coeffs/max(abs(coeffs))/NBand;
rc1 = dsp.FIRFilter('Numerator',coeffs);
fvt = fvtool(eq1,rc1,'Color','white','Analysis','Impulse');
legend(fvt,'Equiripple NYQUIST','Raised Cosine');
title('Impulse response, Order=38, Rolloff = 0.5');

Фильтры Найквиста с наклонной полосой задерживания

Проекты Экюриппла допускают управление наклона полосы задерживания фильтра. Например, следующие проекты имеют наклоны 0, 20, и 40 дБ / (рад/отсчет) затухания:

f1.FilterOrder = 52;
f1.Band = 8;
f1.TransitionWidth = .05;
eq1 = design(f1,'equiripple','SystemObject',true);
eq2 = design(f1,'equiripple','StopbandShape','linear',...
    'StopbandDecay',20,'SystemObject',true);
eq3 = design(f1,'equiripple','StopbandShape','linear',...
    'StopbandDecay',40,'SystemObject',true);
fvt = fvtool(eq1,eq2,eq3,'Color','white');
legend(fvt,'Slope=0','Slope=20','Slope=40')

Проект минимальной фазы

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

f1.FilterOrder = 30;
f1.Band = NBand;
f1.TransitionWidth = TW;
eq1 = design(f1,'equiripple','Minphase',true,'SystemObject',true);
coeffs = rcosdesign(R,N/NBand,NBand);
coeffs = coeffs / max(coeffs) * (-1/(pi*NBand) * (pi*(R-1) - 4*R));
srrc   = dsp.FIRFilter('Numerator',coeffs);
fvt = fvtool(eq1,srrc,'Color','white');
legend(fvt,'Minimum-phase equiripple design',...
    'Square-root raised-cosine design');

Уменьшение фактора спада

Ответ фильтра приподнятого косинуса улучшается, когда фактор спада уменьшается (показанный здесь для спада = 0.2). Это вызвано тем, что узкого основного лепестка частотной характеристики прямоугольного окна, которое используется в усечении импульсной характеристики.

f1.FilterOrder = N;
f1.TransitionWidth = .1;
eq1 = design(f1,'equiripple','Zerophase',true,'SystemObject',true);
R = 0.2;
coeffs = rcosdesign(R,N/NBand,NBand,'normal');
coeffs = coeffs/max(abs(coeffs))/NBand;
rc1   = dsp.FIRFilter('Numerator',coeffs);
fvt = fvtool(eq1,rc1,'Color','white');
legend(fvt,'NYQUIST equiripple design','Raised Cosine design');

Проект оконной импульсной характеристики Найквиста

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

f1.TransitionWidth = TW;
kaiserFilt = design(f1,'kaiserwin','SystemObject',true);

Проект окна Кайзера требует, чтобы тот же порядок (60) как проект equiripple соответствовал спецификациям. (Помните, что по контрасту мы потребовали, чтобы экстраординарный фильтр приподнятого косинуса 1400-го порядка соответствовал спецификации полосы задерживания.)

fvt = fvtool(eq,rc,kaiserFilt,'Color','white');
legend(fvt,'Equiripple design',...
    'Raised Cosine design','Kaiser window design');

Фильтры Найквиста для интерполяции

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

fm = fdesign.interpolator(4,'nyquist');
kaiserFilt = design(fm,'kaiserwin','SystemObject',true);
fvt = fvtool(kaiserFilt,'Color','white');
fvt.PolyphaseView = 'on';

Многофазный подфильтр № 4 является фильтром allpass, на самом деле это - чистая задержка (избранная импульсная характеристика в FVTool, или посмотрите на коэффициенты фильтра в FVTool), так, чтобы: 1. Все его множители являются нулем за исключением одного, ведя к эффективному внедрению той многофазной ветви. 2. Входные выборки передаются через фильтр интерполяции без модификации, даже при том, что фильтр не идеален.

Похожие темы