File: RateDematch.m

package info (click to toggle)
codec2 1.2.0-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 76,376 kB
  • sloc: ansic: 436,819; cpp: 2,091; objc: 1,736; sh: 1,510; python: 1,405; asm: 683; makefile: 605
file content (49 lines) | stat: -rw-r--r-- 1,706 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
function y = RateDematch( x, X_i, e_ini, e_plus, e_minus );
% RateDematch reverses the basic UMTS/HSDPA Rate Matching algorithm
%
% The calling syntax is:
%     y = RateDematch( x, X_i, e_ini, e_plus, e_minus );
%
%     y = depunctured output (length X_i)
%
%     x = input consisting of received/punctured bits
%     X_i = length of the depunctured output
%     e_ini = parameter used by algorithm
%     e_plus = parameter used by algorithm
%     e_minus = parameter used by algorithm
%
% Copyright (C) 2005, Matthew C. Valenti
%
% Last updated on Nov. 28, 2005
%
% Function RateDematch is part of the Iterative Solutions Coded Modulation
% Library (ISCML).  
%
% The Iterative Solutions Coded Modulation Library is free software;
% you can redistribute it and/or modify it under the terms of 
% the GNU Lesser General Public License as published by the 
% Free Software Foundation; either version 2.1 of the License, 
% or (at your option) any later version.
%
% This library is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
% Lesser General Public License for more details.
%
% You should have received a copy of the GNU Lesser General Public
% License along with this library; if not, write to the Free Software
% Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
e = e_ini;
y_index = 1;

for m=1:X_i
    e = e - e_minus;
    if (e<=0)        
        % mark for puncturing
        e = e + e_plus;
        y(m) = 0;
    else
        y(m) = x(y_index);
        y_index = y_index + 1;
    end
end