Joh*_*ohn 3 linux signal-processing gnuradio radio gnuradio-companion
我与野生动植物无线电发射机合作,我想制造一种可以监听这些信号并跟踪其听到声音的东西。信号是通常每分钟发送60次的声音,如果运动传感器指示动物已经死亡,则发送120次。
我的计划是使用GNU Radio侦听并将信号转换为某种类型的矩阵,然后将其保存到文件中,然后在第二个程序中进行分析。有没有一种方法可以获取频率跨过几兆赫兹,频率为500 Hz的信号强度矢量,并将它们放到一个矩阵中?
次级程序将解释该输出并找到野生生物发射器并记录其脉搏率。想法是每隔10秒左右从GNU Radio获取一个新文件,并在收到第二个程序时对其进行处理。
我一直在尝试在GNU Radio中使用文件接收器块,并意识到它是二进制文件。也不确定确切包含什么。
任何建议的方法,我应该如何做到,将不胜感激!
我的计划是使用GNU Radio收听和转换信号
好吧,您将需要硬件来做到这一点。您想使用哪种SDR设备?
在下面的内容中,我假设您确实在使用经典的SDR方法来获得可为您提供原始I&Q样本的设备。
如果有一种方法可以获取跨越几兆赫兹的500 Hz间隔的信号强度矢量,然后将它们放到一个矩阵中。
放慢矩阵,让我们专注于从等距频率获取功率:
那几乎就是功率谱密度(PSD)估计器。最简单,可能最快和最经典的方法就是简单地计算输入信号FFT的幅度平方。
GNU Radio Companion具有对数功率FFT块,对于输入时间采样流,它将FFT size以一定Frame rate速率为您提供矢量(显然应该是=采样率/ 500 Hz);例如:
将这些向量保存到文件中就足够了,因为:
我一直在尝试在GNU中使用文件接收器块,并意识到它是二进制文件。也不确定确切包含什么。
它是原始的,连续的数字,就像它们在内存中一样。对此总会有一些误解,因此有一个常见问题解答条目。指出:
所有文件均为纯二进制格式。只是一点点。而已。浮点数据流在文件中另存为32位。复数信号的实部为32位,虚部为32位。读回一个复数意味着读入32位,将其保存到复杂数据结构的实部,然后读入接下来的32位作为数据结构的虚部。并继续读取数据。
因此,一种使用的方法就是使用Python / numpy,numpy.fromfile(file, dtype=numpy.float32)然后使用,然后numpy.reshape((rows,cols))将所得的1D浮点数组带入所需的矩阵形状。
关于您的文件命名愿望:这是一个相当大的算法问题(以及为什么我认为这个问题在这里很受关注)。您可能不会自己编写一些代码。这真的不是那么难。一个始终使用n向量并将其写入名称与当前时间匹配的文件的Python块将完全对您的应用程序起作用。
编写块是您在GNU Radio中可以做的最有趣的事情之一。我认为向您介绍GNU Radio Guided Tutorials非常值得。它们非常有趣,您可以在没有硬件的情况下遵循示例!建议按顺序进行。
一些评论:
最后说明:您说您已经有一个SDR设备(一个RTL加密狗)。那很棒!
将其连接到您的PC;通过使用librtl / gr-osmosdr osmocom -s 1e6 -W获得“显示”的1 MHz带宽;调谐到发射机的频率并观看频谱。您会学到很多东西!
如果还没有所有软件,请执行以下操作:只需下载并启动GNU Radio实时SDR环境。即插即用!
在GNU Radio Companion中,只需用osmocom源(可以与RTL加密狗对话)替换UHD:USRP源。
| 归档时间: |
|
| 查看次数: |
876 次 |
| 最近记录: |