clipping_ber_4qam.asv

来自「clipping算法的误码率仿真文件」· ASV 代码 · 共 86 行

ASV
86
字号
% clipping technique
clear all;
close all;
N=1024;                  %子载波数
FS=4096;
num=2;                   %仿真次数
SF=1000;                  %sample frequency
Tu=224e-6;                  %useful OFDM symbol period
T=Tu/(2*N);                 %baseband elementary period,is 7/64e-6s;
q=10;
fc=q*1/T;                      %carrier frequency
Rs=4*fc;                       %simulation period
t=0:1/Rs:Tu;

cr=[0.6:0.1:0.9 10];
SNR=[4:1:18];
for k=1:15;
    k=k
    snr=SNR(k);
    for j=1:5;
        CR=cr(j);
        for i=1:num;
            x=-1+2*round(rand(2,N));
            x1=amodce(x,SF,'qam');            %qam modulated information
            y2=reshape(x1,1,N);
            z1=[y2(1:N/2),zeros(1,3*N),y2(N/2+1:N)];     %4 oversample
            w1=FS*ifft(z1);
            x1=(abs(w1)).^2;
            m1=mean(x1);
            v1=max(x1);
            papr(i)=10*log10(v1/m1);
            y3=abs(w1);
            A=CR*sqrt(2)*std(w1);
            w2=w1;
            for h=1:4*N;
                if y3(h)>A;
                    w2(h)=w1(h)*A/y3(h);
                end
            end
            
            L=length(w2);
            chips=[w2;zeros((2*q)-1,L)];%the first line is carriers, other 19(as q=10) lines is 0
            g=ones(2*q,1); %pulse shape
            dummy=conv(g,chips(:));
            u=[dummy; zeros(46,1)];%(C)
            [b,a] = butter(13,1/20); %reconstruction filter
            uoft = filter(b,a,u);%baseband signal (D)
            delay=64;
            s_tilde=(uoft(delay+(1:length(t))).').*exp(1i*2*pi*fc*t);
            s=real(s_tilde);%passband signal (E)
            r_tilde = awgn(s,snr,'measured'); % Add white Gaussian noise
            r_tilde2=exp(-1i*2*pi*fc*t).*r_tilde; %(F)
            [B,AA] = butter(3,1/2);
            r_info=2*filter(B,AA,r_tilde2); %Baseband signal continuous-time (G)
            %Sampling
            r_data=real(r_info(1:(2*q):length(t)))... %Baseband signal, discretetime
                +1i*imag(r_info(1:(2*q):length(t))); % (H)
            info_2N=(1/L).*fft(r_data,L); % (I)
            info_h2=[info_2N(1:N/2) info_2N((L-((N/2)-1)):L)];
            count=0;
            for p=1:N
                if real(y2(p))~=round(real(info_h2(p)));
                    count=count+1;
                end
                if imag(y2(p))~=round(imag(info_h2(p)));
                    count=count+1;
                end
            end
            ber1(i)=count/(2*N);
        end
         ber(j,k)=mean(ber1);
    end
   
end




x=4:1:18;
figure(1);
semilogy(x,ber(1,:),'r-x',x,ber(2,:),'g-v',x,ber(3,:),'m-o',x,ber(4,:),'c-square',x,ber(5,:),'k-');
grid on;
legend('CR=0.6','CR=0.7','CR=0.8','CR=0.9','Original');
Xlabel('信噪比(SNR)');
Ylabel('误码率(BER)');

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?