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

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

پیاده‌سازی در متلب

ویرایش

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

 
Img.1. Rate 1/3 non-recursive, non-systematic convolutional encoder with constraint length 3

در تصویر:

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

کدهای توربو

ویرایش

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

منابع

ویرایش

مطالعه بیشتر

ویرایش
  • Andrew Viterbi (۱۹۷۹). Principles of Digital Communications and Coding. McGraw-Hill.

پیوند به بیرون

ویرایش