【发布时间】:2020-04-01 08:18:36
【问题描述】:
我一直在尝试对信号进行下采样,但我不确定我是否有正确的命令?你能给我正确的命令和简短的解释吗?
【问题讨论】:
-
尝试
signal包中的resample函数:octave.sourceforge.io/signal/function/resample.html
我一直在尝试对信号进行下采样,但我不确定我是否有正确的命令?你能给我正确的命令和简短的解释吗?
【问题讨论】:
signal 包中的resample 函数:octave.sourceforge.io/signal/function/resample.html
根据您要达到的目标,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 慢。
【讨论】:
例如
y=resample(x,L,M);
x 是你的信号
L 是增加采样率
M 是降低采样率
【讨论】: