کد کانولوشنال

در مخابرات، کدهای کانولوشنال  نوعی کد تصحیح خطا هستند که یک رشته‌ی m بیتی را به n بیت تبدیل می کنند که n ≥ m و m/n  نرخ کدگذاری است. این تبدیل٬ در هر لحظه تابعی از k نماد قبلی است.

کدهای کانولوشنال به طور گسترده در سامانه‌های مخابراتی کاربرد دارند٬ از جمله در مخابرات ماهواره‌ای و تلفن همراه. پیش از کدهای توربو٬ عملکرد این کدها به حد شنون نزدیکترین بود.

 پیاده‌سازی در متلب 
می‌توان این کدها را به راحتی در متلب پیاده‌سازی کرد. برای نمونه سیستم زیر را به این صورتی که در ادامه می‌آید  می‌توان شبیه‌سازی کرد:

در تصویر:

n1 = m1 + m0 + m-1
n2 = m0 + m-1
n3 = m1 + m-1.

    G1 = 7;% octal 7 corresponds to binary 111 n1 = m1 + m0 + m-1 
    G2 = 3;% octal 3 corresponds to binary 011 n1 = m0  + m-1 
    G3 = 5;% octal 5 corresponds to binary 101 n1 = m1  + m-1 
    constLen = 3;   % Constraint length 

    % Create the trellis that represents the convolutional code
    convCodeTrellis = poly2trellis(constLen, [ G1 G2 G3 ]);
    uncodedWord = [1 ];
    codedWord1 = convenc(uncodedWord, convCodeTrellis) 
    uncodedWord = [1 0 0 0];
    codedWord2 = convenc(uncodedWord, convCodeTrellis) 
خروجی می شود:

codedWord1 =

 1     0     1

codedWord2 =

 1     0     1     1     1     0     1     1     1     0     0     0

 کدهای توربو 
کدهای کانولوشنال که با الگوریتم ویتربی دیکد می‌شوند٬ در حال جایگزین شدن با کدهای توربو (از سال ۱۹۹۳) هستند که عملکرد آن‌ها  به حد شنون بسیار نزدیکتر است و الگوریتم دیکدینگ آن‌ها نیز از پیچیدگی محاسباتی بسیار کمتری از الگوریتم ویتربی برخوردار است.

 منابع 

 مطالعه بیشتر 

 پیوند به بیرون 
فصل ۴۸ کتاب برخط The on-line textbook: Information Theory, Inference, and Learning Algorithms, by David J.C. MacKay

رده:آشکارسازی و اصلاح خطا