1. 程式人生 > 其它 >【數字訊號調製】基於matlab多進位制數字相位調製(4PSK)【含Matlab原始碼 1001期】

【數字訊號調製】基於matlab多進位制數字相位調製(4PSK)【含Matlab原始碼 1001期】

一、簡介

相移鍵控法, 根據數字基帶訊號的兩個電平使載波相位在兩個不同的數值之間切換的一種相位調製方法。
產生PSK訊號的兩種方法:
1)、調相法:將基帶數字訊號(雙極性)與載波訊號直接相乘的方法:
2)、選擇法:用數字基帶訊號去對相位相差180度的兩個載波進行選擇。
兩個載波相位通常相差180度,此時稱為反向鍵控(PSK)。
解調方法:只能採用相干解調。
型別:二進位制相移鍵控(2PSK),多進位制相移鍵控(MPSK)。

二、原始碼

%4PSK解調與解調
%假設在T=1,加入高斯噪聲
clear all
close all
% 調製
bit_in = randint(1e3, 1, [0 1]);
bit_I  = bit_in(1:2:1e3);
bit_Q  = bit_in(2:2:1e3);
data_I = -2*bit_I+1;
data_Q = -2*bit_Q+1;
data_I1=repmat(data_I',20,1);
data_Q1=repmat(data_Q',20,1);
for i=1:1e4
    data_I2(i)=data_I1(i);
    data_Q2(i)=data_Q1(i);
end;
f=0:0.1:1;
xrc=0.5+0.5*cos(pi*f);
data_I2_rc=conv(data_I2,xrc)/5.5;
data_Q2_rc=conv(data_Q2,xrc)/5.5;
f1=1;
t1=0:0.1:1e3+0.9;
n0=rand(size(t1));
I_rc=data_I2_rc.*cos(2*pi*f1*t1);
Q_rc=data_Q2_rc.*sin(2*pi*f1*t1);
QPSK_rc=(sqrt(1/2).*I_rc+sqrt(1/2).*Q_rc);
QPSK_rc_n0=QPSK_rc+n0;
% 解調
I_demo=QPSK_rc_n0.*cos(2*pi*f1*t1);
Q_demo=QPSK_rc_n0.*sin(2*pi*f1*t1);
% 低通濾波
I_recover=conv(I_demo,xrc);    
Q_recover=conv(Q_demo,xrc);
I=I_recover(11:10010);
Q=Q_recover(11:10010);
t2=0:0.05:1e3-0.05;
t3=0:0.1:1e3-0.1;
% 抽樣判決
data_recover=[];
for i=1:20:10000
    data_recover=[data_recover I(i:1:i+19) Q(i:1:i+19)];
end;
bit_recover=[];
for i=1:20:20000
    if sum(data_recover(i:i+19))>0
        data_recover_a(i:i+19)=1;
        bit_recover=[bit_recover 1];
    else
        data_recover_a(i:i+19)=-1;
        bit_recover=[bit_recover -1];
    end
end

三、執行結果

四、備註

版本:2014a
完整程式碼或代寫加1564658423