decimate

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

Описание

пример

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

пример

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

y = decimate(x,r,'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 выполняет повторную выборку данных путем выбора каждой r1-я точка от внутренней части отфильтрованного сигнала. В повторно дискретизированной последовательности (y), y(end) соответствует x(end) при использовании БИХ и y(1) соответствует x(1) при использовании конечной импульсной характеристики.

Ссылки

[1] Комитет по цифровой обработке сигналов IEEE® Общество акустики, речи и обработки сигналов, эд. Программы для цифровой обработки сигналов. Нью-Йорк: IEEE Press, 1979.

См. также

| | | | |

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