• 大小: 3KB
    文件类型: .m
    金币: 2
    下载: 1 次
    发布日期: 2021-05-16
  • 语言: Matlab
  • 标签: Matlab  

资源简介

自己设计编写的QDPSK信号调制与解调程序,内附注释

资源截图

代码片段和文件信息

%% 调制
J = sqrt(-1);                              %%虚数符号
num = 1000;
data = round(rand(1num));%%产生一行随机数
nsymbol = length(data)/2;             %%计算发送符号数
qdpsk_mod = zeros(1nsymbol);
mid_data = zeros(1num+2);
qdpsk_data = zeros(1num);
%% QDPSK的调制模块  (功率不作归一化)
for loop = 1:nsymbol
    if xor(mid_data(2*loop-1)mid_data(2*loop)) == 0
        mid_data(2*loop+1) = xor(mid_data(2*loop-1)data(2*loop-1));
        mid_data(2*loop+2) = ~xor(mid_data(2*loop)data(2*loop));
    elseif xor(mid_data(2*loop-1)mid_data(2*loop)) == 1
        mid_data(2*loop+1) = xor(mid_data(2*loop)data(2*loop));
        mid_data(2*loop+2) = ~xor(mid_data(2*loop-1)data(2*loop-1));
    end
end

for loop = 1:nsymbol
    qdpsk_data(2*loop-1) = mid_data(2*loop+1);
    qdpsk_data(2*loop) = mid_data(2*loop+2);
end

for loop = 1:nsymbol               %%调制
    symbol1 = qdpsk_data(2*loop-1);
    symbol2 = qdpsk_data(2*loop);
    
    if symbol1 == 0 && symbol2 == 0 
        qdpsk_mod(loop) = 1;
    elseif symbol1 == 0 && symbol2 == 1 
        qdpsk_mod(loop) = J; 
    elseif symbol1 == 1 && symbol2 == 1 
        qdpsk_mod(loop) = -1;
    elseif symbol1 == 1 && symbol2 == 0 
        qdpsk_mod(loop) = -J;
    end
end


r = qdpsk_mod;

%%与乘载波相乘模块
%%定义参数
RB = 50*1e3  ;            %%基带码元速率(Hz) 50K
f = 1*1e7 ;             %%载波频率(Hz)100M
x = 20 ;                  %%采样频率与载波频率之比  (奈奎斯特定律,至少应大于2)
A = 1 ;                   %%载波幅值
time = [0:1/(x*f):nsymbol/RB - 1/(x*f)];                  %%采样时间点(单位为秒) 


C = exp(2*pi*f*time*J);            %%e指数载波

for loop1 = 1:nsymbol
    wavesignal(  (loop1-1)*(x*f/RB)+1:loop1*(x*f/RB)  ) = real(   r(loop1

评论

共有 条评论