decimate

Децимация — уменьшает частоту дискретизации целочисленным коэффициентом

Описание

пример

y = decimate(x,r) уменьшает частоту дискретизации x, входной сигнал, на коэффициент r. Подкошенный вектор, y, сокращен на коэффициент r так, чтобы length(y) = ceil(length(x)/r). По умолчанию, decimate использует фильтр бесконечной импульсной характеристики (IIR) Типа I Чебышева lowpass порядка 8.

пример

y = decimate(x,r,n) использует Чебышевский фильтр порядка n.

y = decimate(x,r,'fir') использует фильтр конечной импульсной характеристики (FIR), созданный с использованием метод окна с Окном Хэмминга. Фильтр имеет порядок 30.

пример

y = decimate(x,r,n,'fir') использует КИХ-фильтр порядка n.

Примеры

свернуть все

Создайте синусоидальный сигнал, произведенный на уровне 4 кГц. Десятикратно уменьшите его на коэффициент четыре.

t = 0:1/4e3:1;
x = sin(2*pi*30*t) + sin(2*pi*60*t);
y = decimate(x,4);

Постройте исходные и подкошенные сигналы.

subplot(2,1,1)
stem(0:120,x(1:121),'filled','MarkerSize',3)
grid on
xlabel('Sample Number')
ylabel('Original')

subplot(2,1,2)
stem(0:30,y(1:31),'filled','MarkerSize',3)
grid on
xlabel('Sample Number')
ylabel('Decimated')

Figure contains 2 axes. Axes 1 contains an object of type stem. Axes 2 contains an object of type stem.

Создайте сигнал с двумя синусоидами. Десятикратно уменьшите его на коэффициент 13 использований Чебышевского БИХ-фильтра порядка 5. Постройте исходные и подкошенные сигналы.

r = 13;
n = 16:365;
lx = length(n);
x = sin(2*pi*n/153) + cos(2*pi*n/127);

plot(0:lx-1,x,'o')
hold on
y = decimate(x,r,5);
stem(lx-1:-r:0,fliplr(y),'ro','filled','markersize',4)

legend('Original','Decimated','Location','south')
xlabel('Sample number')
ylabel('Signal')

Figure contains an axes. The axes contains 2 objects of type line, stem. These objects represent Original, Decimated.

Исходные и подкошенные сигналы имеют соответствие с последними элементами.

Создайте сигнал с двумя синусоидами. Десятикратно уменьшите его на коэффициент 13 использований КИХ-фильтра порядка 82. Постройте исходные и подкошенные сигналы.

r = 13;
n = 16:365;
lx = length(n);
x = sin(2*pi*n/153) + cos(2*pi*n/127);

plot(0:lx-1,x,'o')
hold on
y = decimate(x,r,82,'fir');
stem(0:r:lx-1,y,'ro','filled','markersize',4)

legend('Original','Decimated','Location','south')
xlabel('Sample number')
ylabel('Signal')

Figure contains an axes. The axes contains 2 objects of type line, stem. These objects represent Original, Decimated.

Исходные и подкошенные сигналы имеют соответствие с первыми элементами.

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

свернуть все

Входной сигнал в виде вектора.

Типы данных: double

Фактор децимации в виде положительного целого числа. Для лучших результатов, когда r больше 13, разделите r в меньшие факторы и вызов decimate несколько раз.

Типы данных: double

Порядок фильтра в виде положительного целого числа. БИХ-порядок фильтра выше 13 не рекомендуются из-за числовой нестабильности. Функция выводит предупреждение в тех случаях.

Типы данных: double

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

свернуть все

Подкошенный сигнал, возвращенный как вектор.

Типы данных: double

Алгоритмы

Децимация уменьшает исходную частоту дискретизации последовательности к более низкому уровню. Это - противоположность интерполяции. decimate lowpass фильтрует вход, чтобы принять меры против искажения и прореживает результат. Функция использует алгоритмы децимации 8.2 и 8.3 от [1].

  1. decimate создает фильтр lowpass. Значением по умолчанию является созданный с использованием фильтр Чебышевский Тип 1 cheby1. Этот фильтр имеет нормированную частоту среза 0.8/r и неравномерность в полосе пропускания 0,05 дБ. Иногда, заданный порядок фильтра производит искажение полосы пропускания из-за ошибок округления, накопленных от сверток, должен был создать передаточную функцию. decimate автоматически уменьшает порядка фильтра, когда искажение заставляет ответ величины в частоте среза отличаться от пульсации больше чем 10-6.

    Когда 'fir' опция выбрана, decimate использование fir1 спроектировать КИХ-фильтр lowpass с частотой среза 1/r.

  2. При использовании КИХ-фильтра, decimate фильтрует входную последовательность только в одном направлении. Это сохраняет память и полезно для работы с длинными последовательностями. В БИХ-случае, decimate применяет фильтр в использовании прямых и обратных направлений filtfilt удалить искажение фазы. В действительности этот процесс удваивает порядка фильтра. В обоих случаях функция минимизирует переходные эффекты в обоих концах сигнала путем соответствия с условиями конечной точки.

  3. Наконец, decimate передискретизирует данные путем выбора каждого rth указывают от внутренней части отфильтрованного сигнала. В передискретизируемой последовательности (y), y(end) соответствия x(end) когда БИХ-фильтр используется, и y(1) соответствия x(1) когда КИХ-фильтр используется.

Ссылки

[1] Комитет по Цифровой обработке сигналов IEEE® Acoustics, Речи, и Общества Обработки сигналов, программ редакторов для Цифровой обработки сигналов. Нью-Йорк: Нажатие IEEE, 1979.

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

| | | | |

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