我设计了一个滤波器,并在 MATLAB 中使用 SPTool 将其应用于随机噪声信号。我的噪音信号是x = (1/sqrt(2))*(randn(1024,1)+j*randn(1024,1))
一旦我对这个噪声信号应用了过滤器,我怎样才能把过滤后的信号用作 GNU Radio Companion 中的文件源(我将连接到 QT GUI 频率接收器)?我尝试使用 SPTool 导出信号,但我不确定我可以为 GNU Radio 使用什么文件扩展名。提前致谢。
我设计了一个滤波器,并在 MATLAB 中使用 SPTool 将其应用于随机噪声信号。我的噪音信号是x = (1/sqrt(2))*(randn(1024,1)+j*randn(1024,1))
一旦我对这个噪声信号应用了过滤器,我怎样才能把过滤后的信号用作 GNU Radio Companion 中的文件源(我将连接到 QT GUI 频率接收器)?我尝试使用 SPTool 导出信号,但我不确定我可以为 GNU Radio 使用什么文件扩展名。提前致谢。
使用fwrite
正确的精度参数,为您提供浮点 32 二进制文件。
或者只是使用GNU Radio中的 octave/Matlab脚本来做这件事:编写原始二进制数据。有关更多信息,请参阅有关文件格式的 GNU Radio 常见问题解答条目。(在https://wiki.gnuradio.org上)
如果您有一个 .mat 文件,另一种选择是在 Vector 字段中使用 Vector Source 块:
loadmat('filename')['varname'].flatten()
为此,您需要:
import numpy
from scipy.io import loadmat
请注意,这会将整个文件加载到内存中(但如果出现问题,您可以指定从文件中加载哪些变量)。此外,如果数据存储为 float64(这是 Matlab 中的规范),那么我认为可能会有一些舍入/截断,因为 GR Vector Source 需要 float32(对 SWIG 如何处理它不太了解)。