📄 testdapsk_in_time.m
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%ofdm系统参数设置%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc;
clear all;
% %%%%%%%%%%%%%%%BER for DAPSK in time direction% %%%%%%%%%%%%%%%%5%%%%%%%%%%%%%%
Nu=112; % ifft size according to fs
Ng=88; % the length of cp
a=2.0; % deferential amplitude
bw=10000; % channel bandwidth
fs=10000; % sampling frequency
carriers=ceil(bw*Nu/fs);% useful carrier number
ncon=16; % constellation
Ns=Nu+Ng;
nums=10; % ofdm symbol number in a transimission frame
times=10; % the times of repeat transimission in some SNR!
tsnr=8; % the snr ratio scope;
step_snr = 5; % the snr step in multipler;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%% test ofdmdapsk in frequency Ber performnce %%%%%%%%%%%%%%%%%%%%%%
ratio=zeros(1,tsnr);
for snr_db=1:tsnr
for time=1:times
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%% send signal %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% generating nums symbols of ofdm each time
sequence=randint(carriers*log2(ncon),nums);
%data= reshape(sequence,1,carriers*log2(ncon)*nums);
%dapsk modulation
datamap=dapskmap_time(sequence,a,ncon);
%datamap=reshape(datamap,carriers,nums);
%add zero to carriers according to Nu
numzero=ceil((Nu-carriers)/2);
datamap=[zeros(numzero,nums);datamap;zeros(numzero,nums)];
%ofdm modulation
datamap=ifft(datamap);
%add cp
temp=datamap((Nu-Ng+1):Nu,:);
datamap=[temp;datamap];
clear temp;
% get ofdm baseband signal
[m,n]=size(datamap);
outstream=reshape(datamap,m*n,1);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%% pass channel %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%pass multichannel
outstream=multirayfade(outstream,fs,'chan.6');
%pass awgn channeel
snr=step_snr*(snr_db-1);
outstream=awgn(outstream,snr,'measured') ;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%% receive signal %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%delete cp
datademap=reshape(outstream,m,n);
temp=datademap;
temp(1:Ng,:)=[];
datademap=temp;
clear temp;
%ofdm symbols demodulation
datademap=fft(datademap);
temp=datademap;
% delete zero according to carriers
temp(1:numzero,:)=[];
temp=temp;
len=length(temp);
temp(len-numzero+1:len,:)=[];
datademap=temp;
clear temp;
%dapsk signal demodulation
datademap=dapskdemod_time(datademap);
datademap=reshape(datademap,1,carriers*nums);
%map the demodulation signals to bit streams
[outbit]=dapsktogray_frequency(datademap,a,ncon);
receive_bit=reshape(outbit,carriers*log2(ncon),nums);
%detection ber per snr
[number,ber]=biterr(receive_bit(:,1:nums),sequence(:,1:nums));
ratio(snr_db)=ratio(snr_db)+ber;
end
% disp('%%%%%%%%%%%%%%%% display ber /snr %%%%%%%%%%%%%%%%%%%%%%%');
% snr;
ratio_ber(snr_db)=ratio(snr_db)/times;
end
% figure plot ber according to snr
snr=step_snr*(0:tsnr-1);
semilogy(snr,ratio_ber,'r*');
disp('********************* final result********************');
[ratio_ber']
snr'
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -