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

Figure contains an axes object. The axes object contains an object of type stem.

Спроектируйте сглаживающийся фильтр 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

Figure contains an axes object. The axes object contains 2 objects of type stem. These objects represent Original, Resampled.

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

свернуть все

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

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

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

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

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

свернуть все

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

Примечание

С тех пор upfirdn выполняет свертку и изменение уровня, yout сигналы имеют различную длину, чем xin. Количество строк yout приблизительно pQ времена количество строк 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 LxpLx)/q, где Lh и Lx являются длинами h (n) и x (n), соответственно. Для длинных сигналов эта формула часто точна.

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

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

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

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

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

Примечание

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

Ссылки

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

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

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

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

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

| | | | | | |

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