我是GNU Radio的新手,我正试图使用它和USRP B210板来传输一个值。
我使用Matlab将值0.121
转换为wav格式,然后使用GNU Radio中的audio_to_file
示例将wav文件转换为.dat文件。
当我使用B210和GNU Radio传输.dat
文件时,我收到了一个wav文件,但当我使用matlab函数(audioread()
)读取wav时,我得到了一个不同的值。
p.S.
转换后的.dat文件的采样率为44100 Hz,每个采样16位。接收机和发射机的采样率为400K Hz。我使用了GNU Radio包中的fm_tx4.py
示例作为我的发射机。我用uhd_nbfm_receiver.grc
作为接收器。
如果你想知道为什么你的接收信号与发送信号的振幅不同,你就没有掌握无线电通信的基本知识:因为你的发射机和接收机之间没有数字线路,功率可以到达任何地方,到达接收机的功率取决于很多因素,包括增益、天线、距离、匹配。。。
RX端与TX端相比会有更多不同之处:您的接收没有时间同步,因此您可能会看到相移。你没有提到接收器是相同的,是同步的时钟还是独立于时钟的B210,这意味着你有一个一般的情况,没有两个物理时钟可以相同(是的,这是不可能的,但你可以减少误差),所以你通常也会看到一些频率偏移。
我建议阅读一些基本的无线电通信理论,我经常推荐GNU电台的图片介绍,以及GNU电台建议的阅读页面。Michael Ossmann的课程也得到了一些认可,所以你绝对应该看看。
此外,您的所有数据->Wav->传输转换是完全不必要的。Matlabs fread
/fwrite
函数可以读取/存储GNU Radio的file_sink
/file_source
可以存储/读取的本地机器浮点格式。请参阅常见问题条目。