33 lines
No EOL
730 B
Mathematica
33 lines
No EOL
730 B
Mathematica
pkg load communications;
|
|
|
|
#stage 6
|
|
V=33;
|
|
rand("state", V);
|
|
|
|
#stage 7
|
|
alph = char(['0':'9' 'A':'F']);
|
|
r = rand(1, 16);
|
|
ralph = r./sum(r);
|
|
save -ascii "hex.txt" ralph;
|
|
|
|
#stage 8
|
|
code = cellfun(@(c)char('0' + c), huffmandict(alph, ralph), 'UniformOutput', false);
|
|
dlmwrite('code.txt', char(code), '');
|
|
|
|
#stage 9
|
|
for i = 1:100
|
|
msg = gen_msg(ralph, 10);
|
|
encoded = encode_msg(msg, code);
|
|
decoded = decode_msg(encoded, code);
|
|
if ~strcmp(msg, decoded)
|
|
error("[ERR] Encoded message '%s' not equal to decoded variant '%s'!", msg, decoded)
|
|
end
|
|
end
|
|
|
|
m_len = alph_entropy(ralph);
|
|
a_len = avg_len(code, ralph);
|
|
rel_opt = m_len/a_len;
|
|
|
|
results = [a_len, m_len, min_bits(length(ralph)), rel_opt];
|
|
|
|
save -ascii "results.txt" results; |