使用 MATLAB 生成听不见的声波
信息处理
matlab
声音的
频率
声音
2022-02-21 22:33:45
2个回答
尽管从提供的信息中我不太清楚这些广泛分布的线谱的确切原因,但很可能是由于您在消息信号之间添加的静音期所暗示的开关切换。
开关波形是您乘以信号的隐式操作。在声音间隔期间其值为 ,在静音间隔期间其值为。该波形的基本周期约为 200 赫兹。
从技术上讲,具有给定占空比的开关切换将使消息频谱偏移开-关波形的连续傅里叶级数中存在的每个重要谐波的 k 次谐波频率的量。
实际上这是一种实现模拟调制算法的方法。与矩形波相乘会产生大量以谐波为中心的上混频谱,其中只有一个由合适的带通滤波器选择。
因此,作为解决方案,您可以尝试以下方法:
1- 在时域中生成 18kHz(已带通)消息信号。
2- 相应地插入静音时段。
3- 应用以 18Khz 为中心的BPF (带通滤波器)。
如果仔细实施,我猜这应该会解决您的问题。然而,消息信号中的失真可能会发生。
您可能想尝试使用同样听不见的信号对高频音调进行窗口化,例如频谱大多低于 20 Hz 的非矩形窗口包络,它们之间的距离是随机的(如果需要携带信息,则为伪随机)到去除周期性。
其它你可能感兴趣的问题


