This commit is contained in:
ti_mo
2026-04-23 23:26:44 +02:00
parent 7c91ba9129
commit c92d3e3b09
3 changed files with 57 additions and 30 deletions
+28 -8
View File
@@ -19,8 +19,11 @@ channel_state = true;
result_stream = zeros(1, bits_array_len);
bit_error_rate_counter = 0;
gap_size_tracker = [];
current_gap_size = 0;
gap_begin = 1; % stores the last dirty bit idx, meaning the begin of a new gap
gap_tracker = []; % holds a 3xn matrix of begin and end gap values and the gap size between them
state_sequence = []; % stores the state timeline
state_visit_counter = 0;
for it = 1 : bits_array_len
current_bit = bits(it);
@@ -32,22 +35,29 @@ for it = 1 : bits_array_len
% error and channel
if channel_state == true
state_visit_counter = state_visit_counter + 1;
% channel selection from good state with probability p_gg
if channel_change_probability < p_gg
channel_state = 1;
else
channel_state = 0;
state_sequence(end + 1) = state_visit_counter + 'x Good';
state_visit_counter = 0;
end
% flip the bit with probability e_g
if bit_error_probability < e_g
received_bit = 1 - current_bit;
else
received_bit = current_bit;
end
else
state_sequence(it) = 'Bad';
% change channel to good with probability of p_bg
if channel_change_probability < p_bg
channel_state = 1;
state_sequence(end + 1) = state_visit_counter + 'x Bad';
state_visit_counter = 0;
else
channel_state = 0;
end
@@ -64,15 +74,25 @@ for it = 1 : bits_array_len
% BER and Gap
if current_bit ~= received_bit
bit_error_rate_counter = bit_error_rate_counter + 1;
gap_size_tracker(end + 1) = current_gap_size;
current_gap_size = 0;
gap_tracker(:, end + 1) = [gap_begin; it; it - gap_begin - 1];
gap_begin = it;
end
current_gap_size = current_gap_size + 1;
end
bit_error_rate = bit_error_rate_counter / bits_array_len
gap_tracker(:, 1) = []; % trim first gap, this is a fault entry by design
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);
xlabel('Gap size')
ylabel('Frequency')
title('Histogram of gap sizes between consecutive errors')
disp(state_sequence)
disp(bit_error_rate)
% limit gap size to 500 in histogram
% for pdf, 1 - 2 sites, describe what i did and what the results were and
% are