【问题标题】:How to edit the file generated by file sink of GNU Radio?如何编辑 GNU Radio 的文件接收器生成的文件?
【发布时间】:2016-07-03 12:16:32
【问题描述】:

我发现file sink block生成的文件是二进制格式的, 不能通过 gedit 在 linux 或其他东西下编辑, 那么如何编辑文件呢?

我发送一个包含“hello world”的 dat 文件,我想接​​收一个包含“hello world”的文件

【问题讨论】:

    标签: file binary gnuradio


    【解决方案1】:

    这个问题经常被问到。所以这里有一个link to the FAQ 和摘录:

    所有文件都是纯二进制格式。只是位。而已。浮点数据流以 32 位的形式保存在文件中,一个接一个。复数信号的实部为 32 位,虚部为 32 位。读回复数意味着读入 32 位,将其保存到复数数据结构的实部,然后读入接下来的 32 位作为数据结构的虚部。继续阅读数据。

    查看 gr-utils 中的 Octave 和 Python 文件,以使用 Octave 和 Python 的 Scipy 模块读取数据。

    格式的例外是使用元数据文件格式。这些文件由 File Meta Sink:http://gnuradio.org/doc/doxygen/classgr_1_1blocks_1_1file__meta__sink.html 块生成并由 File Meta Source 块读取。有关如何处理这些文件的更多信息,请参阅元数据文件格式的手册页。

    将整个文件读入numpy数组的单行Python命令是:

    f = scipy.fromfile(open("filename"), dtype=scipy.uint8)
    

    将 dtype 替换为 scipy.int16、scipy.int32、scipy.float32、scipy.complex64 或您使用的任何类型。

    所以您的问题“我该如何编辑?”归结为理解这是原始数据。您当然可以在字节级别上修改它(例如使用十六进制编辑器),但通常,您会拥有(或编写)一些将数据加载到程序内表示中的程序(例如复数数组)和看看那个。

    你问这个的方式表明你并没有真正意识到你在看什么(因为你甚至没有提到如何你传输那个字符串)。也许您的数据由于噪声引起的符号错​​误而出现位错误?很可能,没有完成同步,因此您收到的位与您要发送的字节顺序不同。

    我认为这可能是一个非常好的地方,可以将您指向GNU Radio Guided Tutorials

    【讨论】:

    • 非常感谢~我已经阅读了你建议的页面~我使用 pycharm 看看我想看的内容~我使用十六进制编辑~还有更多,我将解压的 Gnu Radio 块添加到打包中,得到了我的结果~
    • 您对“也许您的数据由于噪声引起的符号错​​误而存在位错误?”也是如此。我的文件也记录了噪音,而中心频率没有数据,这仍然困扰着我~
    • 您没有描述任何有关您的设置的信息,但是如果您使用的是软件定义的无线电,则可以解释“没有关于中心频率的数据”这句话。许多 SDR 具有这种效果是因为它们的直接转换接收器。见dsp.stackexchange.com/questions/30562/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-04
    • 1970-01-01
    • 2021-02-06
    • 2020-12-12
    相关资源
    最近更新 更多