【发布时间】:2017-08-17 09:07:19
【问题描述】:
如果我有一个混合了不同频率的正弦波和余弦波的信号,我可以通过设计一个通带频率等于我想要的频率的带通滤波器来轻松提取其中一个。
如果我必须提取具有多个频率分量的信号怎么办?
例如,如果我有两个音频信号。显然,音频信号包含许多频率。设两个音频信号为a1,a2。
现在我像 A=a1+a2 一样添加它们;
请注意,我不会将一个音频附加到另一个音频。我正在添加它们的振幅。
为此,我正在这样做:
[a1,fs1]=audioread('1.mp3');
[a2,fs2]=audioread('sample.mp3');
A=zeros(1,max(length(a1),length(a2)));
for i=1:length(a1)
A(i)=a1(i);
end
for i=1:length(a2)
A(i)=A(i)+a2(i);
end
现在我在变量 A 中有一个复合音频。
现在,如果我想从A 中提取a1,我该怎么做?如果它是一个简单的频率范围,我会很容易地提取它。但是这里两个音频信号几乎都有相同的频率集。甚至可以这样提取吗?
谢谢你:)
编辑:
按照这里的傅立叶图要求,我正在粘贴它们:
【问题讨论】:
-
你可以用
A(1:length(a1)) = a1和A(1:length(a2)) = A(1:length(a2)) + a2替换你的for循环。那么除了A - a2的一些变化之外,提取a1是什么意思?这两个音频信号是否专门使用不同的频率? -
尝试为每个音频源分别运行傅立叶图以分析它们的频谱,并分享结果。这不是一个简单的过滤问题,而是取决于您拥有的数据并需要定制的解决方案。
-
正如 crazyGamer 所指出的,这不是您可以通过应用通带滤波器轻松解决的问题。这听起来更像是使用单个麦克风进行的盲源分离。您可以在 google 上找到一些出版物。
-
@crazyGamer 我已经通过更新问题粘贴了傅立叶图......请看一下......
标签: matlab audio filter fft frequency