Advertisement
worms005

PPS rysuj widmo

Nov 24th, 2016
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.12 KB | None | 0 0
  1. N = 1000; Fs = 100; f1 = 20; f2 = 22.05; n = (0:N-1)'/Fs;
  2. % sygnaly w dziedzinie czasu (mala litera)
  3. %x = sin(2 * pi * f1 * n) + sin(2 * pi * f2 * n);
  4. %x2 = sin(2 * pi * f2 * n);
  5. % sygnaly w dziedzinie czestotliwosci (wielka litera)
  6. %X = fft(x);
  7. %X2 = fft(x2); % przeciek widma!
  8. % pojedyncza czestotliwosc, ale sie "rozplywa"
  9. % po chlopsku: df = Fs/N = 0.1 Hz
  10. % funkcja Fouriera nie jest w stanie policzyc dla tej wartosci, wiec
  11. % jest przeciek widma
  12.  
  13. % lub: niepelna liczba okresow
  14. % fft zaklada, ze sygnal jest okresowy, wiec "przykleja"
  15. % dla f1 jest dobrze, dla f2 przy sklejeniu bedzie przeskok
  16.  
  17. %rysujwidmo(X2, Fs, 0, 'r*');
  18.  
  19. % metoda zminimalizowania: okienkowanie
  20. % x(t) * w(t) => splot => x(f) *. w(f)
  21. %w = hamming(N);
  22. %y = x .* w;
  23. %W = fft(w); Y = fft(y);
  24. %           g  r  b
  25. % wyciek stlumiony
  26. %rysujwidmo([X, W, Y], Fs);
  27. x = sin(2 * pi * f2 * n); X = fft(x);
  28. y = [x; zeros(N, 1)]; Y = fft(y); % Y = fft(x, 2 * N);
  29. % srednik - dodaje w pionie
  30.  
  31. rysujwidmo(X, Fs, 0, 'b.-'); hold on;
  32. rysujwidmo(Y, Fs, 0, 'r*-'); %hold off;
  33.  
  34. w = [ones(N, 1); zeros(N, 1)]; W = fft(w);
  35. rysujwidmo(W, Fs, 0, 'go-'); hold off;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement