- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我与野生动物 radio 发射器打交道,我想构建一些东西来监听这些信号并跟踪它所听到的内容。该信号是一种音调,正常情况下每分钟传输 60 次,如果运动传感器指示动物已经死亡,则传输 120 次。
我的计划是使用 GNU Radio 来收听并将信号转换为某种类型的矩阵并保存到文件中,然后在第二个程序中进行分析。有没有办法在几兆赫兹内以 500 赫兹的间隔获取信号强度矢量,并将它们放在一起形成一个矩阵?
辅助程序将解释此输出并找到野生动物发射器并记录它们的脉搏率。这个想法是每 10 秒左右从 GNU Radio 获取一个新文件,并在收到第二个程序时处理它。
我一直在尝试使用 GNU Radio 中的文件接收器 block ,并意识到它是二进制的。也不确定它到底包含什么。
任何关于我应该如何做到这一点的建议方法都将不胜感激!
最佳答案
My plan is to use GNU Radio to listen and convert the signal
好吧,您需要硬件才能做到这一点;您想要什么样的 SDR 设备?
在下文中,我假设您确实在使用经典的 SDR 方法来获取可为您提供原始 I 和 Q 样本的设备。
If there were a way to get vectors of signal strength at 500 Hz intervals across a few megahertz, and put them together into a matrix.
放慢矩阵,让我们专注于从等距频率获取能量:
这几乎是一个功率谱密度 (PSD) 估计器。最简单、可能最快和经典的方法就是简单地获取输入信号的 FFT 的幅度平方。
GNU Radio Companion 有 log-power FFT block ,对于输入时间样本流,它会给你 FFT size
向量(显然应该是 =采样率/500 Hz)以 帧速率
速率;例如:
将这些向量保存到一个文件中就足够了,因为:
I have been trying to use the file sink block in GNU, and realized that it is in binary. Also not sure what exactly what it contains.
这是数字,原始的,连续的,就像它们在内存中一样。对此总是有一些误解,所以有一个 FAQ entry就此;引用:
All files are in pure binary format. Just bits. That’s it. A floating point data stream is saved as 32 bits in the file, one after the other. A complex signal has 32 bits for the real part and 32 bits for the imaginary part. Reading back a complex number means reading in 32 bits, saving that to the real part of a complex data structure, and then reading in the next 32 bits as the imaginary part of the data structure. And just keep reading the data.
因此,一种方法是使用 Python/numpy
,使用 numpy.fromfile(file, dtype=numpy.float32)
,然后是 numpy.reshape((rows,cols))
将生成的一维 float 组转换为您想要的矩阵形状。
关于您的文件命名愿望:这是一个相当复杂的算法问题(以及为什么我认为这个问题在这里非常切题)。您可能不会绕过自己编写一些代码;这真的不难做到。始终采用 n
向量并将它们写入名称与当前时间匹配的文件的 Python block 将完全适合您的应用程序。
编写 block 是您在 GNU Radio 中可以做的最有趣的事情之一;我认为非常值得将您指向 GNU Radio Guided Tutorials .它们读起来很有趣,您可以在没有硬件的情况下学习示例!建议按顺序进行。
一些评论:
最后的评论:你说你已经有了一个 SDR 设备(一个 RTL 加密狗)。太好了!
将它连接到您的 PC;通过使用 osmocom -s 1e6 -W
使用 librtl/gr-osmosdr 来“显示”1 MHz 的带宽;调谐到发射机的频率并观察频谱。你会学到很多东西!
如果您还没有所有这些软件:只需下载并启动 GNU Radio live SDR environment .即插即用!
在 GNU Radio Companion 中,只需将 UHD: USRP Source 替换为 osmocom 源(可以与 RTL 加密狗通信)。
关于linux - GNU Radio 和野生动物追踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35964742/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
Linux 管道可以缓冲多少数据?这是可配置的吗? 如果管道的两端在同一个进程中,但线程不同,这会有什么不同吗? 请注意:这个“同一个进程,两个线程”的问题是理论上的边栏,真正的问题是关于缓冲的。 最
我找到了here [最后一页] 一种有趣的通过 Linux 启动 Linux 的方法。不幸的是,它只是被提及,我在网上找不到任何有用的链接。那么有人听说过一种避免引导加载程序而使用 Linux 的方法
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我试图了解 ld-linux.so 如何在 Linux 上解析对版本化符号的引用。我有以下文件: 测试.c: void f(); int main() { f(); } a.c 和 b.c:
与 RetroPie 的工作原理类似,我可以使用 Linux 应用程序作为我的桌面环境吗?我实际上并不需要像实际桌面和安装应用程序这样的东西。我只需要一种干净简单的方法来在 RaspberryPi 上
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 10 年前。 Improve thi
有什么方法可以覆盖现有的源代码,我应该用 PyQt、PyGTK、Java 等从头开始构建吗? 最佳答案 如果您指的是软件本身而不是它所连接的存储库,那么自定义应用程序的方法就是 fork 项目。据我所
我的情况是:我在一个磁盘上安装了两个 linux。我将第一个安装在/dev/sda1 中,然后在/dev/sda2 中安装第二个然后我运行第一个系统,我写了一个脚本来在第一个系统运行时更新它。
我在 i2c-0 总线上使用地址为 0x3f 的系统监视器设备。该设备在设备树中配置有 pmbus 驱动程序。 问题是,加载 linux 内核时,这个“Sysmon”设备没有供电。因此,当我在总线 0
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 11 年前。 Improve thi
我正试图在 linux 模块中分配一大块内存,而 kalloc 做不到。 我知道唯一的方法是使用 alloc_bootmem(unsigned long size) 但我只能从 linux 内核而不是
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我有 .sh 文件来运行应用程序。在该文件中,我想动态设置服务器名称,而不是每次都配置。 我尝试了以下方法,它在 CentOS 中运行良好。 nohup /voip/java/jdk1.8.0_71/
我是在 Linux 上开发嵌入式 C++ 程序的新手。我有我的 Debian 操作系统,我在其中开发和编译了我的 C++ 项目(一个简单的控制台进程)。 我想将我的应用程序放到另一个 Debian 操
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 4 年前。 Improve this ques
我使用4.19.78版本的稳定内核,我想找到带有企鹅二进制数据的C数组。系统启动时显示。我需要在哪里搜索该内容? 我在 include/linux/linux_logo.h 文件中只找到了一些 Log
我知道可以使用 gdb 的服务器模式远程调试代码,我知道可以调试针对另一种架构交叉编译的代码,但是是否可以更进一步,从远程调试 Linux 应用程序OS X 使用 gdbserver? 最佳答案 当然
是否有任何可能的方法来运行在另一个 Linux 上编译的二进制文件?我知道当然最简单的是在另一台机器上重建它,但假设我们唯一能得到的是一个二进制文件,那么这可能与否? (我知道这可能并不容易,但我只是
我是一名优秀的程序员,十分优秀!