diff --git a/1sem/octave/05/calc_info.m b/1sem/octave/05/calc_info.m index 0b07748..c2bccc3 100644 --- a/1sem/octave/05/calc_info.m +++ b/1sem/octave/05/calc_info.m @@ -8,15 +8,11 @@ function [b,n] = calc_info(msg, alph, alph_p) b = 0; for i = 1:l_msg - flag = false; - for j = 1:l_alph - if msg(i) == alph(j) - flag = true; - b -= log(alph_p(j)); - break - endif - endfor - if ~flag + mask = alph == msg(i); + if any(mask) + comp = alph_p(mask); + b -= log2(comp); + else warning("[WARN] Symbol '%s' (at pos. %d from msg) not found in alphabet", msg(i), i) endif endfor diff --git a/1sem/octave/05/main.m b/1sem/octave/05/main.m index c307dd6..d52674d 100644 --- a/1sem/octave/05/main.m +++ b/1sem/octave/05/main.m @@ -17,7 +17,7 @@ msg = gen_msg(ralph, 100); dlmwrite("msg.txt", msg, ''); #stage 7 -[b, n] = calc_info(msg, alph, ralph); +[b, n] = calc_info(msg, alph, ralph) #stage 8 avg_b = b / length(msg);