firceqrip

Ограниченный equiripple КИХ-фильтр

Синтаксис

B = firceqrip(n,Fo,DEV)
B = firceqrip(...,'slope',r)
B = firceqrip('minorder',[Fp Fst],DEV)
B = firceqrip(...,'passedge')
B = firceqrip(...,'stopedge')
B = firceqrip(...,'high')
B = firceqrip(...,'min')
B = firceqrip(...,'invsinc',C)
B = firceqrip(...,'invdiric',C)

Описание

B = firceqrip(n,Fo,DEV) разрабатывает порядок фильтр n (длина фильтра равняются n + 1), lowpass КИХ-фильтр с линейной фазой.

firceqrip производит тот же equiripple lowpass, фильтрует тот firpm, производит использование алгоритма Парков-McClellan. Различие - то, как вы задаете характеристики фильтра для функции.

Входной параметр Fo задает частоту в верхнем ребре полосы пропускания в нормированной частоте (0 <Fo <1). Двухэлементный векторный dev задает пиковую или максимальную погрешность, позволенную в полосе пропускания и полосах задерживания. Введите [d1 d2] для dev, где d1 устанавливает ошибку полосы пропускания, и d2 устанавливает ошибку полосы задерживания.

B = firceqrip(...,'slope',r) использует входное ключевое слово 'slope' и входной параметр r, чтобы разработать фильтр с nonequiripple полосой задерживания. r задан как положительная константа и определяет наклон затухания полосы задерживания в частоте дБ/нормировать. Большие значения r приводят к увеличенному затуханию полосы задерживания в частоте дБ/нормировать.

B = firceqrip('minorder',[Fp Fst],DEV) проекты фильтруют с минимальным количеством коэффициентов, требуемых соответствовать отклонениям в DEV = [d1 d2] при наличии ширины перехода, не больше, чем FstFp, различие между полосой задерживания и частотами ребра полосы пропускания. Можно указать, что 'mineven' или 'minodd' вместо 'minorder', чтобы разработать минимум даже заказывают (нечетная длина) или минимальный нечетный порядок (даже длина) фильтры, соответственно. Опция 'minorder' не применяется, когда вы задаете 'min' (минимальная фаза), 'invsinc' или опции 'invdiric'.

B = firceqrip(...,'passedge') разрабатывает фильтр, где Fo задает частоту, на которой полоса пропускания запускается к спаду.

B = firceqrip(...,'stopedge') разрабатывает фильтр, где Fo задает частоту, на которой начинается полоса задерживания.

B = firceqrip(...,'high') разрабатывает высокий КИХ-фильтр передачи вместо фильтра lowpass.

B = firceqrip(...,'min') разрабатывает фильтр минимальной фазы.

B = firceqrip(...,'invsinc',C) разрабатывает фильтр lowpass, ответ значения которого имеет форму инверсии sinc функция. Это может использоваться, чтобы компенсировать подобные sinc ответы в частотном диапазоне, такие как эффект нулевого порядка, содержат в цифро-аналоговом преобразователе. Размером компенсации в полосе пропускания управляет C, который задан как скалярный или двухэлементный вектор. Элементы C указаны можно следующим образом:

  • Если C предоставляется как скаляр с действительным знаком или первый элемент двухэлементного вектора, firceqrip создает фильтр с ответом значения 1/sinc (C *pi*F), где F является нормированной частотой.

  • Если C предоставляется как двухэлементный вектор, ответ значения обратной-sinc формы повышен до положительной степени C(2). Если мы устанавливаем P=C(2), firceqrip создает фильтр с ответом значения 1/sinc (C *pi*F) P.

Если этот КИХ-фильтр используется с каскадным интегрально-гребенчатым (CIC) фильтром, установка C(2), равная количеству этапов, компенсирует мультипликативный эффект последовательных подобных sinc ответов CIC-фильтров.

Примечание

Поскольку значение инверсии sinc функция становится неограниченным в C=1/F, значение C должно быть больше обратная величина частоты ребра полосы пропускания. Это может быть выражено как Fo<1/C. Для пользователей, знакомых с CIC decimators, C равен 1/2 продукт дифференциальной задержки и фактора десятикратного уменьшения.

B = firceqrip(...,'invdiric',C) разрабатывает фильтр lowpass с полосой пропускания, которая имеет форму инверсии Дирихле sinc функция. Частотной характеристикой инверсии Дирихле sinc функция дают

где C, r и p являются скалярами. Вход C может быть скаляром или вектором, содержащим 2 или 3 элемента. Если C является скаляром, p и r равняются 1. Если C является двухэлементным вектором, первым элементом является C, и вторым элементом является p, [C p]. Если C является трехэлементным вектором, третьим элементом является r, [C p r].

Примеры

Чтобы ввести несколько изменений на КИХ-фильтрах, которые вы разрабатываете с firceqrip, эти пять примеров покрывают и синтаксис по умолчанию b = firceqrip(n,wo,del) и некоторые дополнительные входные параметры. Для каждого примера входные параметры n, wo и del остаются то же самое.

Отфильтруйте проект с помощью firceqrip

Разработайте 30-й КИХ-фильтр порядка с помощью firceqrip.

b = firceqrip(30,0.4,[0.05 0.03]); fvtool(b)

Разработайте КИХ-фильтр минимального заказа с помощью firceqrip. Ребро полосы пропускания и частоты ребра полосы задерживания 0.35π и 0.45π рад/выборка. Позволенные отклонения 0.02 и 1e-4.

b = firceqrip('minorder',[0.35 0.45],[0.02 1e-4]); fvtool(b)

Разработайте 30-й КИХ-фильтр порядка с ключевым словом stopedge, чтобы задать ответ в ребре полосы задерживания фильтра.

b = firceqrip(30,0.4,[0.05 0.03],'stopedge'); fvtool(b)

Разработайте 30-й КИХ-фильтр порядка с ключевым словом slope и r = 20.

b = firceqrip(30,0.4,[0.05 0.03],'slope',20,'stopedge'); fvtool(b)

Разработайте 30-й КИХ-фильтр порядка, задающий полосу задерживания и указав, что получившийся фильтр является минимальной фазой с ключевым словом min.

b = firceqrip(30,0.4,[0.05 0.03],'stopedge','min'); fvtool(b)

Сравнение этого фильтра к фильтру в рисунке 1. wo = 0.4 частоты среза теперь применяется к ребру полосы задерживания, а не точки, в которой значение частотной характеристики 0.5.

Просмотр нулевого полюсного графика, показанного здесь, показывает, что это - минимальный фильтр фазы FIR - нули лежат на или в модульном кругу, z = 1

fvtool(b,'polezero')

Разработайте 30-й КИХ-фильтр порядка с ключевым словом invsinc, чтобы сформировать полосу пропускания фильтра с инверсией sinc функция.

b = firceqrip(30,0.4,[0.05 0.03],'invsinc',[2 1.5]); fvtool(b)

Инверсия sinc применяемая функция задана как 1/sinc (2*w) ^1.5.

Обратная полоса пропускания, имеющая форму Дирихле Сенка

Разработайте ограниченные equiripple КИХ-фильтры двух порядков 30 с инверсией Дирихле sinc сформированные полосы пропускания. Частота среза в обоих проектах является радианами/выборкой пи/4. Установите C=1 в одном проекте C=2 во втором проекте. Максимальная пульсация полосы пропускания и полосы задерживания 0.05. Установите p=1 в одном проекте и p=2 во втором проекте.

Разработайте фильтры.

b1 = firceqrip(30,0.25,[0.05 0.05],'invdiric',[1 1]);
b2 = firceqrip(30,0.25,[0.05 0.05],'invdiric',[2 2]);

Получите частотные характеристики фильтра с помощью freqz. Постройте ответы значения.

 [h1,~] = freqz(b1,1);
 [h2,w] = freqz(b2,1);
 plot(w,abs(h1)); hold on;
 plot(w,abs(h2),'r');
 axis([0 pi 0 1.5]);
 xlabel('Radians/sample');
 ylabel('Magnitude');
 legend('C=1 p=1','C=2 p=2');

Осмотрите пульсацию полосы задерживания в проекте с C=1 и p=1. Ограниченный проект устанавливает максимальную пульсацию быть 0.05. Увеличьте масштаб полосы задерживания от частоты среза радианов/выборки пи/4 к 3pi/4 радианам/выборке.

 figure;
 plot(w,abs(h1));
 set(gca,'xlim',[pi/4 3*pi/4]);
 grid on;

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

Введенный в R2011a