-
Notifications
You must be signed in to change notification settings - Fork 95
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Convolutional encoder output length #36
Comments
Hi Daria, It might be helpful to look at the encoder implementation to see what's happening here. Basically, we need the extra bits because of a flush op sent after the message to return the shift register state to all 0s. Most of the length is indeed given by msgbits * rate, and the flushed bits are given by (order + 1) * rate. The relevant loops are here Cheers |
Thank you, now it makes sense after reading those lines. And one more question: firstly I've tried to do some tests in Matlab and then to use libcorrect but I can't figure out why the outputs are different. I would like to use libcorrect in a project which requires the output to be exactly like in theory (to double or triple the number of bits depending on the rate). Is this possible with the current API and implementation? Thank you again for helping me :) |
Hmm, I'm actually not sure how the number of output bits ever could be just I don't have access to Matlab so I'm not familiar with its implementation so my best guess is that maybe it's omitting either the first The line in question is fetching precomputed, concatenated polynomial outputs from a shift register value. The table is filled by https://github.com/quiet/libcorrect/blob/master/src/convolutional/lookup.c#L14 . It simulates each possible shift register value into |
Hello and thanks to the autors for this library.
I am new to convolutional codes and I tried to understand the mechanism behind in order to use this library. So far, after reading the basics of encoding, I understood that the output should be twice the length of the input (in case of rate 1/2).
My questions is related to this function in encoder.c:
I don't understand the formula to calculate the encodedbits. Shouldn't it be something like msgbits*conv->rate ? Why do we send so many bits?
Could you please explain? It would be very helpful for me.
Thank you in advance,
Daria
The text was updated successfully, but these errors were encountered: