- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用我的 USRP E100 捕获 GPS 信号并将它们保存到一个 .bin 文件中,下面是使用 GNU Radio Companion 实现的流程图:
如您所见,我从 GPS 频率接收到 50M 复样本,并提取了它们的实部和虚部。然后,我将 Float 转换为 Char,并将其保存为 IQIQIQIQ(...) bin 文件。如果没有 Float 到 Char 的转换,一切正常,但如果有,输出文件只填充 0(例如,float 输出“b502 323a b502 32b8 b502 b239 1d12 0b3a”被转换为 char 输出“0000 0000 0000 0000 0000 0000 0000 0000").
我不知道这里发生了什么,因为如果使用 Float to Char block ,就会出现错误。我也尝试过使用其他类型转换器,例如 Float to Short,我得到了相同的输出:一个 0 向量。
生成流程图时的结果代码如下:
#!/usr/bin/env python
##################################################
# Gnuradio Python Flow Graph
# Title: Gps Datagrabber
# Generated: Wed Feb 3 10:01:35 2016
##################################################
from gnuradio import eng_notation
from gnuradio import gr
from gnuradio import uhd
from gnuradio.eng_option import eng_option
from gnuradio.gr import firdes
from optparse import OptionParser
class GPS_datagrabber(gr.top_block):
def __init__(self):
gr.top_block.__init__(self, "Gps Datagrabber")
##################################################
# Variables
##################################################
self.samp_rate = samp_rate = 5*1000000
self.Tiempo_sec = Tiempo_sec = 10
self.gain = gain = 15
self.center_freq = center_freq = int(1.57542e9)
self.band = band = int(40e6)
self.Samples = Samples = Tiempo_sec*samp_rate
##################################################
# Blocks
##################################################
self.gr_interleave_0 = gr.interleave(gr.sizeof_char*1)
self.gr_head_0 = gr.head(gr.sizeof_gr_complex*1, 50000000)
self.gr_float_to_char_1 = gr.float_to_char()
self.gr_float_to_char_0 = gr.float_to_char()
self.gr_file_sink_0 = gr.file_sink(gr.sizeof_char*1, "/home/root/Desktop/USRP_E100")
self.gr_file_sink_0.set_unbuffered(True)
self.gr_complex_to_real_0 = gr.complex_to_real(1)
self.gr_complex_to_imag_0 = gr.complex_to_imag(1)
self.USRP_sync_123 = uhd.usrp_source(
device_addr="addr0=192.168.10.1",
stream_args=uhd.stream_args(
cpu_format="fc32",
channels=range(1),
),
)
self.USRP_sync_123.set_clock_source("external", 0)
self.USRP_sync_123.set_time_source("external", 0)
self.USRP_sync_123.set_samp_rate(samp_rate)
self.USRP_sync_123.set_center_freq(center_freq, 0)
self.USRP_sync_123.set_gain(gain, 0)
self.USRP_sync_123.set_antenna("TX/RX", 0)
self.USRP_sync_123.set_bandwidth(band, 0)
##################################################
# Connections
##################################################
self.connect((self.USRP_sync_123, 0), (self.gr_head_0, 0))
self.connect((self.gr_head_0, 0), (self.gr_complex_to_real_0, 0))
self.connect((self.gr_interleave_0, 0), (self.gr_file_sink_0, 0))
self.connect((self.gr_complex_to_real_0, 0), (self.gr_float_to_char_0, 0))
self.connect((self.gr_float_to_char_0, 0), (self.gr_interleave_0, 0))
self.connect((self.gr_complex_to_imag_0, 0), (self.gr_float_to_char_1, 0))
self.connect((self.gr_float_to_char_1, 0), (self.gr_interleave_0, 1))
self.connect((self.gr_head_0, 0), (self.gr_complex_to_imag_0, 0))
def get_samp_rate(self):
return self.samp_rate
def set_samp_rate(self, samp_rate):
self.samp_rate = samp_rate
self.set_Samples(self.Tiempo_sec*self.samp_rate)
self.USRP_sync_123.set_samp_rate(self.samp_rate)
def get_Tiempo_sec(self):
return self.Tiempo_sec
def set_Tiempo_sec(self, Tiempo_sec):
self.Tiempo_sec = Tiempo_sec
self.set_Samples(self.Tiempo_sec*self.samp_rate)
def get_gain(self):
return self.gain
def set_gain(self, gain):
self.gain = gain
self.USRP_sync_123.set_gain(self.gain, 0)
self.USRP_sync_123.set_gain(self.gain, 1)
self.USRP_sync_123.set_gain(self.gain, 2)
def get_center_freq(self):
return self.center_freq
def set_center_freq(self, center_freq):
self.center_freq = center_freq
self.USRP_sync_123.set_center_freq(self.center_freq, 0)
self.USRP_sync_123.set_center_freq(self.center_freq, 1)
self.USRP_sync_123.set_center_freq(self.center_freq, 2)
def get_band(self):
return self.band
def set_band(self, band):
self.band = band
self.USRP_sync_123.set_bandwidth(self.band, 0)
self.USRP_sync_123.set_bandwidth(self.band, 1)
self.USRP_sync_123.set_bandwidth(self.band, 2)
def get_Samples(self):
return self.Samples
def set_Samples(self, Samples):
self.Samples = Samples
if __name__ == '__main__':
parser = OptionParser(option_class=eng_option, usage="%prog: [options]")
(options, args) = parser.parse_args()
tb = GPS_datagrabber()
tb.run()
错在哪里?也许是 USRP/硬件问题?或者我无法将 Float 数据转换为 Char 数据?
最佳答案
当以复数运算时,USRP 默认在 [-1, 1] 范围内缩放每个 IQ 样本。
但是,我认为输入信号可能非常微弱,因此每个 IQ 样本值应低于 [-0.5, 0.5]。 Float to Char
block 执行从 float 到 char 的转换。但是将 float 转换为 [-0.5, 0.5] 范围内的整数应该总是产生零。这就是为什么您的文件只包含零的原因。
现在要避免这个问题,有两种可能的解决方案:
解决方案 1:适当缩放传入的 IQ 样本,使其范围超过 [-0.5, 0.5] 范围。这可以通过将信号乘以常数或适当更改 Float to Char
block 的 Scale
参数来完成。
解决方案 2:由于您对 8 位样本精度感兴趣,我建议指示 USRP 以带符号的短(16 位)格式在流程图中传递样本。每个 IQ 样本的范围将在 [-2^15, 2^15] 内。然后只需执行Short to Char
转换,但要确保每个样本的幅度不大于 2^7,否则会出现削波效果。使用此解决方案,流图中流动的数据要少得多,因为与复杂形式相比,每个 IQ 样本的大小只有一半。此外,整数向下转换速度更快。
关于floating-point - 在 gnuradio 中从 Float 转换为 Char 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35199558/
我正在尝试将一个字符串逐个字符地复制到另一个字符串中。目的不是复制整个字符串,而是复制其中的一部分(我稍后会为此做一些条件......) 但我不知道如何使用迭代器。 你能帮帮我吗? std::stri
我想将 void 指针转换为结构引用。 结构的最小示例: #include "Interface.h" class Foo { public: Foo() : mAddress((uint
这有点烦人:我有一个 div,它从窗口的左上角开始过渡,即使它位于文档的其他任何位置。我试过 usign -webkit-transform-origin 但没有成功,也许我用错了。有人可以帮助我吗?
假设,如果将 CSS3 转换/转换/动画分配给 DOM 元素,我是否可以检测到该过程的状态? 我想这样做的原因是因为我正在寻找类似过渡链的东西,例如,在前一个过渡之后运行一个过渡。 最佳答案 我在 h
最近我遇到了“不稳定”屏幕,这很可能是由 CSS 转换引起的。事实上,它只发生在 Chrome 浏览器 上(可能还有 Safari,因为一些人也报告了它)。知道如何让它看起来光滑吗?此外,您可能会注意
我正在开发一个简单的 slider ,它使用 CSS 过渡来为幻灯片设置动画。我用一些基本样式和一些 javascript 创建了一支笔 here .注意:由于 Codepen 使用 Prefixfr
我正在使用以下代码返回 IList: public IList FindCodesByCountry(string country) { var query =
如何设计像这样的操作: 计算 转化 翻译 例如:从“EUR”转换为“CNY”金额“100”。 这是 /convert?from=EUR&to=CNY&amount=100 RESTful 吗? 最佳答
我使用 jquery 组合了一个图像滚动器,如下所示 function rotateImages(whichHolder, start) { var images = $('#' +which
如何使用 CSS (-moz-transform) 更改一个如下所示的 div: 最佳答案 你可以看看Mozilla Developer Center .甚至还有例子。 但是,在我看来,您的具体示例不
我需要帮助我正在尝试在选中和未选中的汉堡菜单上实现动画。我能够为菜单设置动画,但我不知道如何在转换为 0 时为左菜单动画设置动画 &__menu { transform: translateX(
我正在为字典格式之间的转换而苦苦挣扎:我正在尝试将下面的项目数组转换为下面的结果数组。本质上是通过在项目第一个元素中查找重复项,然后仅在第一个参数不同时才将文件添加到结果集中。 var items:[
如果我有两个定义相同的结构,那么在它们之间进行转换的最佳方式是什么? struct A { int i; float f; }; struct B { int i; float f; }; void
我编写了一个 javascript 代码,可以将视口(viewport)从一个链接滑动到另一个链接。基本上一切正常,你怎么能在那里看到http://jsfiddle.net/DruwJ/8/ 我现在的
我需要将文件上传到 meteor ,对其进行一些图像处理(必要时进行图像转换,从图像生成缩略图),然后将其存储在外部图像存储服务器(s3)中。这应该尽可能快。 您对 nodejs 图像处理库有什么建议
刚开始接触KDB+,有一些问题很难从Q for Mortals中得到。 说,这里 http://code.kx.com/wiki/JB:QforMortals2/casting_and_enumera
我在这里的一个项目中使用 JSF 1.2 和 IceFaces 1.8。 我有一个页面,它基本上是一大堆浮点数字段的大编辑网格。这是通过 inputText 实现的页面上的字段指向具有原始值的值对象
ScnMatrix4 是一个 4x4 矩阵。我的问题是什么矩阵行对应于位置(ScnVector3),旋转(ScnVector4),比例(ScnVector3)。第 4 行是空的吗? 编辑: 我玩弄了
恐怕我是 Scala 新手: 我正在尝试根据一些简单的逻辑将 Map 转换为新 Map: val postVals = Map("test" -> "testing1", "test2" -> "te
输入: This is sample 1 This is sample 2 输出: ~COLOR~[Green]This is sample 1~COLOR~[Red]This is sam
我是一名优秀的程序员,十分优秀!