实验原理

2PSK调制是一种数字调制技术,它将数字比特流转换为连续相位的正弦波信号。在2PSK调制中,每个数字比特被映射为一个离散的相位,通常为0度或180度,这也被称为“二进制相移键控”(Binary Phase Shift Keying)。

PSK调制的原理是将数字信号的位序列映射为不同的相位,然后用载波进行调制。具体而言,PSK的调制过程如下:

1. 将数字信号转换为二进制位序列,例如 0110。

2.二进制位序列映射为相应的相位,例如 0 对应 0度相位,1 对应 180度相位,那么 0110 对应的相位序列为 0度、180度、180度、0度。

3. 使用高频载波信号,例如正弦波,作为基础波形。

4. 将相位序列与载波信号相乘,得到调制后的信号。

5. 将调制后的信号传输到接收端。

6. 在接收端,对接收到的信号进行解调,恢复出原始的数字信号。


1.输入信号波形 

psk调制函数python psk的调制方法_psk调制函数python

 2.输入信号进行编码

psk调制函数python psk的调制方法_正弦波_02

3.绘制已调制信号波形

psk调制函数python psk的调制方法_psk调制函数python_03

 4.滤波器

psk调制函数python psk的调制方法_数字信号_04

5.抽样判决 

psk调制函数python psk的调制方法_psk调制函数python_05

 6.原始代码

close all;
clear
clc; 

%%
max = 11; 
s = randi([0 1], max, 1); % 产生长度为 max 的随机二进制序列

% 构造二进制序列对应的信号波形 Sinput
Sinput = []; 
for n = 1:length(s)
    if s(n) == 0
        A = zeros(1, 2000); % 码元宽度为 2000
    else
        A = ones(1, 2000);
    end 
    Sinput = [Sinput A]; 
end 

% 绘制输入信号波形图像
figure(1);
subplot(2,1,1);
plot(Sinput);
grid on 
axis([0,2000*length(s),-2,2]);
title('输入信号波形'); 

% 生成调制信号 s(t) 和载波信号 c(t)
a1 = [];
b1 = [];
f = 1000; 
t = 0:2*pi/1999:2*pi; 
for n = 1:length(s)
    if s(n) == 0
        B = zeros(1, 2000); % 码元宽度为 2000
    else
        B = ones(1, 2000);
    end 
    a1 = [a1 B]; % s(t), 码元宽度 2000
    c = cos(2*pi*f*t); % 载波信号 
    b1 = [b1 c]; % 与 s(t) 等长的载波信号,变为矩阵形式
end 

% 绘制调制信号波形图像和频谱图像
figure(2);
subplot(2,1,1)
plot(a1);
grid on; 
axis([0 2000*length(s) -2 2]);
title('二进制信号序列 s(t)');
subplot(2,1,2); 
plot(abs(fft(a1)));
axis([0 2000*length(s) 0 400]);
title('二进制信号序列 s(t) 频谱');

% 2PSK 调制
a2 = [];
b2 = [];
for n = 1:length(s)
    if s(n) == 0
        C = ones(1, 2000); % 码元宽度为 2000
        d = cos(2*pi*f*t); % 载波信号
    else
        C = ones(1, 2000);
        d = cos(2*pi*f*t+pi); % 载波信号相位反转
    end 
    a2 = [a2 C]; % s(t), 码元宽度 2000
    b2 = [b2 d]; % 与 s(t) 等长的载波信号 
end 
tiaoz = a2 .* b2; % e(t) 调制

% 绘制已调制信号波形图像和频谱图像
figure(3);
subplot(211);
plot(tiaoz);
grid on;
axis([0 2000*length(s) -2 2]);
title('2psk已调制信号');
figure(2);
subplot(212);
plot(abs(fft(a1)));
axis([0 2000*length(s) 0 400]);
title('编码后二进制信号序列频谱');
figure(3);
subplot(212);
plot(abs(fft(tiaoz)));
axis([0 2000*length(s) 0 400]);
title('2psk信号频谱')
fp=500;
fs=700;
rp=3;
rs=20;
fn=11025;
ws=fs/(fn/2);
wp=fp/(fn/2);%计算归一化角频率
[n,wn]=buttord(wp,ws,rp,rs);%计算阶数和截止频率
[b,a]=butter(n,wn);%计算H(z)

freqz(b,a,1000,11025);
subplot(211);
axis([0 40000 -100 3])
title('lpf频谱图');
jt=filter(b,a,tiaoz);
figure(7);
subplot(211);
plot(jt);
grid on
axis([0 2000*length(s) -2 2 ]);
title('经低通滤波器后的信号波形');
figure(7);
subplot(212);
plot(abs(fft(jt)));
axis([0 2000*length(s) 0 800]);
title('经低通滤波器后的信号频率');
for m=1:2000*length(s);
    if jt(m)<0;
       jt(m)=1;
    else jt(m)>0;
       jt(m)=0;
    end
end
figure(8);
subplot(211);
plot(jt)
grid on
axis([0 2000*length(s) -2 2]);
title('经抽样判决后信号jt(t)波形')
figure(8);
subplot(212);
plot(abs(fft(jt)));
axis([0 2000*length(s) 0 800]);
title('经抽样判决后的信号频谱');
grid on;
n=500:2000:2000*length(s);
a5=[];
a5=[a5 jt(n)];
a6=[];
for n=1:length(s);
    if s(n)==0;
      G=zeros(1,2000);
    else s(n)==1;
      G=ones(1,2000);
    end
    a6=[a6 G];
end