intfilt

КИХ интерполяции фильтрует проект

Синтаксис

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

Описание

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

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

b = intfilt(l,n,'Lagrange') разрабатывает КИХ-фильтр, который выполняет th-порядок n полиномиальной интерполяция Лагранжа на последовательности, чередованной с 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