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] при наличии ширины перехода, не больше, чем Fst fp , различие между полосой задерживания и частотами ребра полосы пропускания. Можно задать '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\PiF) где F нормированная частота.

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

Если этот КИХ-фильтр используется с каскадным интегрально-гребенчатым (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 функция дают {rC(sin(f/2r)sin(Cf/2)}pгде 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