summaryrefslogtreecommitdiff
path: root/macros/gfrepcov.sci
blob: 6e167175101cd9db15d724acae65d8f7b7e3bd59 (plain)
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
50
51
52
53
54
55
56
57
58
59
60
function q = gfrepcov(p)
//   This function represents a binary polynomial in standard ascending order format.

//   Calling Sequence
//   Q = GFREPCOV(P)

//   Description
//   Q = GFREPCOV(P) converts vector (P) to standard ascending
//   order format vector (Q), which is a vector that lists the coefficients in 
//   order of ascending exponents,  if P represents a binary polynomial 
//   as a vector of exponents with non-zero coefficients.

//   Examples
//   The matrix below represents the binary polynomial $1 + s + s^2 + s^4$
//   Implies output vector should be [1 1 1 0 1]
//   A=[0 1 2 4 ]
//   B=gfrepcov(A)
//   disp(B)
//   Also try A=[1 2 3 4 4] which is incorrect way of representing binary polynomial

//   See also
//   gfpretty

//   Authors
//   Pola Lakshmi Priyanka, IIT Bombay//

//*************************************************************************************************************************************//

//Input arguments 
[out_a,inp_a]=argn(0)

[row_p, col_p] = size(p);

// Error checking 
if ( isempty(p) | ndims(p)>2 | row_p > 1 )
    error('comm:gfrepcov: P should be a vector');
end
for j=1:col_p
if (floor(p(1,j))~=p(1,j) | abs(p(1,j))~=p(1,j)  )
    error('comm:gfrepcov: Elements of the vector should be non negative integers');
end
end

// Check if the given vector is in ascending order format, if not convert //
if max(p) > 1

// Check if P has any repetative elements.
    
    if (length(unique(p))~=length(p))
        error('comm:gfrepcov: Repeated elements in Vector');
    end
    q = zeros(1,max(p)+1);
    q(p+1) = 1;

else
    
    q = p;
    
end
endfunction