Related Articles

Related Articles

Uniquely Decodable Code using MATLAB
  • Last Updated : 02 Sep, 2020

A code is distinct if each codeword is recognizable from every other (i.e., the planning from source messages to codewords is coordinated). A distinct code is extraordinarily decodable if each codeword is recognizable when drenched in a grouping of codewords or if the first source arrangement can be remade consummately from the encoded binary sequence.

Test for Unique Decodability:

  1. Consider two codewords A and B. A is of k bits and B is of n bits(k<n), if the first k bits of B are identical to A, then A is called a prefix of B, the remaining last n-k bits are called as the dangling suffix. Example: A = 010, B = 01001, the dangling suffix is 01.
  2. Construct a list of all the code words, examine all pair of code words to see if any codeword is a prefix of another, whenever such a pair is present add a dangling suffix to the list unless you have added the same dangling suffix to the list in a previous iteration.
  3. Keep repeating the procedure for the extended list until all codewords are compared.


  • You get a dangling suffix which is a code word.
  • There is no dangling suffix present.
  • The dangling suffix is not a code word.
  • If you get point 5 as an outcome the code is not uniquely decodable.
  • In all other cases, it is uniquely decodable.


'0, 01, 011, 0111' is an Uniquely decodable code
'0, 1, 00, 11' is not an uniquely decodable code






% Given Code
code = {'0','01','011','0111'}; 
i = 1;
flag1 = 0;
% Storing the code in temp variable 
temp = code;  
% Create datastore
ds = {};  
while i < length(temp)
  j = 1;
  while j < length(temp)
    c1 = temp{i};
    c2 = temp{j};
    l1 = length(c1);
    l2 = length(c2);         
    % To find dangling suffix
    if l1 < l2
      if c1 == c2(1 : l1)
        % Extract dangling suffix after comparing codewords
        tsuffix = c2(l1 + 1 : l2);
        l = length(ds);
        % Append tsuffix to ds
        if l == 0
          % If no dangling suffix available then tsuffix 
          % is new dangling suffix  
          ds = {tsuffix}; 
          k = 1;
          while k <= l
            % Compare new tsuffix with 'k'th dangling suffix
            flag = strcmp(tsuffix, ds{k});
            if flag ~= 1; 
              k = k + 1;
          if flag == 0
            % Attach tsuffix to dangling suffix array
            ds = [ds {tsuffix}];
            l = length(ds);
        % Append tsuffix to code
        lt = length(temp);
        k = 1;
        while k <= lt
          % Compare each extracted dangling suffix 
          % with 'k'th original codeword
          flag = strcmp(tsuffix, temp{k});  
          if flag == 1
            flag1 = 1;
            disp('Code is not Uniquely decodable');
            k = k + 1;
        if flag == 0
          % Attach extracted dangling suffix array to codeword array
          temp = {temp(:) tsuffix};
          lt = length(temp);
    if flag1 == 1
    j = j + 1;
  if flag1 == 1
  i = i + 1;
if flag1 == 0
  disp('Code is Uniquely Decodable');



'0'    '01'    '011'    '0111'
Code is Uniquely Decodable

Attention reader! Don’t stop learning now. Get hold of all the important CS Theory concepts for SDE interviews with the CS Theory Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up
Recommended Articles
Page :