You can choose the lenght of the power m that defines indirectly the lenght of the sequences, the seed and the primitive polynomial, you can also get the cross correlation matrix of the sequences.
A simple Kasami sequences generator program and lib implemented in Odin, that generates the sequences and generates the cross correlation matrix, with the peak of the auto correlation and the interval of the cross_correlation between sequences. All the correlations are implemented with a FFT so they are much faster.
This tool builds small-set Kasami sequences from an m-sequence and its decimated companion. For even m, it emits 2^(m/2 + 1) sequences, each of period 2^m - 1, with low cross-correlation properties useful in spread-spectrum and CDMA-style applications and some types of RADAR.
In the kasami_output.txt you can find the correlation matrix.
kasami_seqs_generator.exe <m> <seed> [polynomial_taps] [-file <out_path>]meven; period is2^m - 1.seednon-zero ( decimal or 0x... ).tapsare comma-separated zero-based tap positions for the primitive polynomial ( constant term is bit 0 ).fileoptional output file path ( default : kasami_output.txt ).
20 sample runs ( even m, primitive taps )
# m=4, taps x^4+x+1, len 15, sequences 8
kasami_seqs_generator.exe 4 1 0,1
# m=4, different seed, len 15, sequences 8
kasami_seqs_generator.exe 4 0x7 0,1
# m=6, taps x^6+x+1, len 63, sequences 16
kasami_seqs_generator.exe 6 1 0,1
# m=6, different seed, len 63, sequences 16
kasami_seqs_generator.exe 6 0x15 0,1
# m=8, taps x^8+x^6+x^5+x^4+1, len 255, sequences 32
kasami_seqs_generator.exe 8 1 0,3,4,5
# m=8, different seed, len 255, sequences 32
kasami_seqs_generator.exe 8 0xAB 0,3,4,5
# m=10, taps x^10+x^3+1, len 1023, sequences 64
kasami_seqs_generator.exe 10 1 0,3
# m=10, different seed, len 1023, sequences 64
kasami_seqs_generator.exe 10 0x155 0,3
# m=12, taps x^12+x^6+x^4+x+1, len 4095, sequences 128
kasami_seqs_generator.exe 12 1 0,1,4,6
# m=12, different seed, len 4095, sequences 128
kasami_seqs_generator.exe 12 0xACE 0,1,4,6
# m=14, taps x^14+x^5+x^3+x+1, len 16383, sequences 256
kasami_seqs_generator.exe 14 1 0,1,3,5
# m=14, different seed, len 16383, sequences 256
kasami_seqs_generator.exe 14 0x2A3 0,1,3,5
# m=16, taps x^16+x^5+x^3+x^2+1, len 65535, sequences 512
kasami_seqs_generator.exe 16 1 0,2,3,5
# m=16, different seed, len 65535, sequences 512
kasami_seqs_generator.exe 16 0xBEEF 0,2,3,5
# m=18, taps x^18+x^7+1, len 262143, sequences 1024
kasami_seqs_generator.exe 18 1 0,7
# m=18, different seed, len 262143, sequences 1024
kasami_seqs_generator.exe 18 0x12345 0,7
# m=20, taps x^20+x^3+1, len 1048575, sequences 2048
kasami_seqs_generator.exe 20 1 0,3
# m=20, different seed, len 1048575, sequences 2048
kasami_seqs_generator.exe 20 0xC0FFEE 0,3
# m=22, taps x^22+x+1, len 4194303, sequences 4096
kasami_seqs_generator.exe 22 1 0,1
# m=24, taps x^24+x^4+x^3+x+1, len 16777215, sequences 8192
kasami_seqs_generator.exe 24 0xABCDE 0,1,3,4
Notes
- All examples use primitive polynomials for their degrees; adjust taps if you prefer a different primitive.
- Kasami small-set size is
2^(m/2 + 1)sequences; each listed run emits that many sequences of the stated period.
# m=4, taps x^4+x+1, len 15, sequences 8
./kasami_seqs_generator.exe 4 1 0,1
Seq 00 ( len 15 ): 100010011010111
Seq 01 ( len 15 ): 101101101101101
Seq 02 ( len 15 ): 001111110111010
Seq 03 ( len 15 ): 111001000001100
Seq 04 ( len 15 ): 101001011000010
Seq 05 ( len 15 ): 011111101110100
Seq 06 ( len 15 ): 100100000110011
Seq 07 ( len 15 ): 010010110000101
Correlation matrix ( Walsh, mapping 0 -> +1, 1 -> -1 ) :
15.0000000 -5.0000000 -5.0000000 -5.0000000 03.0000000 -5.0000000 03.0000000 03.0000000
-5.0000000 15.0000000 -1.0000000 03.0000000 -1.0000000 03.0000000 -1.0000000 -5.0000000
-5.0000000 -1.0000000 15.0000000 -5.0000000 -1.0000000 03.0000000 -1.0000000 -5.0000000
-5.0000000 03.0000000 -5.0000000 15.0000000 03.0000000 -1.0000000 -5.0000000 -1.0000000
03.0000000 -1.0000000 -1.0000000 03.0000000 15.0000000 -5.0000000 -1.0000000 -5.0000000
-5.0000000 03.0000000 03.0000000 -1.0000000 -5.0000000 15.0000000 -5.0000000 -1.0000000
03.0000000 -1.0000000 -1.0000000 -5.0000000 -1.0000000 -5.0000000 15.0000000 -5.0000000
03.0000000 -5.0000000 -5.0000000 -1.0000000 -5.0000000 -1.0000000 -5.0000000 15.0000000
Diagonal ( self-correlation ) : 15.0000000
Cross-correlation range ( off-diagonal ) : [ -5.0000000, 3.0000000 ]
MIT Open Source License
Best regards,
Joao Carvalho