В этом примере показано, как проектировать фильтры Nyquist для нижних частот. Он также сравнивает эти фильтры с приподнятыми косинусными и квадратными корнями, приподнятыми косинусными фильтрами. Эти фильтры широко используются при формировании импульсов для цифровых систем передачи. Они также находят применение в банках интерполяции/прореживания и фильтрации.
График показывает амплитудную характеристику равнозначного фильтра Найквиста и приподнятого косинусного фильтра. Оба фильтра имеют порядок 60 и коэффициент отката 0,5. Поскольку эквиропльный фильтр имеет оптимальный эквиропльный стоп-диапазон, он имеет большее затухание стоп-диапазона для того же порядка фильтра и ширины перехода. Фильтр с увеличенным косинусом получается путем усечения аналитической импульсной характеристики и он не является оптимальным в каком-либо смысле.
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');

Фактически, в этом примере необходимо увеличить порядок конструкции с приподнятым косинусом примерно до 1400, чтобы достичь аналогичного ослабления.
Здесь мы сравниваем импульсные реакции. Обратите внимание, что импульсная характеристика в обоих случаях равна нулю каждый четвертый образец (за исключением среднего образца). Фильтры Найквиста также известны как фильтры L-й полосы, поскольку частота отсечки равна Pi/L, а импульсная характеристика равна нулю для каждой L-й выборки. В этом случае у нас есть фильтры 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);
Конструкция окна 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. Входные выборки проходят через интерполяционный фильтр без модификации, даже если фильтр не является идеальным.