📄 decoding_ed_test.m
字号:
%%clear all;%% Necessary pathaddpath ../addpath ../rng;addpath ../util;addpath ../pulse;addpath ../receiver;addpath ../data_signal;% Some parametersFS_CONT = 8e9;PACKET_LENGTH = 100;TC = 2e-9;Eb = 1;snr_dB = 0:1:16;% ReceiverT_INT = 1e-9;N_INT = 1;% From SNR in dB to the variance of the noisesnr = 10.^(snr_dB/10);s2 = Eb ./ (2*snr);% SimulationL = 200;dt = 1/FS_CONT;%samples_per_unit = 1e-9*FS_CONT;samples_per_unit = 1e-9*FS_CONT;samples_per_chip = TC * FS_CONT;% Get a pulsechip_span = 0.5;[monopulse,t] = get_monopulse(1,chip_span,1e-9,TC,samples_per_chip);% Normalizemonopulse = Eb*monopulse./norm(monopulse);% $$$ % Better?% $$$ monopulse = Eb*monopulse/sqrt(dt*sum(monopulse.^2));% Create the signal to be transmittedtx_signal = conv(monopulse,upsample(ones(1,PACKET_LENGTH),2*samples_per_chip));tx_signal = tx_signal(1:2*PACKET_LENGTH*samples_per_chip);% Indices for the energy receiversignal_start_0 = cumsum(ones(1,PACKET_LENGTH)*(2*samples_per_chip))-(2* ... samples_per_chip);n = samples_per_chip-rem(samples_per_chip,T_INT*FS_CONT);signal_idx_0 = repmat(signal_start_0,n,1)+repmat((0:n-1)',1,PACKET_LENGTH) + 1;signal_idx_1 = signal_idx_0 + samples_per_chip;% Parameters for the generation of the Gaussian noiseALPHA = 2*PACKET_LENGTH;T = TC;Nt = T*FS_CONT;B = 1e9;Scale = (2*B)/FS_CONT;for l = 1:length(snr_dB) for k = 1:L % Add the noise% $$$ noise = ...% $$$ sqrt(s2(l))*randn(1,PACKET_LENGTH*2*samples_per_chip); noise = ... randn_bl(ALPHA,T,Nt,B,s2(l)*Scale); rx_signal = tx_signal + noise; % Energy receiver [rx_down_0,samples_per_tint] = ... ed_receiver(rx_signal(reshape(signal_idx_0,1, PACKET_LENGTH*n)),T_INT, ... FS_CONT,N_INT,0); [rx_down_1,samples_per_tint] = ... ed_receiver(rx_signal(reshape(signal_idx_1,1, PACKET_LENGTH*n)),T_INT, ... FS_CONT,N_INT,0); % Decision rule and detection rx_down = sum(reshape((rx_down_0 - rx_down_1),n/(T_INT*FS_CONT), ... PACKET_LENGTH),1); idx_dec0 = find(rx_down>0); idx_dec1 = find(rx_down<0); idx_unknown = find(rx_down==0); decoded = []; decoded(idx_dec0) = 0; decoded(idx_dec1) = 1; decoded(idx_unknown) = round(rand(1,length(idx_unknown))); % Compute the BER [num_err,ber_sim(l,k)] = symerr(decoded,zeros(1,PACKET_LENGTH)); endendsemilogy(snr_dB,mean(ber_sim,2),'.g');% Achtung, orthogonal modulation schemeber_bppm = 0.5*erfc( sqrt(snr) / sqrt(2));ber_bpsk = 0.5*erfc( sqrt(2*snr) / sqrt(2));hold on;semilogy(snr_dB,ber_bppm,'r',snr_dB,ber_bpsk,'r--');hold off;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -