десятикратно уменьшить

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

Синтаксис

y = decimate(x,r)
y = decimate(x,r,n)
y = decimate(x,r,'fir')
y = decimate(x,r,n,'fir')

Описание

пример

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

пример

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

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

пример

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

Примеры

свернуть все

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

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

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

subplot 211
stem(0:120,x(1:121),'filled','markersize',3)
grid on
xlabel 'Sample number',ylabel 'Original'
subplot 212
stem(0:30,y(1:31),'filled','markersize',3)
grid on
xlabel 'Sample number',ylabel 'Decimated'

Создайте сигнал с двумя синусоидами. Десятикратно уменьшите его фактором 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')

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

Создайте сигнал с двумя синусоидами. Десятикратно уменьшите его фактором 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')

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

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

свернуть все

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

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

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

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

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

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

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

свернуть все

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

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

Алгоритмы

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

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

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

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

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

Ссылки

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

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

| | | | |

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