【问题标题】:How do I downsample a signal using Octave?如何使用 Octave 对信号进行下采样?
【发布时间】:2020-04-01 08:18:36
【问题描述】:

我一直在尝试对信号进行下采样,但我不确定我是否有正确的命令?你能给我正确的命令和简短的解释吗?

【问题讨论】:

标签: matlab octave


【解决方案1】:

根据您要达到的目标,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 慢。

【讨论】:

    【解决方案2】:

    例如

    y=resample(x,L,M);
    

    x 是你的信号

    L 是增加采样率

    M 是降低采样率

    【讨论】:

    • 我必须声明 L 和 M 还是只是代码的一部分?
    猜你喜欢
    • 2020-03-24
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 2011-04-01
    相关资源
    最近更新 更多