📄 myrsencode.m
字号:
% 2007-5-22: 尝试RS码的系统编码实现
m = 8;
n = 255;
k = 239;
mess = randint(1, k, 2^m);
mess_gf = gf(mess, m);
code_gf = rsenc(mess_gf, n, k);
sum(mess_gf ~= code_gf(1:k)); % 2007-5-22: =0 则表示是系统编码,原信息符号在前
g_poly_gf = rsgenpoly(255, 239, [], 1); % 2007-5-22: 使用的产生多项式,高次在前
g_poly = zeros(1, n-k+1);
g_poly(1) = 1;
for k1 = 2:n-k+1
g_poly(k1) = sum((g_poly_gf(k1) == (0:255)).*(0:255));
end
p_poly = zeros(1, n-k);
for k1 = 1:k
k1
p_poly_pre = p_poly;
mess_s = myGF256_ADD(mess(k1), p_poly_pre(16));
p_poly(16) = myGF256_ADD(myGF256_MUL(mess_s, g_poly(2)), p_poly_pre(15));
p_poly(15) = myGF256_ADD(myGF256_MUL(mess_s, g_poly(3)), p_poly_pre(14));
p_poly(14) = myGF256_ADD(myGF256_MUL(mess_s, g_poly(4)), p_poly_pre(13));
p_poly(13) = myGF256_ADD(myGF256_MUL(mess_s, g_poly(5)), p_poly_pre(12));
p_poly(12) = myGF256_ADD(myGF256_MUL(mess_s, g_poly(6)), p_poly_pre(11));
p_poly(11) = myGF256_ADD(myGF256_MUL(mess_s, g_poly(7)), p_poly_pre(10));
p_poly(10) = myGF256_ADD(myGF256_MUL(mess_s, g_poly(8)), p_poly_pre(9));
p_poly(9) = myGF256_ADD(myGF256_MUL(mess_s, g_poly(9)), p_poly_pre(8));
p_poly(8) = myGF256_ADD(myGF256_MUL(mess_s, g_poly(10)), p_poly_pre(7));
p_poly(7) = myGF256_ADD(myGF256_MUL(mess_s, g_poly(11)), p_poly_pre(6));
p_poly(6) = myGF256_ADD(myGF256_MUL(mess_s, g_poly(12)), p_poly_pre(5));
p_poly(5) = myGF256_ADD(myGF256_MUL(mess_s, g_poly(13)), p_poly_pre(4));
p_poly(4) = myGF256_ADD(myGF256_MUL(mess_s, g_poly(14)), p_poly_pre(3));
p_poly(3) = myGF256_ADD(myGF256_MUL(mess_s, g_poly(15)), p_poly_pre(2));
p_poly(2) = myGF256_ADD(myGF256_MUL(mess_s, g_poly(16)), p_poly_pre(1));
p_poly(1) = myGF256_MUL(mess_s, g_poly(17));
% p_poly
% pause
end
code_my = [mess p_poly(n-k:-1:1)];
code_my = [mess p_poly];
p_poly(n-k:-1:1)
code_gf(k+1:n)
% 2007-5-22: 验证通过,与MATLAB结果一致
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -