mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-31 13:10:19 -04:00 
			
		
		
		
	Merge in ldpc work.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6468 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
		
							parent
							
								
									3b206b4fa8
								
							
						
					
					
						commit
						39ae2d156f
					
				| @ -1,4 +1,4 @@ | ||||
| sf4 160,80 ldpc, Eb/N0_dB, ngood, nundet, 10^6 trials | ||||
| sf4 160,80 ldpc 2x3/8x4 seed=3, Eb/N0_dB, ngood, nundet, 10^6 trials | ||||
| columns 2,3 decoder uses variable sigma, columns 4,5 decoder uses fixed sigma=0.9  | ||||
| -0.5 2906 0  10862 5 | ||||
| 0.0 18899 1  34663 6 | ||||
|  | ||||
| @ -1,2 +1,4 @@ | ||||
| 5.1 0.005   "(198,72) JTMSK"  | ||||
| 3.1 0.0003  "(160,80) LDPC" | ||||
| 3.9 0.15   "(198,72) JTMSK"  | ||||
| 2.7 0.003  "(174,87) LDPC" | ||||
| 5.6 0.00003  "(160,80) LDPC" | ||||
| 5.6 0.00008   "(140,80) LDPC" | ||||
|  | ||||
| @ -15,11 +15,13 @@ set logscale y | ||||
| plot [-1:6] [1e-6:1] \ | ||||
|    "160-80-sf4.results" using 1:(1000000-$2)/1000000 with linespoints lt 2 lw 2 pt 2, \ | ||||
|    "160-80-sf4.results" using 1:($3/1000000) with linespoints lt 2 lw 2 pt 2, \ | ||||
|    "160-80-sf4.results" using 1:(1000000-$4)/1000000 with linespoints lt 3 lw 2 pt 4, \ | ||||
|    "160-80-sf4.results" using 1:($5/1000000) with linespoints lt 2 lw 3 pt 4, \ | ||||
|    "ldpc-144-72-sf2.results" using 1:(1000000-$2)/1000000 with linespoints lt 3 lw 2 pt 5, \ | ||||
|    "ldpc-144-72-sf2.results" using 1:($3/1000000) with linespoints lt 3 lw 2 pt 5, \ | ||||
|    "jtmskcode.results" using 1:(1000000-$4)/1000000 with linespoints lt 1 lw 2 pt 7, \ | ||||
|    "jtmskcode.results" using 1:(100000-$2)/100000 with linespoints lt 1 lw 2 pt 7, \ | ||||
|    "jtmskcode.results" using 1:($5/1000000) with linespoints lt 1 lw 2 pt 7, \ | ||||
|    "140-80-sf5.results" using 1:(100000-$2)/100000 with linespoints lt 4 lw 2 pt 4, \ | ||||
|    "140-80-sf5.results" using 1:($3/100000) with linespoints lt 4 lw 2 pt 4, \ | ||||
|    "174-87-sf6.results" using 1:(1000000-$2)/1000000 with linespoints lt 5 lw 2 pt 5, \ | ||||
|    "174-87-sf6.results" using 1:($3/1000000) with linespoints lt 5 lw 2 pt 5, \ | ||||
|    "compare.lab" with labels | ||||
| exit | ||||
| #   "160-80-sf4.results" using 1:(1000000-$4)/1000000 with linespoints lt 3 lw 2 pt 4, \ | ||||
| #   "160-80-sf4.results" using 1:($5/1000000) with linespoints lt 2 lw 3 pt 4, \ | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| rate 1/2 constraint len 13, bpsk, ngood, nbad 10^5 trials, 10^6 trials | ||||
| -0.50  1470  4   | ||||
| -0.50  1470  4  | ||||
|  0.00  4403  2 43968 30 | ||||
|  0.50 11167  2 111824 33 | ||||
|  1.00 24082  1 238157 21 | ||||
| @ -7,7 +7,7 @@ rate 1/2 constraint len 13, bpsk, ngood, nbad 10^5 trials, 10^6 trials | ||||
|  2.00 63417  0 634824 14 | ||||
|  2.50 81290  1 812206 2 | ||||
|  3.00 92388  0 924507 2 | ||||
|  3.50 97560  0 | ||||
|  4.00 99390  0 | ||||
|  4.50 99864  0 | ||||
|  5.00 99977  0 | ||||
|  3.50 97560  0 975836 0 | ||||
|  4.00 99390  0 993832 0 | ||||
|  4.50 99864  0 998695 0 | ||||
|  5.00 99977  0 999771 0 | ||||
|  | ||||
| @ -1,32 +0,0 @@ | ||||
| #!/bin/sh | ||||
| # this script characterizes a single code over a narrow range of Eb/No | ||||
| # note relationship between noise standard deviation, sigma, and Eb/No: | ||||
| # Eb/No = 1/(2*R*sigma^2) | ||||
| # If R=1/2, then Eb/No = 1/sigma^2  Right? Check this.  | ||||
| 
 | ||||
| set -e  # Stop if an error occurs | ||||
| set -v  # Echo commands as they are read | ||||
| 
 | ||||
| #make-ldpc ldpc-160-80.pchk 80 160 3 evenboth 2x3/8x4 no4cycle | ||||
| 
 | ||||
| cp ldpc-160-80-2x3-8x4-sf4.pchk ldpc-160-80.pchk | ||||
| make-gen  ldpc-160-80.pchk ldpc-160-80.gen dense | ||||
| rand-src  ldpc-160-80.src 1 80x1000000 | ||||
| encode    ldpc-160-80.pchk ldpc-160-80.gen ldpc-160-80.src \ | ||||
|           ldpc-160-80.enc | ||||
| 
 | ||||
| rate=0.5 | ||||
| for i in `seq -1 10`; | ||||
| do | ||||
|   db=$(echo "scale=5; $i/2.0" | bc) | ||||
|   ebno=$(echo "scale=5; e(0.1*$db*l(10.0))" | bc -l) | ||||
|   sigma=$(echo "scale=5; 1/sqrt(2*$rate*$ebno)" | bc) | ||||
|   echo db $db ebno $ebno sigma $sigma | ||||
| 
 | ||||
|   transmit ldpc-160-80.enc ldpc-160-80.rec 1 awgn $sigma | ||||
|   decode   ldpc-160-80.pchk ldpc-160-80.rec ldpc-160-80.dec awgn 0.9\ | ||||
|          prprp 250 | ||||
|   verify   ldpc-160-80.pchk ldpc-160-80.dec ldpc-160-80.gen \ | ||||
|          ldpc-160-80.src  | ||||
| 
 | ||||
| done | ||||
							
								
								
									
										
											BIN
										
									
								
								lib/ldpc/jtmode_codes/ldpc-174-87-sf6.pchk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								lib/ldpc/jtmode_codes/ldpc-174-87-sf6.pchk
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										22
									
								
								lib/ldpc/jtmode_codes/ldpc-search
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										22
									
								
								lib/ldpc/jtmode_codes/ldpc-search
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,22 @@ | ||||
| #!/bin/sh | ||||
| # search for a good code | ||||
| n=160 | ||||
| k=72 | ||||
| m=$((n-k)) | ||||
| 
 | ||||
| set -e  # Stop if an error occurs | ||||
| 
 | ||||
| rand-src  ldpc.src 2 "$k"x1000000 | ||||
| 
 | ||||
| for i in `seq 1 1000` | ||||
| do | ||||
|   seed=$i | ||||
|   echo seed $seed | ||||
|   make-ldpc ldpc.pchk $m $n $seed evenboth 2x3/8x4 no4cycle | ||||
|   make-gen  ldpc.pchk ldpc.gen dense | ||||
|   encode    ldpc.pchk ldpc.gen ldpc.src ldpc.enc | ||||
|   transmit ldpc.enc ldpc.rec 1 awgn 0.8 | ||||
|   decode   ldpc.pchk ldpc.rec ldpc.dec awgn 0.80 prprp 250 | ||||
|   verify   ldpc.pchk ldpc.dec ldpc.gen ldpc.src | ||||
| done | ||||
| 
 | ||||
							
								
								
									
										38
									
								
								lib/ldpc/jtmode_codes/ldpc-waterfall
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										38
									
								
								lib/ldpc/jtmode_codes/ldpc-waterfall
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,38 @@ | ||||
| #!/bin/sh | ||||
| # this script characterizes a single code over a range of Eb/N0 | ||||
| # note relationship between noise standard deviation, sigma, and Eb/No: | ||||
| # Eb/No = 1/(2*R*sigma^2) | ||||
| # If R=1/2, then Eb/No = 1/sigma^2  | ||||
| 
 | ||||
| set -e  # Stop if an error occurs | ||||
| #set -v  # Echo commands as they are read | ||||
| 
 | ||||
| n=174 | ||||
| k=87 | ||||
| m=$((n-k)) | ||||
| seed=4 | ||||
| ntrials=1000000 | ||||
| 
 | ||||
| rate=$(echo "scale=5; $k/$n" | bc) | ||||
| echo n=$n k=$k rate=$rate m=$m | ||||
| 
 | ||||
| make-ldpc ldpc.pchk "$m" "$n" $seed evenboth 2x3/8x4 no4cycle | ||||
| 
 | ||||
| make-gen  ldpc.pchk ldpc.gen dense | ||||
| rand-src  ldpc.src 1 "$k"x"$ntrials" | ||||
| encode    ldpc.pchk ldpc.gen ldpc.src ldpc.enc | ||||
| 
 | ||||
| for i in `seq -1 10`; | ||||
| do | ||||
|   db=$(echo "scale=5; $i/2.0" | bc) | ||||
|   ebno=$(echo "scale=5; e(0.1*$db*l(10.0))" | bc -l) | ||||
|   sigma=$(echo "scale=5; 1/sqrt(2*$rate*$ebno)" | bc) | ||||
|   echo db $db ebno $ebno sigma $sigma | ||||
| 
 | ||||
|   transmit ldpc.enc ldpc.rec 1 awgn $sigma | ||||
|   decode   ldpc.pchk ldpc.rec ldpc.dec awgn $sigma\ | ||||
|          prprp 250 | ||||
|   verify   ldpc.pchk ldpc.dec ldpc.gen \ | ||||
|          ldpc.src  | ||||
| 
 | ||||
| done | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user