Advertisement
worms005

szlachetko

Dec 1st, 2016
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 2.89 KB | None | 0 0
  1. clear all;
  2. close all;
  3.  
  4. %%% Dane %%%
  5. f1 = 42170;       % czestotliwosc drugiej sinusoidy
  6. f2 = 44730;       % czestotliwosc drugiej sinusoidy
  7. fp = lcm(f1,f2);  % czestotliwosc probkowania mikrofonu - mozee byc inna, ale:
  8.                   % ^ lmc() to najmniejsza wspolna wielokrotnosc
  9.                   % czestotliwosci
  10.                   % ^ przyda sie, zeby moc wygenerowac obie sinusoidy o dokl‚adnie ustalonej dlugosci - inne wartosci tego nie grawantuja…
  11.                   % ^ jezeli chcielibysmy wybrac inna…, to musi byc co najmniej dwukrotnie wieksza od czestotliwosci najwyzszej sinusoidy
  12.  
  13. d = 8;            % ilosc okresow sinusoidy
  14.  
  15. p1 = [0,0];       % polozenie pierwszego glosnika
  16. p2 = [4,0];       % polozenie drugiego glosnika
  17. p0 = [1,2];       % polozenie mikrofonu
  18.  
  19. l1 = norm(p1-p0); % odleglosc pierwszego glosnika od mikrofonu
  20. l2 = norm(p2-p0); % odleglosc drugiego glosnika od mikrofonu
  21.  
  22. v = 340;          % preskosc dzwieku
  23.  
  24. %%% generowanie sygnalow z glosnikow %%%
  25. N1 = d * fp/f1;         % ilosc prołbek pierwszego sygnalu
  26. t1 = 0:1/fp:(N1-1)/fp;  % generowanie osi czasu
  27. sig1 = sin(2*pi*f1*t1); % generowanie pierwszej sinusoidy
  28.  
  29. N2 = d * fp/f2;         % ilosc probek drugiego sygnalu
  30. t2 = 0:1/fp:(N2-1)/fp;  % generowanie osi czasu
  31. sig2 = sin(2*pi*f2*t2); % generowanie drugiej sinusoidy
  32.  
  33. figure(1);
  34. subplot(211);
  35. plot(t1,sig1,'b');
  36. xlabel('czas[s]');
  37. ylabel('pierwszy sygnal');
  38.  
  39. subplot(212);
  40. plot(t2,sig2,'b');
  41. xlabel('czas[s]');
  42. ylabel('drugi sygnal');
  43.  
  44. %%% generowanie opóźnienia %%%
  45. t01 = l1/v;           % czas potrzebny pierwszemu sygnałowi na dotarcie do glosnika
  46. d1 = round(t01*fp);   % ilosc prółbek, odpowiadającym opóźnieniu pierwszego sygnału
  47. delay1 = zeros(1,d1); % sygnał opóźnienia
  48.  
  49. t02 = l2/v;           % czas potrzebny drugiemu sygnałowi na dotarcie do gołośnikad
  50. d2 = round(t02*fp);   % ilość próbek odpowiadającym opóźnieniu drugiego sygnału
  51. delay2 = zeros(1,d2); % sygnał opóźnienia
  52.  
  53. %%% dodawanie opóźnienia %%%
  54. dsig1 = [delay1 sig1];              % sygnał z opóźnieniem
  55. dt1 = 0:1/fp:(length(dsig1)-1)/fp;  % generowanie osi czasu
  56.  
  57. dsig2 = [delay2 sig2];              % sygnał z opóźnieniem
  58. dt2 = 0:1/fp:(length(dsig2)-1)/fp;  % generowanie osi czasu
  59.  
  60. figure(2);
  61. subplot(211);
  62. plot(dt1,dsig1,'b');
  63. xlabel('czas[s]');
  64. ylabel('pierwszy sygnal z opoznieniem');
  65.  
  66. subplot(212);
  67. plot(dt2,dsig2,'b');
  68. xlabel('czas[s]');
  69. ylabel('drugi sygnal z opoznieniem')
  70. %%% sumowanie sygnałów %%%
  71. if (length(dsig2) <= length(dsig1))
  72.     result = dsyg1+[dsig2 zeros(1,length(dsig1) - length(dsig2))];               % sygnał zarejestrowany przez mikrofon
  73.     dt = dt1;
  74. else
  75.     result = dsig2+[dsig1 zeros(1,length(dsig2) - length(dsig1))];               % sygnał zarejestrowany przez mikrofon
  76.     dt = dt2;
  77. end
  78.  
  79. figure(3);
  80.  
  81. plot(dt,result,'b');
  82. xlabel('czas[s]');
  83. ylabel('sygnal zarejestrowany przez mikrofon')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement