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

问题描述 投票:1回答:1

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

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

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

matlab audio filter fft frequency
1个回答
1
投票

如果你有一个参考信号s1,你可以从汇总信号A中减去它并得到目标信号:s2 = A - s1。

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

© www.soinside.com 2019 - 2024. All rights reserved.