your code is very well!! But there is a thing that I don't understand and it is: I don't understand as you encode P1 and P0. I have readed the description in page 2 and 3 of your paper, but I don't understand, Could you explain me it? And as you implements it in the code?
Hi Long
I have not checked if there is any difference in the performance if we use extrinsic information.
If you want to use extrinsic information, just substract the intrinsic term given on page 4 of
http://home.iitk.ac.in/~ysoniwal/Term_Paper_Reports/EE624.pdf
from aposteriori information.
As from your code, the information you exchanged between two decoders is the a-posteriori information not extrinsic information as in theory. Is there any difference in the performance ? If I want to use extrinsic information in this case, how I can ? Thanks.
Hi Tongyang
In BCJR decoder we exclude the intrinsic information and pass the aposteriori probability from one decoder to another for subsequent detection
from your PDF report, you mentioned that only extrinsic information is exchanged between two BCJR decoders. However, in your MATLAB code, I think the exchanged information is the a-posteriori information. Is it correct? Thanks.
Yogesh, you should divide the SNR by 3 because the SNR is defined with respect to the energy per information bit (Eb), and not per coded bit (Es). This code has a rate of 1/3, right? Therefore, you need to consider the code rate when you corrupt the signal by noise.
Eb/No=(1/rate)*Es/No = (1/rate)*(mu^2)/(2*sigma^2)
Hey Yogesh. Are you sure the SNR scaling is correct in the turbo.m file? You assume a certain SNR, but you apply the same value to R0, R1 and R2, which is incorrect because you have not considered the code rate. The correct thing would be the following: instead
R0=sqrt(SNR(k))*mod_code_bit0+randn(1,N);
you should have written
R0=sqrt(1/3*SNR(k))*mod_code_bit0+randn(1,N);
because your code rate is 1/3.
By doing as you did the corruption is very less and your output BER is smaller.
Hi Yogesh.. i have an something to ask. actually whenever i'm increasing the snr gap, that is i'm changing it to 0.2 interval.. i am getting peaks .. like the graphs is shooting up and then coming down.. i wanted to know that is normal behaviour of turbo codes... i am getting little confused and even getting stressed as i am using your code as my base start for my dissertation .. please do lemme know about it.. please i am hope to hear from you soon
hi yogesh,
let's suppose that i have value "A"
I want to multiply the encoded data by it and than add noise then dividing the result by the same value then decode the resulting data:
suppose my data is X , and nose is N;
I want to do the following
s=X.*A
then add noise ss=s+N
then the data that will be decoded=ss./A
hello sir...
am doing project in increasing energy efficiency using turbo code.... i calculated Eb value for BPSK modulation... have to substitute the Eb value in turbo code.... how can i do it....
plz give me your ans to my mail id:
edalanand@gmail.com
why only has 3rd iteration? i saw picture has 4th iteration? can you update iteration higher? tks so much. can you send your updated code to my email: hobaominhtriet@gmail.com. tks you.
There are two encoders. Information bits are coded using convolution code for the first encoder and their permutation is coded using convolution code for the second encoder, but only one bit is used for second encoder. So RSC encoder is rate 1/3.
You have not downloaded 'parity_bit' function which is used by turbo.m . That's why this error is coming. Download all the other functions (alpha_1, beta_1,gamma_1, parity_bit, lappr) and then run turbo.m