背景
我承认,这个问题源于对数字信号处理所涉及的基础数学的深刻理解;我还在学习。
我想拍摄一组幅度样本,比如1024(单通道),并将它们带入频域。显然这需要FFT;没问题。问题是这只能给出频率高达奈奎斯特频率或1024/2。
问题
如果我有立体声信号,我可以合并信号以产生2048幅度样本,从而返回1024个频率值吗?我希望在频域中获得更高的分辨率。
那么,这可以和返回有意义的频率数据吗?有没有其他方法可以采用立体声信号并在频域中以更高的分辨率结束?
我到目前为止所发现的
我看到一篇文章建议取左信号并使其成为真实值和正确信号,并使其成为FFT复数值的虚数值。这对我来说没有意义,也许是因为我不懂数学。我确实尝试过,它似乎工作,但我有信号泄漏。所以我应用了Hanning窗口,但在处理后只产生了512个可用值。
答案 0 :(得分:5)
一般来说,没有。您的立体声信号肯定是2048个幅度样本,但这些是来自两个独立通道的样本,每个通道都经过滤波以去除A / D转换之前Nyquest频率以上的所有信息。
考虑涉及一对48 KHz频道的两种情况:
一个1000 Hz的信号向左平移,一个2000 Hz的信号向右平移。这些之间没有任何关系,也没有任何一个信号存在于相反的通道中,因此将它们组合起来毫无意义。
一个50 KHz的信号向左猛击。正确的通道中没有任何东西,并且假设一个适当的截止滤波器,左通道中也没有任何东西。如果没有过滤,您在左通道中就会产生废话。
也就是说,也许您认为如果一对麦克风在房间内录制环境信号,并且您移除了截止滤波器,则两个麦克风之间的相位差可能会为您提供有关实际信号的更多信息。这将是一个令人着迷的研究领域,但据我所知,目前任何实际实施还有很长的路要走。
答案 1 :(得分:3)
如果您正在分析的信号来自物理信号,则您无法做任何事情。 将信号合并为一个2048个样本的大数组将用于计算,但结果将毫无意义。
例如,创建一个包含2048个单元格的数组并按如下所示填充:
original = int [1024];
new = int [2048]
new [2 * n] = original [n];
new [2 * n + 1] = original [n];
这样你可以获得更大的数组和更高的频率,但是由于你的初始数据是相同的,你获得的结果将没有任何帮助,它将与原始的FFT相同。
如果你只需要一个更高频率的分析,你可以做两件事,改变采样率(我想你在插孔中使用声音线)到声板可以达到的最大值(大多数为48kHz)。或者,将采集板更改为某些特定硬件(任何专用的USB采集板都可以轻松达到1MHz)。
Ps:频率是采样频率的1024/2倍。不要忘记乘以采样频率。
答案 2 :(得分:1)
可以想象一种具有单点声源的布置,以及用于在两个声道之间获得半波长偏移的立体声输入。
然后,您将能够组合通道以获取高频数据。
可能做一个可爱的演示,但它不是一个实际的应用程序。
答案 3 :(得分:1)
有一种可能性,您可以从两个频道获得更高的费率。模拟到数字系统通常是多路复用的,也就是说,它们使用一个模数转换器用于两个通道,在它们之间交替。如果您的录音中出现这种情况,和这两个频道的输入几乎相同,和其他变量对您有利,那么您实际上可能有两倍的基本采样率。
这是一个很长的镜头,但也许值得一试。如果是这种情况,您可以通过简单地以正确的顺序交错两个通道来重建更高的频率。 (我认为没有理由将其纳入复杂的渠道。)
要检查是否是这种情况,您可以简单地检查交错通道的图,或者可以使用互相关图。
答案 4 :(得分:0)
不,不能做!
将左右声道组合成一个图像。 number(left [i] + right [i] * j)形成一个包含两个不同音频通道的信号。这种信号可以混合并通过介质(空气,水,RF)传输。它只是将两个真实通道复用为具有相似带宽的复杂信号的一种方法。