matlab实现SSB信号调制解调:相干解调器解调,画出原始信号和解调信号;通过AWGN信号,信噪比20db,画出原始信号和解调信号进行对比
时间: 2023-10-01 10:02:13 浏览: 142
Dtmf,matlab 单边带与双边带调制解调方法仿真及谱分析源码,matlab
以下是 MATLAB 代码实现 SSB 相干解调器的解调,并绘制原始信号和解调信号的图像:
```matlab
% 清空环境变量
clear all;
close all;
clc;
%% 生成原始信号
fs = 10000; % 采样率
fc = 1000; % 载波频率
t = 0:1/fs:1; % 时间序列
f1 = 50; % 信号频率
f2 = 200; % 信号频率
m1 = 0.5; % 调制深度
m2 = 0.8; % 调制深度
% 生成两个调制信号
x1 = m1*cos(2*pi*f1*t);
x2 = m2*cos(2*pi*f2*t);
% 生成原始信号
x = x1 + x2;
% 绘制原始信号图像
figure;
plot(t, x);
xlabel('时间/s');
ylabel('幅度');
%% SSB 相干解调器解调
% 生成本地振荡器
t2 = 0:1/fs:1;
f_lo = fc; % 本地振荡器频率
lo = cos(2*pi*f_lo*t2);
% 上变频
xb = x .* lo;
% 滤波
[b, a] = butter(6, (fc+10)/(fs/2), 'high');
y = filter(b, a, xb);
% 下变频
yd = y .* lo;
% 低通滤波
[b1, a1] = butter(6, 2*f1/(fs/2), 'low');
[b2, a2] = butter(6, 2*f2/(fs/2), 'low');
y1 = filter(b1, a1, yd);
y2 = filter(b2, a2, yd);
% 恢复原始信号
y3 = y1 + y2;
% 绘制解调信号图像
figure;
plot(t, y3);
xlabel('时间/s');
ylabel('幅度');
%% 加入 AWGN 信噪比 20dB
% 计算信号功率
Px = sum(x.^2)/length(x);
% 计算噪声功率
SNR = 20; % 信噪比
Pn = Px / 10^(SNR/10);
% 生成噪声
n = sqrt(Pn) * randn(size(x));
% 加入噪声的信号
x_noise = x + n;
% 绘制加入噪声的原始信号图像
figure;
plot(t, x_noise);
xlabel('时间/s');
ylabel('幅度');
%% 解调加入噪声的信号
% 上变频
xb_noise = x_noise .* lo;
% 滤波
y_noise = filter(b, a, xb_noise);
% 下变频
yd_noise = y_noise .* lo;
% 低通滤波
y1_noise = filter(b1, a1, yd_noise);
y2_noise = filter(b2, a2, yd_noise);
% 恢复原始信号
y3_noise = y1_noise + y2_noise;
% 绘制解调信号图像
figure;
plot(t, y3_noise);
xlabel('时间/s');
ylabel('幅度');
```
运行以上代码,将分别绘制原始信号、解调信号和加入噪声的原始信号、解调信号的图像。可以通过对比不同情况下的图像,观察 SSB 相干解调器的解调效果。
阅读全文