如何使用Octave对信号进行下采样?

时间:2018-11-19 12:48:59

标签: matlab octave

我一直在尝试对信号进行下采样,但是不确定是否有正确的命令?能给我适当的命令并简要说明吗?

2 个答案:

答案 0 :(得分:4)

根据您要实现的目标,downsample就足够了。

示例代码:

pkg load signal % To download the signal package
x = cos(1:1000); % Create a signal
y = downsample(x, 2);

但是,它不会应用低通滤波器,因此会在信号上引入不必要的混叠效果。就像命令help downsample所说:

  

对于大多数信号,您将要使用decimate来代替,因为它可以对信号的高频成分进行预滤波并避免混叠效应。


现在,如果要对进行降采样并应用低通滤波器,则想使用decimate,但它仅适用于具有整数因子(例如从96kHz开始)的降采样到48kHz,则以2的倍数抽取。从help decimate

  

请注意,对于此费率更改方法,Q必须为整数

示例代码:

pkg load signal % To download the signal package
x = cos(1:1000); % Create a signal
y = decimate(x, 2);

最后,如果要从96kHz到64kHz下以一个有理数进行下采样,例如以2/3的倍数进行下采样,则您将需要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的速度。

答案 1 :(得分:0)

例如

y=resample(x,L,M);

x->您的信号

L->提高采样率

M->降低采样率