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

در مخابرات٬ کدهای کانولوشنال (به انگلیسی: 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.

پیوند به بیرون[ویرایش]

منابع[ویرایش]