Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gnuradio 为什么我在GNU收音机的VCO模块中只得到零?_Gnuradio_Gnuradio Companion - Fatal编程技术网

Gnuradio 为什么我在GNU收音机的VCO模块中只得到零?

Gnuradio 为什么我在GNU收音机的VCO模块中只得到零?,gnuradio,gnuradio-companion,Gnuradio,Gnuradio Companion,在GNU无线电中,我试图使用一个信号的频率来产生另一个不同频率的信号。以下是我正在使用的流程图: 我用一个信号源块生成一个50 kHz的信号,并将其输入对数功率FFT块。我使用Argmax块找到具有最大功率的FFT单元,并将其乘以常数。我想用这个结果作为复杂vco模块的输入,生成另一个不同频率的信号。所有向量的长度均为4096 然而,从复杂的QtGUI时间接收器块的输出来看,vco的输出总是为零。这对我来说很奇怪,因为使用float-QT-Gui时间接收器查看乘法块的输出(它也将进入vco块的

在GNU无线电中,我试图使用一个信号的频率来产生另一个不同频率的信号。以下是我正在使用的流程图:

我用一个信号源块生成一个50 kHz的信号,并将其输入对数功率FFT块。我使用Argmax块找到具有最大功率的FFT单元,并将其乘以常数。我想用这个结果作为复杂vco模块的输入,生成另一个不同频率的信号。所有向量的长度均为4096

然而,从复杂的QtGUI时间接收器块的输出来看,vco的输出总是为零。这对我来说很奇怪,因为使用float-QT-Gui时间接收器查看乘法块的输出(它也将进入vco块的输入),结果是预期的50000。为什么我只能从vco中得到零

此外,我的采样率设置为1M。由于向量长度为4096,我假设Argmax块的采样率为1M/4096=244。这是正确的吗


我正在windows 10上运行gnu radio companion

看起来更好的解决方案是使用探测信号块和函数探测块探测乘法器的输出,以创建新变量。然后,该变量可用作用于生成新信号的单独信号源块中的频率值。此流程图似乎满足了最初的预期目的:

建议的解决方案不是解决方案。请不要滥用信号探针,它实际上只是一个用于慢速、调试或纯视觉目的的探针。每次我自己使用它时,我都会看到它在架构上有多么糟糕,我个人认为项目应该将它从块库中完全删除

现在,与其说“探头坏了,做点别的”,不如让我们分析一下流程图的不足之处:

  • 频率估计取决于用于纯可视化目的的块的argmax。不,输出速率不是(采样速率/FFT长度),输出速率大致上是“帧速率”(但实际上并不准确。该块非常糟糕,混合了“采样时间”和“挂钟时间”)。不要那样做。如果您需要类似的东西,请使用FFT块,然后是我的“复数到幅值平方”。你甚至不想要对数-你只是在寻找一个最大值
  • 不要在FFT中寻找最大绝对值,FFT本质上是一个量化频率估计器,而是使用一些实际给你振荡的东西。有多种方法可以做到这一点与PLL
  • 您的VCO解决方案可能实现了编程的功能。你只是用了一个不够敏感的东西
  • 你在你的时间汇中假设的采样率是完全关闭的,这可能就是为什么你会有一个恒定输出的印象——它的变化如此之慢以至于你不会注意到
因此,我建议改为:

  • 使用PLL频率检测器。将其输出馈入VCO。不要使用常数进行缩放,只需应用适当的灵敏度即可。灵敏度是“输入振幅”和“输出上每个样本的相位推进(弧度)”之间的系数
  • 使用PLL载波恢复。使用重采样器或其他数学方法生成新频率。你还没有告诉我们其他频率与输入频率的关系,所以我不能给你具体的建议
还请注意,这非常表明这是一个“我正试图在数字中重新创建模拟方法”的案例;这可能是一个好方法,但在许多情况下并非如此


如果我可以厚颜无耻的话:请在GNU无线电邮件列表上的帖子中描述为什么需要生成其他频率,出于何种目的-gnuradio@gnu.org(注册)。这实际上只是一个编程问题,但实际上是一个信号处理问题。还有很多人急切地想帮你找到一个合适的解决方案来解决你的问题

嗯,这看起来是一个非常复杂(不是很好)的方法来产生频率相关的频率,也许你可以选择一个更聪明的方法:)但除此之外:你确定VCO的灵敏度是你真的想要的吗?嗨!GNU无线电软件架构师在这里。不得以这种方式使用信号探头块。这不是一个好的解决方案。(解释:这只是将信号处理流程图中的错误隐藏在一层非常随机的重采样“拐杖”下,而不是做完全正确的事情——这会更容易!)