ifir

Интерполированный КИХ-проект фильтра

Синтаксис

[h,g] = ifir(l,type,f,dev)
[h,g,d] = ifir(l,type,f,dev)
[...] = ifir(...,str)

Описание

[h,g] = ifir(l,type,f,dev) разрабатывает периодический фильтр h(zl), где l является коэффициентом интерполяции. Это также находит, что подавитель изображений фильтрует g(z), такой, что каскад двух фильтров представляет оптимальное минимаксное КИХ-приближение желаемого ответа. Этот ответ задан type с частотами ребра полосы, содержавшимися в векторном f. Это сделано, не превышая максимальные отклонения или пульсации (линейные) заданный в векторном dev.

Когда type установлен в 'low', проект фильтра является проектом lowpass. Когда type установлен в 'high', проект фильтра является проектом highpass. f является двухэлементным вектором с полосой пропускания и значениями частоты ребра полосы задерживания. Для узкополосной связи lowpass фильтры и широкополосные фильтры highpass, l×f(2) является меньше, чем 1. Для широкополосных фильтров lowpass и узкополосной связи highpass фильтры, задайте f так, чтобы l×(1–f(1)) был меньше, чем 1.

dev является двухэлементным вектором, который содержит пиковую пульсацию или отклонение (в линейных модулях) допускавший и полоса пропускания и полоса задерживания.

Алгоритм проекта ifir достигает эффективного проекта в том смысле, что он сокращает общее количество требуемых множителей. Для этого проблема проектирования повреждается в два этапа. В первой стадии фильтр сверхдискретизирован, чтобы достигнуть строгих спецификаций, не используя много множителей. На втором этапе фильтр удаляет изображения, созданные при повышающей дискретизации предыдущего фильтра.

[h,g,d] = ifir(l,type,f,dev) возвращает задержку d, который соединяется параллельно с каскадом h(zl) и g(z) и для широкополосного lowpass и для фильтров highpass. Это необходимо, чтобы получить желаемый ответ.

[...] = ifir(...,str) использование str, чтобы выбрать уровень алгоритма используемой оптимизации. Возможными значениями для str является 'simple', 'intermediate' (значение по умолчанию) или 'advanced'. str предусматривает компромисс между расчетной скоростью и оптимизацией порядка фильтра. Опция 'advanced' может привести к существенному сокращению порядка фильтра, специально для g(z).

Примеры

свернуть все

Этот пример показывает, как использовать функциональный ifir, чтобы разработать узкополосную связь lowpass фильтр.

[h,g]=ifir(6,'low',[.12 .14],[.01 .001]);
H = dsp.FIRFilter('Numerator',h);
G = dsp.FIRFilter('Numerator',g);
hfv = fvtool(H,G);
legend(hfv,'Periodic Filter','Image Suppressor Filter');

Hcas = cascade(H,G);
hfv2 = fvtool(Hcas);
legend(hfv2,'Overall Filter');

Этот пример показывает, как использовать ifir, чтобы разработать широкополосный фильтр highpass.

[h,g,d]=ifir(6,'high',[.12 .14],[.001 .01]);
H = dsp.FIRFilter('Numerator',h); G = dsp.FIRFilter('Numerator',g);
b1 = cascade(H,G);                 % Branch 1
b2 = dsp.FIRFilter('Numerator',d); % Branch 2
Hoverall = freqz(b1) + freqz(b2); % Overall wideband highpass
plot(linspace(0,1,length(Hoverall)),20*log10(abs(Hoverall)))
xlabel('Normalized frequency (\times \pi) rad/s')
ylabel('Magnitude (dB)')
title('Overall Filter');
grid on

Этот пример показывает, как использовать fdesign.lowpass, чтобы разработать каскад фильтров lowpass. После разработки фильтра используйте fvtool, чтобы построить кривую отклика.

fpass = 0.2;
fstop = 0.24;
d1 = fdesign.lowpass(fpass, fstop);
lowpassCascade = design(d1,'ifir','Systemobject',true);
fvtool(lowpassCascade)

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

Смотрите также

Функции

Введенный в R2011a