# 记录样本的GNU无线电文件格式(GNU Radio File Format for the recorded samples)

``` 你知道GNU Radio（GNU Radio Companion中的File Sink）将样本存储在二进制文件中的格式吗？
我需要在Matlab中读取这些示例，但问题是文件太大而无法在Matlab中读取。
我用C ++编写程序来读取这个二进制文件。 Do you know the format in which GNU Radio ( File Sink in GNU Radio Companion) stores the samples in the Binary File?
I need to read these samples in Matlab, but the problem is the file is too big to be read in Matlab.
I am writing the program in C++ to read this binary file.原文：https://stackoverflow.com/questions/5041852```

## 最满意答案

``` 文件接收器只是数据流的转储。 如果数据流内容是简单字节，那么文件的内容很简单。 如果数据流包含复数，则该文件将包含复数列表，其中每个复数由两个浮点数给出，每个浮点数（通常）为4个字节。
```from gnuradio import gr
# Assuming the data stream was complex numbers.
src = gr.file_source(gr.sizeof_gr_complex, "the_file_name")
snk = gr.vector_sink_c()
tb = gr.top_block()
tb.connect(src, snk)
tb.run()
# The complex numbers are then accessible as a python list.
data = snk.data()
```The file sink is just a dump of the data stream. If the data stream content was simple bytes then the content of the file is straightforward. If the data stream contained complex numbers then the file will contain a list of complex numbers where each complex number is given by two floats and each float by (usually) 4 bytes.
You could also use python and gnuradio to convert the files into some other format.
```from gnuradio import gr
# Assuming the data stream was complex numbers.
src = gr.file_source(gr.sizeof_gr_complex, "the_file_name")
snk = gr.vector_sink_c()
tb = gr.top_block()
tb.connect(src, snk)
tb.run()
# The complex numbers are then accessible as a python list.
data = snk.data()
``````

• ## 将PCM录制的数据写入.wav文件（java android）(Writing PCM recorded data into a .wav file (java android))[2019-10-27]

几个小时以来，我一直在与这个完全相同的问题摔跤，而我的问题主要是当以16位记录时，您必须非常小心您写入输出的内容。 WAV文件需要Little Endian格式的数据，但使用writeShort将它作为Big Endian格式输出到输出中。 当使用其他函数时，我也得到了有趣的结果，所以我返回按照正确的顺序写入字节并且工作正常。 我在调试时广泛使用了十六进制编辑器。 我可以推荐你也这样做。 此外，上面的答案中的头文件工作，我用它来检查与我自己的代码，这头是相当简单。 I've been wrestling w ...
• ## NAudio播放样本值比记录值小得多(NAudio playback sample values much smaller than recorded values)[2021-06-21]

使用waveIn ，您可能会记录16位采样，因此它们是short或Int16值在-32768到32767的范围内 处理浮点（ float或Single ）采样时，它们被归一化到-1.0到1.0范围内。 With waveIn, you're likely recording 16 bit samples, so they are short or Int16 values in the range -32768 to 32767 When you deal with floating point (floa ...

由于我们的目标是改善我们的小型社区无线电的音质，正确的方法是使用音频处理器软件，正如@KevinReid所说。 对于记录，一种可能的解决方案是将此模式与Jack一起使用： MIC和音乐播放器---->调音台---->带音频处理器的PC ---> FM Emiter 带有音频处理器的PC是基于GNU / Linux的PC，其中Jack作为声音服务器，Calf Jack Hub（calf.sourceforge.net）作为音频处理器。 脚步： 安装千斤顶，qjackctl和小牛。 打开qjackctl并启动插 ...
• ## GNU Radio File Sink如何工作？(How does GNU Radio File Sink work?)[2021-08-24]

根据设备的采样率，可能无法将样本写入文件而没有不连续性。 而是写入磁盘，您可以在ramdisk编写示例。 Ramdisk是文件存储的抽象，使用RAM内存作为存储介质。 ramdisk的巨大优势是非常快速的读/写数据传输。 但是，文件大小受到主机具有的RAM内存量的限制。 这是一篇很好的文章，可以帮助您在Linux下创建一个ramdisk。 我相信你也很容易找到适合Windows的指南。 Depending the sampling rate of the device, writing samples to ...

我看到你没有重新填充id="temp_mid"字段，但在这里检查它if(temp=="") 。 也许你还需要重新填充它？ I see that you doesn't repopulate the id="temp_mid" field but check it here if(temp=="") . Maybe you need to repopulate it too?
• ## GNU汇编器的输出目标文件格式是什么？(What's the output object file format of GNU assembler as?)[2020-01-27]

在linux上，gas的输出已经是ELF了，它不太可能有一个正在构建旧的a.out格式的版本，或者您正在使用交叉编译器来构建MachO或PE。 On linux the output from gas is ELF already, it is unlikely you have a version which is building the old a.out format, or that you are using a cross compiler to say build to MachO or P ...
• ## OpenCV create_samples失败(OpenCV create_samples fails)[2021-07-11]

事实证明我没有正确格式化txt文件; 它的格式应如下（假设每个图像只包含1个对象）： path num_of_objects xy width height It turns out that I had improperly formatted the txt file; it should be formatted as follows (assume that each image only contains 1 object): path num_of_objects x y width heigh ...
• ## PulseAudio：录制声音但播放恼人的声音(PulseAudio:sound recorded but plays annoying sound)[2021-05-01]

我从记录程序中删除了pa_simple_drain（） （这是我在记录程序中使用此功能的错误），现在它可以工作了。 但是在printf（“％x”，buf）中，它仍然会一次又一次地返回相同的十六进制值。 但程序运作良好。 有人可以解除为什么它打印相同的价值？ I deleted pa_simple_drain() (it was my mistake that i used this function in recording program)function from record program and ...