⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 myrsencode.m

📁 RS编码用MATLAB实现
💻 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 + -