我正在使用Python2.7.3,我有一个关于超声波频率的问题:
在40 1MHz的采样下,我测量了一个超声波信号,它是一个1 1MHz谐振频率和一个包络的卷积,它的包络取决于超声波信号通过的介质。我想听听这个接收到的信号,我的问题是:
如何将接收到的信号映射到人类听觉的范围?或者换一种方式,我可以如何降低采样,并将这个信号转换成音频(保持信封形状,甚至可能延长时间,使其更长)。
这里是模拟信号,但在任何情况下都是这样的:
import numpy as np
import matplotlib.pylab as plt
# resonant frequency is 1MHz
f = 1e6
Omega = 2*np.pi*f
# samle at 40MHz or ts=25ns, for about 1000 samples:
t = np.arange(0,25e-6,25e-9)
y = np.sin(Omega*t) * (t**2) * np.exp(-t/3e-6)
y /= max(y)
plt.plot(y)
plt.grid()
plt.xlabel('sample')
plt.ylabel('value')
plt.show()

发布于 2014-08-14 17:48:16
你的问题有两个共同的答案:
wave模块),这可能是最简单的方法,然后您可以对任何播放WAV文件的内容进行回放。如果有进一步的要求,还可以找到其他的解决方案。包络频率和谐振频率似乎是比较接近的,这限制了选择。如果您需要对实时信号执行此操作,则挑战将是延长信封,因为随后必须检测到信封。否则,就不可能延长时间。
发布于 2014-08-14 12:09:53
我想对此发表评论,但我有一些例子。有很多种方法来表达这一点。您可以使用声音作为编码介质。如果您的原始波形没有什么属性,如frequency (常数)和envelope (变量/可以近似),例如,您可以使用简短的声音和沉默序列(1=generate sound/0=generate silence)以二进制形式对频率进行编码,然后可以用可变频率(例如,ex)表示恒定的声音。100 max的声音代表0的振幅,10000 max的声音代表最大的振幅)。要重建原始信封,可以使用插值。我希望你能明白我的意思。
https://stackoverflow.com/questions/25306838
复制相似问题