Matlab:如何为QR码创建一个多项式生成器Reed Solomon

时间:2013-01-14 18:55:01

标签: matlab qr-code error-correction reed-solomon

我必须制作一个matlab程序,它应该创建一个QR码。

我的问题是Reed Solomon纠错

用户输入他想要的单词。 [...]我得到了一串我应该在多项式生成器中消失的数字(Reed Solomon)(我找到了一些非常好的网站:http://www.pclviewer.com/rs2/calculator.html

我希望它发生:例如我输入:32 91 11 120 209 114 220 77 67 64 236 17 236

[Reed Solomon生成多项式]

我想知道:168 72 22 82 217 54 156 0 46 15 180 122 16

我找到了函数rsenc comm.rsencoder gf ...但是不可能理解这些函数的操作。功能详细:http://www.mathworks.fr/fr/help/comm...n.html#fp12225

我尝试了这种类型的代码:

n = 255; k = 13; % Codeword length and message length
m = 8; % Number of bits in each symbol
msg = [32 91 11 120 209 114 220 77 67 64 236 17 236]; % Message is a Galois array.
obj = comm.RSEncoder(n, k);
c1 = step(obj, msg(1,:)');
c = [c1].';

他产生了一个255的字符串,而我想要13个输出。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我认为你犯了一个错误。

'n'是带有奇偶校验码的最终消息的长度。 'k'是消息的长度(符号数)

我想这会对你有所帮助:

clc, clear all;
M = 16;     % Modulation Order || same that Max value, at your case: 256! 2^m
hEnc = comm.RSEncoder;
hEnc.CodewordLength = M - 1; % Max = M-1, Min = 4, Must be greater than MessageLenght
hEnc.MessageLength = 13;  % Experiment change up and down value (using odd number)
hEnc.BitInput = false;
hEnc
t = hEnc.CodewordLength - hEnc.MessageLength;
frame = 2*hEnc.MessageLength; % multiple of MensagemLength
fprintf('\tError Detection (in Symbols): %d\n',t);
fprintf('\tError Correction: %.2f\n',t/2);
data = randi([0 M-1], frame, 1); % Create a frame with symbols range (0 to M-1)
encodedData = step(hEnc, data);  % encod the frame