matlab 分离两个正弦信号
时间: 2023-12-06 14:05:09 浏览: 154
zhengxianbo.rar_ zhengxianbo_MATLAB 混频_matlab_混频_混频信号_频率分解
根据引用[2]中的积化和差公式,两个不同频率的信号相乘可以化简为两个频率的信号相加的形式。因此,我们可以通过将混频后的信号进行傅里叶变换,然后在频域中分离出两个频率分量,即可实现分离两个正弦信号的目的。
以下是matlab代码实现:
```matlab
clc; clear;
fs=50e6;
f1=1e6;
f2=5e6;
n=0:2047;
s_1=sin(2*pi*f1*n/fs);
s_2=sin(2*pi*f2*n/fs);
%s_1与s_2混频
s_12=s_1.*s_2;
%%% 频域分析 %%%
fft_out=fft(s_12,2048);
fft_abs=abs(fft_out);
% 找到混频后信号的频率分量
[~, idx] = maxk(fft_abs, 2); % 找到前两个最大值的下标
f_1 = idx(1) * fs / 2048; % 计算第一个频率分量
f_2 = idx(2) * fs / 2048; % 计算第二个频率分量
% 分离两个正弦信号
s_1_recover = sin(2*pi*f_1*n/fs);
s_2_recover = sin(2*pi*f_2*n/fs);
% 绘制原始信号和分离后的信号
subplot(2,2,1);
plot(n, s_1);
title('原始信号1');
subplot(2,2,2);
plot(n, s_2);
title('原始信号2');
subplot(2,2,3);
plot(n, s_1_recover);
title('分离后的信号1');
subplot(2,2,4);
plot(n, s_2_recover);
title('分离后的信号2');
```
运行以上代码,即可得到分离后的两个正弦信号。
阅读全文