В зависимости от того, что вы пытаетесь достичь, downsample
может быть достаточно.
Пример кода:
pkg load signal % To download the signal package
x = cos(1:1000); % Create a signal
y = downsample(x, 2);
Однако itне будет применять фильтр нижних частот , поэтому он может создавать нежелательные эффекты сглаживания для вашего сигнала.Как команда help downsample
говорит:
Для большинства сигналов вы захотите использовать decimate
вместо этого, поскольку она предварительно фильтрует высокочастотные компоненты сигнала и избегает эффектов наложения.
Теперь, если вы хотите уменьшить и применить фильтр нижних частот, вы хотели бы использовать decimate
, но он работает только для понижающей дискретизации с целым числомс коэффициентом, например, от 96 кГц до 48 кГц, вы уменьшаете с коэффициентом 2. От help decimate
Обратите внимание, что для этого метода изменения скорости Q должно быть integer .
Пример кода:
pkg load signal % To download the signal package
x = cos(1:1000); % Create a signal
y = decimate(x, 2);
Наконец, если вы хотите уменьшить частоту дискретизации по рациональному числу, например, с коэффициентом 2/3, от 96 кГц до 64 кГц, выпонадобится resample
, как это было предложено другими пользователями.
pkg load signal % To download the signal package
x = cos(1:1000); % Create a signal
y = resample(x, 2, 3);
Обратите внимание, что вы все равно можете использовать resample
для уменьшения числа с помощью целочисленного коэффициента, например y = resample(x, 1, 2);
, ноэто медленнее, чем decimate
.