Advertisement
Guest User

Compare KLT and kurtosis

a guest
Jul 18th, 2010
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.72 KB | None | 0 0
  1. global N = 2^20; # Number of samples
  2. R = 1/30; # Signal-to-noise ratio
  3. P = 2^10; # Signal period
  4. Q = 5; # Number of runs
  5. X = 2^13; # Block size
  6.  
  7. function klt( d )
  8. disp("Calculating autocorrelation...");
  9. fflush(stdout);
  10. y = autocor(d, 511);
  11. disp("Calculating Toeplitz matrix...");
  12. fflush(stdout);
  13. z = toeplitz(y);
  14. disp("Calculating eigenvalues...");
  15. fflush(stdout);
  16. [vctr,val] = eig(z);
  17. plot(val(find(val))(512:-1:480))
  18. endfunction
  19.  
  20. function r = kurt( d )
  21. global N;
  22. m = d-mean(d);
  23. for k = 1:N
  24. a(k) = m(k)^2;
  25. b(k) = a(k)^2;
  26. endfor
  27. r = ((sum(b)/N)/((sum(a)/N)^2)) - 3;
  28. endfunction
  29.  
  30. printf("Sample count: %d\n", N);
  31. printf("Block size: %d\n", X);
  32. printf("SNR: %f\n", R);
  33. printf("Signal period: %d\n", P);
  34. disp("");
  35. title(sprintf("%d samples, SNR=%f", N, R));
  36.  
  37. fd = fopen("random.bin");
  38. n = 0;
  39. s = sinewave(P,P)*R;
  40. x = 0;
  41. for k = 0:Q-1
  42. printf("Run: %d/%d\n", k+1, Q);
  43. fflush(stdout);
  44. for i = 1:N
  45. ii = mod(i-1,X)+1;
  46. if (ii == 1)
  47. b = fread(fd, X, "int32");
  48. msg = sprintf("Loading block: %d/%d...", (i-1)/X+1, N/X);
  49. printf(strcat(msg,strrep(blanks(length(msg))," ","\b"))); #Print message and back up cursor
  50. fflush(stdout);
  51. endif
  52. n(i) = b(ii)/2^31; #Convert b to value between 0 and 1
  53. x(i) = s(mod(i-1,P)+1) + n(i);
  54. endfor
  55.  
  56. disp("\nProcessing 'Noise'...");
  57. fflush(stdout);
  58. subplot(Q,2,2*k+1);
  59. klt(n);
  60. disp("Calculating kurtosis...");
  61. title(sprintf("Noise (Kurtosis: %f)",kurtosis(n)))
  62.  
  63. disp("Processing 'Signal plus noise'...");
  64. fflush(stdout);
  65. subplot(Q,2,2*k+2);
  66. klt(x);
  67. disp("Calculating kurtosis...");
  68. title(sprintf("Signal plus noise (Kurtosis: %f)",kurtosis(x)))
  69. endfor
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement