'Corrected'... like the lab wants it

This commit is contained in:
ti_mo
2026-05-08 14:07:27 +02:00
parent c8db0d1a10
commit ef74a1ddf7
2 changed files with 14 additions and 104 deletions
+14 -15
View File
@@ -4,9 +4,8 @@ p_gg = 0.99;
p_bb = 0.1;
p_bg = 1 - p_bb;
% freely chosen bit error probability
e_g = 10^-4;
e_b = 10^-1;
e_g = 1 - p_gg;
e_b = p_bb;
% generate random bitstream
bits_array_len = 10^6;
@@ -32,10 +31,17 @@ for it = 1 : bits_array_len
% two different rands for channel and bit logic
% to prevent unwanted coupling of these two mechanics
channel_change_probability = rand();
bit_error_probability = rand();
bit_error_probability = channel_change_probability; % rand();
% error and channel
if channel_state == true
% flip the bit with probability e_g
if bit_error_probability >= p_gg
received_bit = 1 - current_bit;
else
received_bit = current_bit;
end
% channel selection from good state with probability p_gg
if channel_change_probability < p_gg
channel_state = 1;
@@ -44,14 +50,13 @@ for it = 1 : bits_array_len
state_sequence(end + 1) = string(state_visit_counter) + 'x Good';
state_visit_counter = 0;
end
% flip the bit with probability e_g
if bit_error_probability < e_g
else
if bit_error_probability >= p_bg
received_bit = 1 - current_bit;
else
received_bit = current_bit;
end
else
% change channel to good with probability of p_bg
if channel_change_probability < p_bg
channel_state = 1;
@@ -60,12 +65,6 @@ for it = 1 : bits_array_len
else
channel_state = 0;
end
if bit_error_probability < e_b
received_bit = 1 - current_bit;
else
received_bit = current_bit;
end
end
result_stream(it) = received_bit;
@@ -85,7 +84,7 @@ bit_error_rate = bit_error_rate_counter / bits_array_len;
gap_sizes = gap_tracker(3, :);
gap_sizes = gap_sizes(gap_sizes <= 500); % limit gap size to 500 for histogram
histogram(gap_sizes, 'BinEdges', -0.5:1:500.5);
histogram(gap_sizes, 'BinWidth', 10);
xlabel('Gap size')
ylabel('Frequency')
title('Histogram of gap sizes between consecutive errors')