
2PSK的MATLAB仿真
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
本项目通过MATLAB对二相移键控(2PSK)调制解调技术进行仿真,展示信号处理流程及性能分析。
```matlab
clear all; close all; clc;
max_length = 10;
binary_sequence = zeros(1, max_length);
binary_sequence = randint(1, max_length); % 创建长度为max的随机二进制序列
cp = [];
modulated_signal_1 = [];
frequency = 2 * 2 * pi;
time_vector = linspace(0, 2*pi, 200);
for n=1:length(binary_sequence)
if binary_sequence(n) == 0
A = zeros(1, length(time_vector)); % 每个值对应的时间点数为200
else
A = ones(1, length(time_vector));
end
cp = [cp A]; % s(t),码元宽度为200
carrier_signal = cos(frequency * time_vector);% 载波信号
modulated_signal_1 = [modulated_signal_1 carrier_signal];% 与s(t)等长的载波信号,变为矩阵形式
end
figure(1);
subplot(4,2,1);
plot(cp);
grid on;
axis([0 length(time_vector)*length(binary_sequence) -2 2]);
title(二进制信号序列);
cm = [];
modulated_signal_2 = [];
for n=1:length(binary_sequence)
if binary_sequence(n) == 0
B = ones(1, length(time_vector)); % 每个值对应的时间点数为200
carrier_signal = cos(frequency * time_vector);
else
B = ones(1, length(time_vector));
carrier_signal = cos(frequency * time_vector + pi);
end
cm=[cm B];% s(t),码元宽度为200
modulated_signal_2 =[modulated_signal_2 carrier_signal];
end
tiaoz=cm .* modulated_signal_2;% e(t)调制
figure(1);
subplot(4, 2, 2);
plot(tiaoz);
grid on;
axis([0 length(time_vector)*length(binary_sequence) -2 2]);
title(2PSK 调制信号);
figure(2);
subplot(4, 2, 1);
plot(abs(fft(cp)));
axis([0 length(time_vector)*length(binary_sequence)/2 0 400]);
title(原始信号频谱);
figure(2);
subplot(4, 2, 2);
plot(abs(fft(tiaoz)));
axis([0 length(time_vector)*length(binary_sequence) / 2 0 400]);
title(2PSK信号频谱);
% 带有高斯白噪声的信道
tz=awgn(tiaoz,10); % 在tiazo中加入白噪声,信噪比为10
figure(1);
subplot(4, 2, 3);
plot(tz);
grid on;
axis([0 length(time_vector)*length(binary_sequence) -2 2]);
title(通过高斯白噪声信道后的信号);
figure(2);
subplot(4, 2, 3);
plot(abs(fft(tz)));
axis([0 length(time_vector)*length(binary_sequence)/2 0 400]);
title(加入白噪声的2PSK信号频谱);
% 同步解调
jiet=2*modulated_signal_1.*tz;% 相乘后信号波形
figure(1);
subplot(4, 2, 4);
plot(jiet);
grid on;
axis([0 length(time_vector)*length(binary_sequence) -2 2]);
title(相乘后的信号);
figure(2);
subplot(4, 2, 4);
plot(abs(fft(jiet)));
axis([0 length(time_vector)*length(binary_sequence)/2 0 400]);
title(相乘后信号频谱);
% 使用低通滤波器
fp = 500; fs = 700;
rp = 3; rs=20;
fn = 11025;
wp = fp / (fs/2); ws = fs / (fs/2);
[num, den] = butter(6,rp,low,wp);
figure(4)
freqz(num,den)
filtered_signal_ideal=filtfilt(num,den,jiet);
% 抽样判决
sampled_binary_sequence=sign(filtered_signal_ideal);
figure(1);
subplot(4, 2, 6);
plot(sampled_binary_sequence);
grid on;
axis([0 length(time_vector)*length(binary_sequence) -2 2]);
title(抽样判决后的信号);
figure(2);
subplot(4, 2, 6);
plot(abs(fft(filtered_signal_ideal
全部评论 (0)


