使用gnuradio lib的数字信号抽取

时间:2014-09-21 14:27:52

标签: c++ signal-processing gnuradio

我写应用程序,我必须处理数字信号 - 双精度数组。我必须信号抽取,过滤等。我发现了一个项目gnuradio,其中有这个问题的功能。但我无法弄清楚如何正确使用它们。

我需要信号抽取(例如从250Hz到200Hz)。该函数应类似于Matlab中的resample函数。我发现,它的课程是:

  • rational_resampler_base_fff班级source
  • fir_filter_fff班级source
  • ...

不幸的是,我无法确定如何使用它们。

我安装的gnuradio和共享库

感谢您的任何建议

编辑@jcoppens

非常感谢你的帮助。 但我必须在我的代码中处理信号。我在gnuradio中找到可以解决我的问题的课程,但我需要帮助如何设置它们。

我必须设定的功能是:
low_pass(double gain,doub sampling_freq,doub cutoff_freq,doub transition_width,window,beta)
其中:

  

使用"窗口方法"设计一个低通FIR滤波器
  增益:过滤器的总体增益(通常为1.0)
   sampling_freq :采样频率(Hz)
   cutoff_freq :过渡带的中心(Hz)
   transition_width :过渡带宽度(Hz)。
  过渡带的归一化宽度是设置所需抽头数的原因。狭窄 - >更多水龙头    window_type :使用什么样的窗口。确定最大衰减和通带纹波    beta :Kaiser窗口的参数

我知道,我必须使用window = KAISER和beta = 5,但其余的我不确定。

我使用的功能是:low_passpfb_arb_resampler_fff::filter

更新

我使用libsamplerate

解决了重新采样问题

1 个答案:

答案 0 :(得分:2)

  

我需要信号抽取(例如从250Hz到200Hz)

警告:我错误地表达了原始的介绍段落 - 我的道歉。

由于250 Hz与200 Hz没有直接关系,你必须做一些技巧将250Hz转换为200Hz。在250Hz样本之间插入4个插值样本,将频率降低到50Hz。然后,您可以通过抽取因子4将频率再次提高到200Hz。

为此,您需要" Rational Resampler",您可以在其中定义子样本和抽取因子。像这样:

enter image description here

这意味着如果使用库,则必须执行类似的操作。没有图书馆,这样做可能更简单。在250 Hz样本之间线性插值(即在每个样本之间插入4个额外样本),然后通过选择每个第4个样本进行抽取。

注意:stackexchange上有一个信号处理论坛 - 也许这个问题可能属于那个类别......

更多信息:如果您只需重新采样输入数据,并且不需要实际的gnuradio程序,那么请查看此文档:

https://ccrma.stanford.edu/~jos/resample/resample.pdf

指向其他文档的链接有多个,以及指向libresamplelibresample4和其他文档的链接,这些链接可能对您有用。另一个非常有趣的页面是:

http://www.dspguru.com/dsp/faqs/multirate/resampling

最后,从与上面的pdf相同的来源,检查他们的snd程序。它可以在不编写任何软件的情况下解决您的问题。它可以加载浮点样本,重新采样,然后再次保存:

http://ccrma.stanford.edu/planetccrma/software/soundapps.html#SECTION00062100000000000000

编辑:还有另一个解决方案 - 也许是最简单的:使用Matlab(或免费的Octave版本):

pkg load signal
t = linspace(0, 10*pi, 50);  % Generate a timeline - 5 cycles
s = sin(t);                  % and the sines -> 250 Hz
tr = resample(s, 5, 4);      % Convert to 200 Hz
plot(t, s, 'r')              % Plot 250 Hz in red
hold on
plot(t, tr(1:50))            % and resampled in blue

会给你:

enter image description here