在matlab中提取具有多个频率分量的信号

时间:2017-08-17 09:07:20

标签: matlab audio filter fft frequency

如果我的信号是不同频率的正弦波和余弦波的混合信号,我可以通过设计一个通带频率等于我所需频率的带通滤波器来轻松提取其中一个。

如果我必须提取具有多个频率成分的信号怎么办?

例如,如果我有两个音频信号。显然,音频信号包含许多频率。设两个音频信号为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中有一个复合音频。

现在,如果我想从a1中提取A,我该怎么做?如果它是一个简单的频率范围,我会很容易地提取它。但这里两个音频信号几乎都有相同的频率组。是否有可能像这样提取?

谢谢你:)

修改

正如我在这里要求的傅立叶图所示,我将它们粘贴在一起:

Plot 1

Plot 2

1 个答案:

答案 0 :(得分:1)

如果您有一个参考信号s1,您只需从摘要信号A中减去它并获得目标信号: s2 = A - s1。

但如果你没有其中一个信号,你就无法获得单独的信号。存在无限数量的不同信号s1和s2的组合物可以产生类似s1 + s2的A。所以它是不可能的po分开他们。