📄 dpsk_fading.m
字号:
function [avg_ber, snr_db] = DPSK_fading(max_doppler, sample_freq, ...
NF, NUM_FRAMES, SNR_POINTS);
% gives the BER for a given Doppler and a range of SNR_POINTS
%inputs: max_doppler (Hz), sample_freq (symbols/sec),
% NF number of bits per frame,
% NUM_FRAMES number of frames of each of size NF bits,
% SNR_POINTS number different SNR points
%outputs: avg_ber -- vector of size SNR_POINTS,
% snr_db -- vector of size SNR_POINTS
seed=15; %some arbitrary seed for random number generator
initial_time=3.2323; %arbitrary start time for jakes generator in seconds
for isnr=1:SNR_POINTS
avg_ber(isnr)=0;
end
for iframe=1:NUM_FRAMES
iframe
%get the bit generator
a_k = bit_gen(NF, seed);
%bit-to-symbol mapper
d_k = QPSK_Gray(a_k, NF/2);
%differentail encoder
c_k = diff_enc(d_k, NF/2);
%generate the fades
[alpha, end_time] = jakes_HW3(max_doppler, sample_freq, NF/2, ...
initial_time);
initial_time = end_time;
for isnr=1:SNR_POINTS;
snr_db(isnr)=(isnr-1)*3+10;
%channel output
x_k = channel(c_k, alpha, snr_db(isnr), NF/2);
% differential decoder
z_k = diff_dec(x_k, NF/2);
% symbol-to-bit demapper
ahat = symbol_to_bit(z_k, NF/2);
% BER computation
ber = ber_compute(a_k, ahat, NF);
avg_ber(isnr) = ber/iframe + avg_ber(isnr)*(iframe-1)/iframe
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -