用Matlab 实现AM信号调制和非相干解调过程,并绘制包络检波后信号、LPF后信号及解调器输出信号的时域和频域
时间: 2024-01-16 18:01:57 浏览: 332
AM和FM.rar_AM信号解调_AM,FM信号语音_FM_matlab解调FM_语音信号FM
5星 · 资源好评率100%
以下是一个简单的MATLAB代码,用于生成AM信号并模拟调制和解调过程。其中包括包络检波、低通滤波器处理和非相干解调。
```matlab
% 生成原始信号
fs = 1000; % 采样率
t = 0:1/fs:1; % 时间序列
fc = 50; % 载波频率
fm = 5; % 信号频率
x = sin(2*pi*fm*t); % 原始信号
% AM信号调制
Ac = 1; % 载波幅度
y = (1 + 0.5*x) .* Ac .* sin(2*pi*fc*t);
% 包络检波
z = abs(hilbert(y));
% 低通滤波处理
fcutoff = 10; % 截止频率
h = fir1(100,fcutoff/(fs/2)); % 低通滤波器系数
y_lpf = filter(h,1,z);
% 非相干解调
theta_hat = atan2(y_lpf(2:end),y_lpf(1:end-1)); % 相位估计
theta_hat = [theta_hat(1) theta_hat]; % 延迟一位
x_hat = cos(theta_hat); % 解调后的信号
% 绘制时域和频域图像
subplot(4,2,1);
plot(t,x);
title('原始信号');
xlabel('时间 (s)');
ylabel('幅度');
subplot(4,2,2);
f = linspace(-fs/2,fs/2,length(t));
X = fftshift(fft(x));
plot(f,abs(X));
title('原始信号频谱');
xlabel('频率 (Hz)');
ylabel('幅度');
subplot(4,2,3);
plot(t,y);
title('AM调制信号');
xlabel('时间 (s)');
ylabel('幅度');
subplot(4,2,4);
Y = fftshift(fft(y));
plot(f,abs(Y));
title('AM调制信号频谱');
xlabel('频率 (Hz)');
ylabel('幅度');
subplot(4,2,5);
plot(t,z);
title('包络检波后信号');
xlabel('时间 (s)');
ylabel('幅度');
subplot(4,2,6);
Z = fftshift(fft(z));
plot(f,abs(Z));
title('包络检波后信号频谱');
xlabel('频率 (Hz)');
ylabel('幅度');
subplot(4,2,7);
plot(t,y_lpf);
title('LPF后信号');
xlabel('时间 (s)');
ylabel('幅度');
subplot(4,2,8);
Y_lpf = fftshift(fft(y_lpf));
plot(f,abs(Y_lpf));
title('LPF后信号频谱');
xlabel('频率 (Hz)');
ylabel('幅度');
```
运行以上代码将得到一个包含8个子图的图像,其中包括原始信号、AM调制信号、包络检波后信号、LPF后信号及解调器输出信号的时域和频域图像。
阅读全文