Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- clear all;
- close all;
- %%% Dane %%%
- f1 = 42170; % czestotliwosc drugiej sinusoidy
- f2 = 44730; % czestotliwosc drugiej sinusoidy
- fp = lcm(f1,f2); % czestotliwosc probkowania mikrofonu - mozee byc inna, ale:
- % ^ lmc() to najmniejsza wspolna wielokrotnosc
- % czestotliwosci
- % ^ przyda sie, zeby moc wygenerowac obie sinusoidy o dokl‚adnie ustalonej dlugosci - inne wartosci tego nie grawantuja…
- % ^ jezeli chcielibysmy wybrac inna…, to musi byc co najmniej dwukrotnie wieksza od czestotliwosci najwyzszej sinusoidy
- d = 8; % ilosc okresow sinusoidy
- p1 = [0,0]; % polozenie pierwszego glosnika
- p2 = [4,0]; % polozenie drugiego glosnika
- p0 = [1,2]; % polozenie mikrofonu
- l1 = norm(p1-p0); % odleglosc pierwszego glosnika od mikrofonu
- l2 = norm(p2-p0); % odleglosc drugiego glosnika od mikrofonu
- v = 340; % preskosc dzwieku
- %%% generowanie sygnalow z glosnikow %%%
- N1 = d * fp/f1; % ilosc prołbek pierwszego sygnalu
- t1 = 0:1/fp:(N1-1)/fp; % generowanie osi czasu
- sig1 = sin(2*pi*f1*t1); % generowanie pierwszej sinusoidy
- N2 = d * fp/f2; % ilosc probek drugiego sygnalu
- t2 = 0:1/fp:(N2-1)/fp; % generowanie osi czasu
- sig2 = sin(2*pi*f2*t2); % generowanie drugiej sinusoidy
- figure(1);
- subplot(211);
- plot(t1,sig1,'b');
- xlabel('czas[s]');
- ylabel('pierwszy sygnal');
- subplot(212);
- plot(t2,sig2,'b');
- xlabel('czas[s]');
- ylabel('drugi sygnal');
- %%% generowanie opóźnienia %%%
- t01 = l1/v; % czas potrzebny pierwszemu sygnałowi na dotarcie do glosnika
- d1 = round(t01*fp); % ilosc prółbek, odpowiadającym opóźnieniu pierwszego sygnału
- delay1 = zeros(1,d1); % sygnał opóźnienia
- t02 = l2/v; % czas potrzebny drugiemu sygnałowi na dotarcie do gołośnikad
- d2 = round(t02*fp); % ilość próbek odpowiadającym opóźnieniu drugiego sygnału
- delay2 = zeros(1,d2); % sygnał opóźnienia
- %%% dodawanie opóźnienia %%%
- dsig1 = [delay1 sig1]; % sygnał z opóźnieniem
- dt1 = 0:1/fp:(length(dsig1)-1)/fp; % generowanie osi czasu
- dsig2 = [delay2 sig2]; % sygnał z opóźnieniem
- dt2 = 0:1/fp:(length(dsig2)-1)/fp; % generowanie osi czasu
- figure(2);
- subplot(211);
- plot(dt1,dsig1,'b');
- xlabel('czas[s]');
- ylabel('pierwszy sygnal z opoznieniem');
- subplot(212);
- plot(dt2,dsig2,'b');
- xlabel('czas[s]');
- ylabel('drugi sygnal z opoznieniem')
- %%% sumowanie sygnałów %%%
- if (length(dsig2) <= length(dsig1))
- result = dsyg1+[dsig2 zeros(1,length(dsig1) - length(dsig2))]; % sygnał zarejestrowany przez mikrofon
- dt = dt1;
- else
- result = dsig2+[dsig1 zeros(1,length(dsig2) - length(dsig1))]; % sygnał zarejestrowany przez mikrofon
- dt = dt2;
- end
- figure(3);
- plot(dt,result,'b');
- xlabel('czas[s]');
- ylabel('sygnal zarejestrowany przez mikrofon')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement