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 + -
显示快捷键?