QPSK的调制解调代码

%% 初始化(CCM模式(规定CCM固定的调制为QPSK 1/4调制 帧长为长序列 不加入导频))
clc;close all;

    ps = 1e4;   %码元速率
    a = 0.5;    %成形滤波器系数
    B = (1+a)*ps;%中频信号带宽
    Fs = 8e4;   %采样频率
    fc = 2e4;   %载波频率
    N = 1500; %每次生成码元的个数
    t = 0:1/Fs:(N*Fs/ps-1)/Fs; 
    t1 = 0:1/ps:(N-1)/ps; 
    sps = Fs/ps; %upsamle
    replay_n = 20; %每一个信噪比下重复的次数
    snr_single = 0.2;%单次信噪比间隔
    offset = 2; %加相偏 以pi/16 为基倍数 目前offset范围为pi/16*2=pi/8;
    snr_n = 100; %信噪比间隔次数
    BER_temp = zeros(1,replay_n);
    BER = zeros(1,snr_n+1);
%% 星座映射
    data = randi(2,1,N*2)-1;  %qpsk 2bit-1 baud
    Reflect_out = dvb_reflect(data,modcod,offset); 
    figure(1);
    plot(real(Reflect_out),imag(Reflect_out));
    title('star pictures');

 %% 成形滤波 且预失真  方法2
    Reflect_out_up = upsample(Reflect_out,sps);
    % rcos
    n_T = 4; %滤波截取码元数
    Shape_b = rcosdesign(a,n_T,sps,'sqrt');

    figure(4);
    freqz(Shape_b);
    rcos_Ads_i = filter(Shape_b,1,real(Reflect_out_up));
    rcos_Ads_q = filter(Shape_b,1,imag(Reflect_out_up));
 %% 调制载波
    f0_i = cos(2*pi*fc*t);
    f0_q = sin(2*pi*fc*t);
    send_message = rcos_Ads_i.*f0_i+ rcos_Ads_q.*f0_q;
%% 信道 高斯白噪声  
 snr = 1:snr_single:snr_n*snr_single+1;
data1 = data(1:(N-4)*2);

for i = 1:snr_n+1
    for j = 1:replay_n
        
        receive_mod_message = awgn(send_message,snr(i));
        % i路
        demod_i = receive_mod_message.*f0_i;
        % q路
        demod_q = receive_mod_message.*f0_q;
        demod_lpf_i = filter(Shape_b,1,demod_i);
        demod_lpf_q = filter(Shape_b,1,demod_q);
        demod_lpf_i_down = zeros(1,N-4);
        demod_lpf_q_down = zeros(1,N-4);
        for k = 1: length(demod_lpf_i_down)
              demod_lpf_i_down(k) = demod_lpf_i(8*k+8*3+1);  %延时
              demod_lpf_q_down(k) = demod_lpf_q(8*k+8*3+1);  %延时
        end
        demod_lpf = demod_lpf_i_down+1j*demod_lpf_q_down;
        y = demod(demod_lpf);
        
%         figure(7);
%         plot(t-0.0004,demod_lpf_q,'r');hold on;
%         plot(t1,imag(Reflect_out));hold on;legend('demod','data');
%         axis([0,0.01,-0.8,0.8]);
        x = y - data1;
        BER_temp(j) = sum(abs(x));
    end
        BER(i) = sum(BER_temp)/(replay_n*length(x));
%         % QPSK解调
%         y = demod(receive_mod_message); 
%         x = y - data;
%         BER_temp(j) = sum(abs(x));
%        BER(i) =sum(BER_temp)/(N*replay_n);
    
end
    figure(4);
    plot(snr,BER);
    xlabel('SNR/dB');
    title('bit error rate');
    legend('相干解调');

%% 相干解调 (理想同步); 不搞频带信号

%     
%     %lowpass filter
%     fc1 = [ps 3.1e4];   %过渡带
%     mag = [1 0];
%     dev = [0.01 0.01];
%     [n,wn,beta,ftype] = kaiserord(fc1,mag,dev,Fs);
%     fpm = [0 fc1(1)*2/Fs fc1(2)*2/Fs 1];
%     magpm = [1 1 0 0];
%     rec_lpf = firpm(n,fpm,magpm);
%     
%     
%         figure(5);
%     freqz(rec_lpf);
%     demod_lpf_i = filter(Shape_b,1,demod_i);
%     demod_lpf_q = filter(Shape_b,1,demod_q);
%     demod_lpf_i_down = downsample(demod_lpf_i,8,2);
%     demod_lpf_q_down = downsample(demod_lpf_q,8,2);
%     demod_lpf_i_down = zeros(1,N);
%     demod_lpf_q_down = zeros(1,N);
%     for i =1:N
%         demod_lpf_i_down(i) = sum(demod_lpf_i(i*sps-sps+1:i*sps));
%         demod_lpf_q_down(i) = sum(demod_lpf_q(i*sps-sps+1:i*sps));
        
%     end
%% 误码率计算    
%     
%     demod_lpf_i_down = zeros(1,N-4);
%     demod_lpf_q_down = zeros(1,N-4);
%     for i = 1: length(demod_lpf_i_down)
%           demod_lpf_i_down(i) = demod_lpf_i(8*i+8*3+1);
%           demod_lpf_q_down(i) = demod_lpf_q(8*i+8*3+1);
%     end
%     demod_lpf = demod_lpf_i_down+1j*demod_lpf_q_down;
%     y = demod(demod_lpf);
%     data1 = data(1:(N-4)*2);
%     figure(7);
%     plot(t-0.0004,demod_lpf_q,'r');hold on;
%     plot(t1,imag(Reflect_out));hold on;legend('demod','data');
%     axis([0,0.01,-0.8,0.8]);
%     x = y - data1;
%     BER_temp = sum(abs(x));
%     BER = BER_temp/length(x)






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值