Как уменьшить сигнал с помощью Octave? - PullRequest
0 голосов
/ 19 ноября 2018

Я пытался уменьшить сигнал, но не уверен, что у меня есть правильная команда? Вы можете дать мне правильную команду с кратким объяснением?

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

В зависимости от того, что вы пытаетесь достичь, 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.

0 голосов
/ 19 ноября 2018

например

y=resample(x,L,M);

.

.

x -> ваш сигнал

L -> увеличить частоту дискретизации

M -> уменьшить частоту дискретизации

...