upfirdn

Повышение частоты, применение КИХ-фильтра и понижение частоты

Описание

yout = upfirdn(xin,h) фильтрует входной сигнал xin с КИХ фильтруют с импульсной характеристикой h. Никакая повышающая дискретизация или субдискретизация не реализованы с этим синтаксисом.

yout = upfirdn(xin,h,p) задает целое число, сверхдискретизировавшее факторный p.

пример

yout = upfirdn(xin,h,p,q) задает целое число, прореживающее факторный q.

Примеры

свернуть все

Измените частоту дискретизации сигнала рациональным коэффициентом преобразования от уровня DAT 48 кГц к частоте дискретизации CD 44,1 кГц. Используйте rat функционируйте, чтобы найти числитель L и знаменатель M из рационального фактора.

Fdat = 48e3;
Fcd = 44.1e3;
[L,M] = rat(Fcd/Fdat)
L = 147
M = 160

Сгенерируйте синусоиду на 1,5 кГц, произведенную в fDAT в течение 0,25 секунд. Постройте первую миллисекунду сигнала.

t = 0:1/Fdat:0.25-1/Fdat;
x = sin(2*pi*1.5e3*t);
stem(t,x)
xlim([0 0.001])
hold on

Спроектируйте сглаживающийся фильтр lowpass с помощью окна Кайзера. Установите ребра полосы фильтра как 90% и 110% частоты среза, (fDAT/2)×min(1/L,1/M). Задайте неравномерность в полосе пропускания 5 дБ и затухание в полосе задерживания 40 дБ. Установите усиление полосы пропускания на L.

f = (Fdat/2)*min(1/L,1/M);
d = designfilt('lowpassfir', ...
    'PassbandFrequency',0.9*f,'StopbandFrequency',1.1*f, ...
    'PassbandRipple',5,'StopbandAttenuation',40, ...
    'DesignMethod','kaiserwin','SampleRate',48e3);
h = L*tf(d);

Используйте upfirdn с фильтром h передискретизировать синусоиду. Вычислите и компенсируйте задержку, введенную фильтром. Сгенерируйте соответствующий передискретизируемый временной вектор.

y = upfirdn(x,h,L,M);

delay = floor(((filtord(d)-1)/2-(L-1))/L);
y = y(delay+1:end);
t_res = (0:(length(y)-1))/Fcd;

Наложите передискретизируемый сигнал на графике.

stem(t_res,y,'*')
legend('Original','Resampled','Location','southeast')
hold off

Входные параметры

свернуть все

Входной сигнал, заданный вектором или матрицей. Если xin вектор, затем он представляет один сигнал. Если xin матрица, затем каждый столбец отфильтрован независимо.

Отфильтруйте импульсную характеристику, заданную как вектор или матрица. Если hвектор, затем он представляет один КИХ-фильтр. Если h матрица, затем каждый столбец является отдельной КИХ-последовательностью импульсной характеристики.

Повышающая дискретизация фактора, заданного положительным целым числом.

Субдискретизация фактора, заданного положительным целым числом.

Выходные аргументы

свернуть все

Выходной сигнал, заданный как вектор или матрица. Если yout вектор, затем он представляет один сигнал. Если yout матрица, затем каждым столбцом является отдельный выход. Продолжительность выхода, yout ceil(((length(xin)-1)*p+length(h))/q).

Примечание

Начиная с upfirdn выполняет свертку и изменение уровня, yout сигналы имеют различную длину, чем xin. Количество строк yout приблизительно p/q времена количество строк xin.

Советы

Допустимые комбинации размеров xin и h :

  1. xin вектор и h вектор.

    Входные параметры являются одним фильтром и одним сигналом, таким образом, функция применяет операцию свертки к xin с h. Выходной сигнал yout вектор-строка если xin вектор-строка; в противном случае, yout вектор-столбец.

  2. xin матрица и h вектор.

    Входные параметры являются одним фильтром и многими сигналами, таким образом, функция применяет операцию свертки к h с каждым столбцом xin. Получившийся yout матрица с одинаковым числом столбцов как xin.

  3. xin вектор и h матрица.

    Входные параметры являются несколькими фильтрами и одним сигналом, таким образом, функция применяет операцию свертки к каждому столбцу h с xin. Получившийся yout матрица с одинаковым числом столбцов как h.

  4. xin матрица и h матрица, оба с одинаковым числом столбцов.

    Входные параметры являются несколькими фильтрами и несколькими сигналами, таким образом, функция применяет операцию свертки к соответствующим столбцам xin и h. Получившийся yout матрица с одинаковым числом столбцов как xin и h.

Алгоритмы

upfirdn использует многофазную структуру интерполяции. Количество умножается - добавляют, что операции в многофазной структуре приблизительно (Lh Lx – pLx)/q, где Lh и Lx являются длинами h (n) и x (n), соответственно.

Более точное количество флопс вычисляется в программе, но точное количество является все еще аппроксимированным. Для длинных сигналов x (n) формула часто точна.

upfirdn выполняет каскад трех операций:

  1. Сверхдискретизируйте входные данные в матричном xin фактором целочисленного p (вставка нулей)

  2. КИХ-фильтр сверхдискретизированные данные сигнала с последовательностью импульсной характеристики, данной в векторном или матричном h

  3. Downsample результат фактором целочисленного q (выбрасывание выборок)

КИХ-фильтр обычно является фильтром lowpass, который необходимо спроектировать использование другой функции, такой как firpm или fir1.

Примечание

Функциональный resample выполняет КИХ-проект с помощью firls, сопровождаемый изменением уровня реализован с upfirdn.

Ссылки

[1] Crochiere, R. E. и Лоуренс Р. Рэбинер. Многоскоростная Цифровая обработка сигналов. Englewood Cliffs, NJ: Prentice Hall, 1983, стр 88–91.

[2] Crochiere, R. E. “Общая Программа, чтобы Выполнить Преобразование Уровня Выборки Данных Рациональными Отношениями”. Программы для Цифровой обработки сигналов (Комитет по цифровой обработке сигналов Акустики IEEE, Речи, и Общества Обработки сигналов, редакторов). Нью-Йорк: Нажатие IEEE, 1979, Программы 8.2-1-8.2-7.

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

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

| | | | | | |

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