Ограниченный 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
*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;
diric
| fdesign.decimator
| fircls
| firgr
| firhalfband
| firls
| firnyquist
| firpm
| ifir
| iirgrpdelay
| iirlpnorm
| iirlpnormc
| sinc