intfilt

Создание КИХ-фильтра интерполяции

Синтаксис

b = intfilt(l,p,alpha)
b = intfilt(l,n,'Lagrange')

Описание

b = intfilt(l,p,alpha) проектирует КИХ-фильтр линейной фазы, который выполняет идеал bandlimited интерполяция с помощью самого близкого 2P ненулевые выборки, когда используется на последовательности чередованы с l-1 последовательные нули каждый l выборки. Это принимает исходный bandlimitedness альфа-времен частота Найквиста. Возвращенный фильтр идентичен используемому interpB длина 2*l*p-1.

альфа обратно пропорциональна пропускной способности перехода фильтра, и это также влияет на пропускную способность областей-ухода в полосе задерживания. Определение альфы позволяет вам задавать, сколько из интервала Найквиста занимает ваш входной сигнал. Это выгодно, особенно для сигналов, которые будут интерполированы, потому что это позволяет вам увеличивать пропускную способность перехода, не влияя на интерполяцию и результаты в лучшем затухании в полосе задерживания для данного l и p. Если вы устанавливаете альфу на 1, ваш сигнал принят, чтобы занять целый интервал Найквиста. Установка альфы к меньше чем одному позволяет для областей-ухода в полосе задерживания. Например, если ваш вход занимает половину интервала Найквиста, вы могли бы установить альфу на 0,5.

b = intfilt(l,n,'Lagrange') проектирует КИХ-фильтр, который выполняет nth-порядок полиномиальной интерполяция Лагранжа на последовательности чередован с l-1 последовательные нули каждый l выборки. b имеет длину (n+1)L для n даже, и длина (n+1)*l-1 для n нечетный. Если оба n и l даже, спроектированный фильтр не является линейной фазой.

Оба типа фильтров являются в основном lowpass и имеют усиление l в полосе пропускания.

Примеры

свернуть все

Спроектируйте цифровой фильтр интерполяции, чтобы сверхдискретизировать сигнал семь, с помощью bandlimited метода. Задайте "bandlimitedness" фактор 0,5 и использование 2×2 выборки в интерполяции.

upfac = 7;
alpha = 0.5;
h1 = intfilt(upfac,2,alpha);

Фильтр работает лучше всего, когда исходный сигнал является bandlimited к alpha времена частота Найквиста. Создайте bandlimited шумовой сигнал путем генерации 200 Гауссовых случайных чисел и фильтрации последовательности с КИХ 40-го порядка фильтр lowpass. Сбросьте генератор случайных чисел для восстанавливаемых результатов.

lowp = fir1(40,alpha);

rng('default')
x = filter(lowp,1,randn(200,1));

Увеличьте частоту дискретизации сигнала путем вставки нулей между каждой парой выборок x.

xr = upsample(x,upfac);

Используйте filter функционируйте, чтобы произвести интерполированный сигнал.

y = filter(h1,1,xr);

Компенсируйте задержку, введенную фильтром. Постройте исходные и интерполированные сигналы.

delay = mean(grpdelay(h1));

y(1:delay) = [];

stem(1:upfac:upfac*length(x),x)
hold on
plot(y)

xlim([400 700])

intfilt также выполняет Лагранжевую полиномиальной интерполяцию.

  • Полиномиальной интерполяция первого порядка является только линейной интерполяцией, которая выполняется с треугольным фильтром.

  • Интерполяция нулевого порядка выполняется с фильтром скользящего среднего значения и напоминает выход отображения производить-и-содержать.

Интерполируйте исходный сигнал и наложите результат.

h2 = intfilt(upfac,1,'Lagrange');

y2 = filter(h2,1,xr);
y2(1:floor(mean(grpdelay(h2)))) = [];

plot(y2)
hold off

Алгоритмы

bandlimited метод использует firls спроектировать КИХ-фильтр интерполяции. Полиномиальный метод использует формулу полиномиальной интерполяции Лагранжа на равномерно распределенных выборках, чтобы создать соответствующий фильтр.

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

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

| | | |

Представлено до R2006a