hawxgamer

Untitled

Oct 14th, 2016
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.25 KB | None | 0 0
  1. close all; clear; clc
  2.  
  3. %% Parameter
  4.  
  5. w = 2;
  6. fs = 44100;
  7. N = 3001;
  8.  
  9. Q = 2/2^w;
  10.  
  11. %% Eingangssignale
  12.  
  13. f = 1000;
  14. A = 0.5;
  15.  
  16. x = A * sin(2*pi*[0:N-1]*f/fs);
  17.  
  18.  
  19. %% Dither erzeugen
  20.  
  21. % d(n) = d(n) - d(n-1)
  22.  
  23. d_rect = Q/2 * (2*rand(1,N+1)-1);
  24. d_HP = d_rect(2:N+1) - d_rect(1:N);
  25.  
  26. % hist(d_rect)
  27. % hist(d_HP)
  28. % max(d_HP)
  29.  
  30. %% Quantisierung auf w bit
  31.  
  32. bUseDither = true;
  33.  
  34. for iC = 1:N
  35.  
  36. if bUseDither
  37. xqr(iC) = Q * floor( (x(iC)+d_HP(iC)) / Q + 0.5 );
  38. else
  39. xqr(iC) = Q * floor(x(iC) / Q + 0.5 );
  40. end
  41. end
  42.  
  43. er = x -xqr;
  44.  
  45. %% Zeigsignal darstellen
  46.  
  47. figure('Name', 'Time signal');
  48. subplot(211)
  49. plot(0:N-1, x, 'b.-', 'DisplayName', 'in')
  50. grid on; hold on;
  51. plot(0:N-1, xqr, 'ro-', 'DisplayName', 'quantized')
  52. legend('show', 'Location', 'Best');
  53. xlabel('n \rightarrow')
  54.  
  55. subplot(212)
  56. plot(0:N-1, er, 'k', 'DisplayName', 'Quantisation Error')
  57.  
  58. %% Spektrum
  59.  
  60. Nfft = 1024;
  61.  
  62. Xdb = 10*log10( 1/(Nfft) * abs( fft(x,Nfft) ) );
  63. Xqrdb = 10*log10( 1/(Nfft) * abs( fft(xqr,Nfft) ) );
  64.  
  65. fFFT = fs * (0:Nfft-1)/Nfft;
  66.  
  67. figure('Name', 'Spectrum');
  68. plot(fFFT,Xdb, 'b.-', 'DisplayName', 'in')
  69. grid on; hold on;
  70. plot(fFFT,Xqrdb, 'ro-', 'DisplayName', 'in')
  71. legend('show', 'Location', 'Best');
  72. xlabel('n \rightarrow')
Advertisement
Add Comment
Please, Sign In to add comment