Adjusting Reed-Solomon code
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I want to adjust the parametres in the following Reed-Solomon code just to make the code work well with the size of encData equal to (1024*1). So may you help me to make size (encData)= 1024*1? (the code does not work here code run it with your Matlab program)
N = 63; % Codeword length
K = 51; % Message length
S = 39; % Shortened message length
M = 16; % Modulation order
numErrors = 200;
numBits = 1e7;
ebnoVec = (8:13)';
[ber0,ber1] = deal(zeros(size(ebnoVec)));
errorRate = comm.ErrorRate;
rsEncoder = comm.RSEncoder(N,K,'BitInput',true);
rsDecoder = comm.RSDecoder(N,K,'BitInput',true);
rate = K/N;
for k = 1:length(ebnoVec)
% Convert the coded Eb/No to an SNR. Initialize the error statistics
% vector.
snrdB = ebnoVec(k) + 10*log10(rate) + 10*log10(log2(M));
errorStats = zeros(3,1);
while errorStats(2) < numErrors && errorStats(3) < numBits
% Generate binary data.
txData = randi([0 1],K*log2(M),1);
% Encode the data.
encData = rsEncoder(txData);
% Apply 64-QAM modulation.
txSig = qammod(encData,M, ...
'UnitAveragePower',true,'InputType','bit');
% Pass the signal through an AWGN channel.
rxSig = awgn(txSig,snrdB);
% Demodulated the noisy signal.
demodSig = qamdemod(rxSig,M, ...
'UnitAveragePower',true,'OutputType','bit');
% Decode the data.
rxData = rsDecoder(demodSig);
% Compute the error statistics.
errorStats = errorRate(txData,rxData);
end
% Save the BER data, and reset the errorRate counter.
ber0(k) = errorStats(1);
reset(errorRate)
end
0 comentarios
Respuestas (1)
Prathamesh
el 22 de Sept. de 2023
Hi,
I understand that you are encountering the error when you are trying to adjust the parameters in the Reed-Solomon code.
The error is occurring because there is a mismatch between the dimensions of the input data and the requirements of the ‘comm.RSEncoder’ object. The ‘comm.RSEncoder’ expects the input data to have specific dimensions based on the ‘BitInput’ property, message length, codeword length, and primitive polynomial.
To resolve this issue, you can try to change the values of N, K, S, M in your code.
For example, I took these sample values respectively.
N = 130; % Codeword length
K = 100; % Message length
S = 70; % Shortened message length
M = 256; % Modulation order
The size of ‘encData’ obtained is equal to (1040*1).
You can try to tune these values in order to obtain the desired size of the ‘encData’.
Refer to the documentation of ‘comm.RSEncoder’ to get more information on how the values of N, K, S, M are to be selected.
0 comentarios
Ver también
Categorías
Más información sobre Error Detection and Correction en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!