Этот пример показывает, как разработать 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');
Фильтры Найквиста могут также быть разработаны с помощью усеченного-и-оконного импульсного метода ответа. Это может быть другой альтернативой проекту повышенного косинуса. Например, мы можем использовать метод окна Kaiser, чтобы разработать фильтр, который соответствует начальным спецификациям:
f1.TransitionWidth = TW; kaiserFilt = design(f1,'kaiserwin','SystemObject',true);
Проект окна Kaiser требует, чтобы тот же порядок (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. Входные выборки передаются через фильтр интерполяции без модификации, даже при том, что фильтр не идеален.