8a02a1bfa95fb302444bca45019cc4b5a88826bf
[scilab.git] / scilab / modules / cacsd / macros / prbs_a.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) INRIA -
3 //
4 // Copyright (C) 2012 - 2016 - Scilab Enterprises
5 //
6 // This file is hereby licensed under the terms of the GNU GPL v2.0,
7 // pursuant to article 5.3.4 of the CeCILL v.2.1.
8 // This file was originally licensed under the terms of the CeCILL v2.1,
9 // and continues to be available under such terms.
10 // For more information, see the COPYING file which you should have received
11 // along with this program.
12
13 function [u]=prbs_a(n,nc,ids)
14     //generation of pseudo random binary sequences
15     //u=[u0,u1,...,u_(n-1)];
16     //u takes values in {-1,1} and changes at most nc times its sign.
17     //ids can be used to fix the date at which u must change its sign
18     //ids is then an integer vector with values in [1:n].
19     //!
20     [lhs,rhs]=argn(0)
21     if rhs <=2,
22         rand("uniform");
23         yy= int(min(max(n*rand(1,nc),1*ones(1,nc)),n*ones(1,nc)));
24         ids=gsort(yy);ids=[n,ids,1];
25     else
26         [n1,n2]=size(ids);
27         ids=[n,min(n*ones(ids),max(gsort(ids),1*ones(ids))),1];
28     end
29     u= zeros(1,n);
30     [n1,n2]=size(ids);
31     val=1;
32     for i=1:n2-1,
33         if ids(i)<>ids(i+1);
34             u(ids(i+1):ids(i))=val*ones(ids(i+1):ids(i));val=-1*val;
35         end
36     end
37 endfunction