我怀疑我有一个非常基本的误解,所以我想在这里澄清一下:
信号在采样之前应该被过滤,对吗?也就是说,我总是在模拟信号经过滤波后以某个采样频率对其进行采样。
但是,MATLAB 的黄油函数作用于采样数据。请参阅此处的示例代码:
[b,a] = butter(6,0.6);
dataIn = randn(1000,1);
dataOut = filter(b,a,dataIn);
但是一旦你采样了,别名就会和原始信号混在一起,所以这不是一个很成问题的做事方式吗?
我怀疑我有一个非常基本的误解,所以我想在这里澄清一下:
信号在采样之前应该被过滤,对吗?也就是说,我总是在模拟信号经过滤波后以某个采样频率对其进行采样。
但是,MATLAB 的黄油函数作用于采样数据。请参阅此处的示例代码:
[b,a] = butter(6,0.6);
dataIn = randn(1000,1);
dataOut = filter(b,a,dataIn);
但是一旦你采样了,别名就会和原始信号混在一起,所以这不是一个很成问题的做事方式吗?
你是对的。这就是为什么您的抗混叠滤波器需要是模拟滤波器的原因。您需要在采样前限制模拟滤波器的带宽。
但是,您可以在数字域中进行部分抗混叠滤波,首先使用更高的采样率和简单的模拟滤波器,然后在应用数字抗混叠滤波器后进行下采样。这在这个问题的答案中得到了解释。但无论如何,您首先需要一个模拟滤波器。
你是对的,正如马特已经指出的那样,你必须在采样之前对信号进行频带限制,即过滤,否则你会得到混叠。
然而,数字域中的滤波有很多应用。
作为一个非常具体的示例,我将添加以下 GNU Radio 信号处理流程图:
您需要知道的是:“USRP 源”只是一个快速 ADC 的接口,运行速度为 200 MS/s(使用我的特定 USRP 模型);混频器给我们的模拟信号从 97.5 MHz 下变频到 0 Hz/Basevabd 当然首先要充分过滤以避免混叠。
然后,在设备内部的 FPGA 中,有一个可调节的数字滤波器,它将潜在的 200 MHz 带宽(这是一个复杂的信号,所以奈奎斯特率 == 采样率!)限制为八分之一,并丢弃除一个之外的所有带宽8 个样本,导致我们要求的 25 MS/s 速率,并将其发送到运行此信号处理流程图的 PC。这就是这里首次使用数字滤波器¹。但是,它不是巴特沃斯滤波器——应用中的数字滤波器很少是巴特沃斯滤波器,因为这是为非常特定的用例设计的一类滤波器——而是多个半带 Nyquist-M FIR 的组合(我的类型/设计方法往往总是忘记......)和CIC。
产生的 25 MS/s 进入 PC 并“通过管道”传输到 GNU Radio。在这里,他们点击了“Polyphase Channelizer”,这实际上只是采用相同“原型”滤波器的数学方法,在我的例子中,是用窗口方法设计的“选择 50 kHz”低通滤波器(我使用了 Hamming这里的窗口,因为好吧,这就是我所做的;其他窗口也可以),然后重复次,每次频率偏移. 我要求等距过滤器。
因此,通过这种方式,我现在可以拥有例如 20 个并行(或实际上是 500 个)例如 FM 解调器,同时为我提供我期望输入信号中的所有相邻 50 kHz 通道的音频。