clear all
tic
Nbit = 10240*3*6; %so luong bits--64 QAM thi la 102400*6*2
N = 64; %so kenh--52 doi voi 802.11a
N_FFT = 64; %kich co FFT
N_data = 64; %so symbol m-ary tren mot OFDM symbol
Zeropad = 0; %chen 0
S_temp = []; %tam
X = []; %tam
X_xen=[]; %tam
CR = [1.0 1.2 1.4]; %
sigma = 0:1:35; %SNR
MM=1:.05:15; %PAPR0
ccdf1=zeros(3,length(MM));
ccdf2=zeros(3,length(MM));
Z = rand(1,Nbit);%tao chuoi bits
for i=1:length(Z)
if Z(i)>0.5
Z(i)=1;
else Z(i)=0;
end
end
Z_backup = Z;
m = 64 ; k = log2(m); %dieu che m-ary******************co chinh lai
% convert from bit sequences Z to symbol sequences S
Z = reshape(Z,k,length(Z)/k);
S = zeros(1,size(Z,2));
for a = 1 : size(Z,2)
for b = 1 : size(Z,1)
S(a) = S(a) + Z(b,a)*2^(b-1);
end
end
Z = Z_backup;
S1 = S;
%dieu che BPSK
S = qammod(S,m);
%so symbol du lieu tong cong
Nsym = length(S)/N_data;%it bua fai lam tron
for jj = 1:length(sigma)%cac muc SNR khac nhau
%%%Kenh truyen-AWGN%%%%
sigma1 = 10^(-sigma(jj)/10);
noise = sqrt(sigma1)*randn(1,length(S))+j*sqrt(sigma1)*randn(1,length(S));%length(X)=length(S)
for ii = 1:3%cac muc xen khac nhau
%ii=3
X = []; %xoa X cho muc xen khac
X_xen = []; %Xoa X_xen cho muc xen khac
for jjj = 1:Nsym %Nsymbol symbols OFDM
%1 symbol OFDM
for i = 1: N_data
S_temp(i)= S(i+(jjj-1).*N_data);
end
%S/P-
S_SP = reshape(S_temp,N,length(S_temp)/N);
%ifft
S_ifft = ifft(S_SP)*sqrt(N_data);
%P/S
S_PS=reshape(S_ifft,1,length(S_temp));
%Tinh nguong clipping
%A(ii) = CR(ii)*sqrt(2)*std(S_PS);%right
A(ii) = CR(ii)*sqrt(2)*std(S_PS);
%clipping-------don gian nhung gay meo tin hieu
for i = 1:length(S_PS)
if abs(S_PS(i)) > A(ii)
S_PS_xen(i) = A(ii).*exp(j*angle(S_PS(i)));%S_PS(i)/abs(S_PS(i));%xen bien do, pha giu nguyen
else
S_PS_xen(i) = S_PS(i);
end
end
clear i;
%Tinh PAPR cho moi Symbol OFDM
trungbinh = S_PS*S_PS'/length(S_PS);
dinh = max(S_PS.*conj(S_PS));
paprSymbol(ii,jjj) = dinh/trungbinh;
paprSymboldB(ii,jjj) = 10*log10(paprSymbol(ii,jjj));
%tinh PAPR cho moi symbol OFDM_clipping
trungbinh = S_PS_xen*S_PS_xen'/length(S_PS_xen);%= mean(S_PS_xen.*conj(S_PS_xen))
dinh = max(S_PS_xen.*conj(S_PS_xen));
paprSymbol_xen(ii,jjj) = dinh/trungbinh;
paprSymbol_xendB(ii,jjj) = 10*log10(paprSymbol_xen(ii,jjj));
%tong Nsymbol phat di ne`
X = [X S_PS]; %OFDM
X_xen = [X_xen S_PS_xen]; %OFDM_xen
for iii=1:length(MM);
if paprSymboldB(ii,jjj)>MM(iii);
ccdf1(ii,iii)=ccdf1(ii,iii)+1;
end
if paprSymbol_xendB(ii,jjj)>MM(iii);
ccdf2(ii,iii)=ccdf2(ii,iii)+1;
end
end
end%end cua jjj
%%%%%%%%%%%%%%%%PHIA THU%%%%%%%%%%%%%%%%
%Y = X + noise;
Y = awgn(X,sigma(jj),'measured');
%Y_xen = X_xen + noise;
Y_xen = awgn(X_xen,sigma(jj),'measured');
%%%%%%%%%%%%%%%%OFDM%%%%%%%%%%%%%%%%%%%%
%S/P
Y_SP = reshape(Y,N,length(Y)/N);
%FFT
Y_FFT = fft(Y_SP)./sqrt(N_data);
%P/S
Y_PS = reshape (Y_FFT,1,length(Y));
%M-ary demod
Y_thu = qamdemod(Y_PS,m);%*********************co chinh lai
%Chuyen tu symbol sequences -> bit sequences
Y_thu = de2bi(Y_thu);
Y_thu = reshape(Y_thu',1,length(Z));
%figure(5)
%stem (abs(Y_thu-Z))
%dem loi
dem = 0;
lech = abs(Y_thu-Z);
for i = 1:length(Z)
if lech(i)~=0
dem = dem + 1;
end
end
sobitloi = dem
ber(ii,jj) = sobitloi/length(Z)
%%%%%%%%%%%OFDM_xen%%%%%%%%%%%%%%%%%
%S/P
Y_SP_xen = reshape(Y_xen,N,length(Y_xen)/N);
%FFT
Y_FFT_xen = fft(Y_SP_xen)./sqrt(N_data);
%P/S
Y_PS_xen = reshape (Y_FFT_xen,1,length(Y_xen));
%M-ary demod
Y_thu_xen = qamdemod(Y_PS_xen,m);%*******************co chinh lai
%Chuyen tu symbol sequences -> bit sequences
Y_thu_xen = de2bi(Y_thu_xen);
Y_thu_xen = reshape(Y_thu_xen',1,length(Z));
%dem loi
dem = 0;
lech_xen = abs(Y_thu_xen-Z);
for i = 1:length(Z)
if lech_xen(i)~=0
dem = dem+1;
end
end
sobitloi_xen = dem
ber_xen(ii,jj) = sobitloi_xen/length(Z)
end%end cua ii
end%end cua jj
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%CCDF cach khac
for ii = 1:3;
%ii=1
figure(4)
ccdf0(ii,:) = ccdf1(ii,:)./Nsym;
ccdf3(ii,:) = ccdf2(ii,:)./Nsym;
hold on
semilogy(MM,ccdf0(ii,:),'r-')
legend('goc ')
if ii == 1
semilogy(MM,ccdf3(ii,:),'b-')
legend('clipping CL= ')
elseif ii == 2
semilogy(MM,ccdf3(ii,:),'g-')
legend('clipping CL= ')
else
semilogy(MM,ccdf3(ii,:),'m-')
legend('clipping CL= ')
end
title('clipping CCDF')
xlabel('papr(dB)'),ylabel('ccdf')
hold off
grid on
end
ber
ber_xen
figure(5)
semilogy(sigma,ber(1,:),'r-*',sigma,ber_xen(1,:),'b->',sigma,ber_xen(2,:),'g-0',sigma,ber_xen(3,:),'m-+');
grid on
end
clippingnhmuc_ssBER.rar_OFDM BER_ber ofdm_phong
版权申诉
88 浏览量
2022-07-13
18:37:07
上传
评论
收藏 2KB RAR 举报
局外狗
- 粉丝: 64
- 资源: 1万+
最新资源
- rainy-day.jpg
- IMG_20240501_171218.jpg
- Swift-内购封装swift版本
- 经典CNN网络之ResNet 图像分类网络实战项目:7种小麦叶片病害分类(迁移学习)
- Java毕设之ssm010基于ssm的新能源汽车在线租赁管理系统+vue.rar
- Java毕设之ssm009毕业生就业信息统计系统+vue.rar
- Java毕设之ssm008医院门诊挂号系统+jsp.rar
- Java毕设之ssm007亚盛汽车配件销售业绩管理统+jsp.rar
- Java毕设之ssm006基于java的少儿编程网上报名系统+vue.rar
- Java毕设之ssm005基于SSM框架的购物商城系统+jsp.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈