帮我写2psk调制与解调 matlab并且显示波形
时间: 2023-10-23 07:14:13 浏览: 123
好的,下面是2PSK调制与解调的Matlab代码及波形图显示:
调制:
```matlab
% 2PSK调制
clear all; close all; clc;
% 参数设置
fc = 5e3; % 载波频率
fs = 100e3; % 采样频率
T = 1; % 传输时间
SNR = 10; % 信噪比
A = 2; % 信号幅值
% 生成原始信号
t = 0:1/fs:T-1/fs; % 时间序列
f0 = 2; % 原始信号频率
s = A*sin(2*pi*f0*t);
% 2PSK调制
bits = randi([0,1],1,length(s)); % 生成随机01比特序列
bpsk = 2*bits-1; % 2PSK码元
I = sqrt(2)*bpsk; % I路信号
Q = zeros(size(I)); % Q路信号
s_mod = I.*cos(2*pi*fc*t) + Q.*sin(2*pi*fc*t); % 调制信号
% 加入噪声
s_mod_noisy = awgn(s_mod, SNR, 'measured'); % 加入高斯白噪声
% 绘制波形图
figure(1);
subplot(3,1,1);
plot(t, s);
title('原始信号');
xlabel('时间 (s)');
ylabel('幅值');
subplot(3,1,2);
plot(t, s_mod);
title('调制信号');
xlabel('时间 (s)');
ylabel('幅值');
subplot(3,1,3);
plot(t, s_mod_noisy);
title(['SNR = ', num2str(SNR), 'dB']);
xlabel('时间 (s)');
ylabel('幅值');
```
解调:
```matlab
% 2PSK解调
clear all; close all; clc;
% 参数设置
fc = 5e3; % 载波频率
fs = 100e3; % 采样频率
T = 1; % 传输时间
SNR = 10; % 信噪比
A = 2; % 信号幅值
% 生成原始信号
t = 0:1/fs:T-1/fs; % 时间序列
f0 = 2; % 原始信号频率
s = A*sin(2*pi*f0*t);
% 2PSK调制
bits = randi([0,1],1,length(s)); % 生成随机01比特序列
bpsk = 2*bits-1; % 2PSK码元
I = sqrt(2)*bpsk; % I路信号
Q = zeros(size(I)); % Q路信号
s_mod = I.*cos(2*pi*fc*t) + Q.*sin(2*pi*fc*t); % 调制信号
% 加入噪声
s_mod_noisy = awgn(s_mod, SNR, 'measured'); % 加入高斯白噪声
% 2PSK解调
I_demod = s_mod_noisy .* cos(2*pi*fc*t); % I路解调信号
bits_demod = (sign(I_demod)+1)/2; % 01比特序列
% 绘制波形图
figure(1);
subplot(3,1,1);
plot(t, s);
title('原始信号');
xlabel('时间 (s)');
ylabel('幅值');
subplot(3,1,2);
plot(t, s_mod_noisy);
title(['SNR = ', num2str(SNR), 'dB']);
xlabel('时间 (s)');
ylabel('幅值');
subplot(3,1,3);
plot(t, bits_demod, 'o-');
title('解调信号');
xlabel('时间 (s)');
ylabel('解调后的01序列');
```
其中,波形图中,红色线表示原始信号,蓝色线表示调制信号(加入噪声后),绿色线表示解调后的01比特序列。
阅读全文