Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Systemy multimedialne
- Wygeneruj sygnał sinusoidalny i prostokątny dla częstotliwości tonów a1, a2 i c3 (440, 880, 1046.5 Hz). Wyświetl tony osobno a następnie zsumowane. Zaobserwuj widmo sygnałów zsumowanych (help fft). Zsumuj ze sobą wszystkie sygnały i dodaj szum. Zaobserwuj widmo sygnału. Czym różni się to widmo od poprzedniego.
- Przebiegi sinusoidalne
- clear;
- N=100 ; %Ilosc probek
- A=10; %Amplituda sygnalu
- fx=440 ; %Czestotliwosc tonu
- fp=44105 ; %Czestotliwosc
- dt=1/fp; %Okres próbkowania
- t=dt*(0:N-1); %Wektor chwil próbkowania
- Sin1=A*sin(2*pi*fx*t); %Utworzenie sygnalu o czestotliwosci tonu 440Hz
- fx=880 ;
- Sin2=A*sin(2*pi*fx*t); %Utworzenie sygnalu o czestotliwosci tonu 880Hz
- fx=1046.5;
- Sin3=A*sin(2*pi*fx*t); %Utworzenie sygnalu o czestotliwosci tonu 1046.5Hz
- %Wyswietlenie przebiegow utworzonych sygnalow
- %Polecenie subplot umożliwia wyświetlenie wszystkich wykresów w jednym oknie
- subplot(411);plot(t,Sin1,'m'); grid; title('Sygnał Sin1(t)'); xlabel('czas [s]'); %pause
- subplot(412);plot(t,Sin2,'m'); grid; title('Sygnał Sin2(t)'); xlabel('czas [s]'); %pause
- subplot(413);plot(t,Sin3,'m'); grid; title('Sygnał Sin3(t)'); xlabel('czas [s]'); %pause
- subplot(414);plot(t,Sin1+Sin2+Sin3,'m'); grid; title('Sygnał suma(t)'); xlabel('czas [s]'); %pause
- Przebiegi prostokątne
- clear;
- N=100 ; %Ilosc probek
- A=10; %Amplituda sygnalu
- fx=440 ; %Czestotliwosc tonu
- fp=44105 ; %Czestotliwosc
- dt=1/fp; %Okres próbkowania
- t=dt*(0:N-1); %Wektor chwil próbkowania
- Pro1=A*square(2*pi*fx*t); %Utworzenie sygnalu o czestotliwosci tonu 440Hz
- fx=880 ;
- Pro2=A*square(2*pi*fx*t); %Utworzenie sygnalu o czestotliwosci tonu 880Hz
- fx=1046.5;
- Pro3=A*square(2*pi*fx*t); %Utworzenie sygnalu o czestotliwosci tonu 1046.5Hz
- %Wyswietlenie przebiegow utworzonych sygnalow
- %Polecenie subplot umożliwia wyświetlenie wszystkich wykresów
- %w jednym oknie
- subplot(411);plot(t,Pro1,'m'); grid; title('Sygnał Sin1(t)'); xlabel('czas [s]'); %pause
- subplot(412);plot(t,Pro2,'m'); grid; title('Sygnał Sin2(t)'); xlabel('czas [s]'); %pause
- subplot(413);plot(t,Pro3,'m'); grid; title('Sygnał Sin3(t)'); xlabel('czas [s]'); %pause
- subplot(414);plot(t,Pro1+Pro2+Pro3,'m'); grid; title('Sygnał suma(t)'); xlabel('czas [s]'); %pause
- Zarówno dla przebiegów sinusoidalnych jak i prostokątnych większa częstotliwość sygnału powoduje zwiększenie się liczby okresów poszczególnych sygnałów.
- Suma sygnałów sinusoidalnych jak i prostokątnych powoduje otrzymanie jednego sygnału o częstotliwości równej najwyższej częstotliwości sygnału, który został zsumowany z innymi przebiegami oraz o amplitudzie
- Równej sumie amplitud wszystkich zsumowanych sygnałów.
- Widmo zsumowanych sygnałów
- PSin=Sin1+Sin2+Sin3; %Polaczenie sygnalow sinusoidalnych
- PPro=Pro1+Pro2+Pro3; %Polaczenie sygnalow prostokatnych
- PSyg=PSin+PPro; %Polaczenie polaczonych sygnalow
- subplot(311);plot(t,fft(PSin),'m'); grid; title('Sygnal PSin(t)'); xlabel('czas [s]');
- subplot(312);plot(t,fft(PPro),'m'); grid; title('Sygnal PPro(t)'); xlabel('czas [s]');
- subplot(313);plot(t,fft(PSyg),'m'); grid; title('Sygnal PSyg(t)'); xlabel('czas [s]');
- Dla przebiegu sinusoidalnego widmo uzyskane za pomocą szybkiej transformaty Fouriera przedstawia prążki znajdujące się w pierwszym i ostatnim zakresie częstotliwości.
- Dla przebiegu prostokątnego uzyskane widmo oprócz prążków odpowiadającym przebiegowi sinusoidalnego widoczne są także inne prążki wynikające z właściwości sygnałów prostokątnych.
- Połączenie sygnałów sinusoidalnych i prostokątnych pozwala na otrzymanie widma przybliżonego do widma sygnałów prostokątnych. Prążki w środkowym odcinku widma mają mniejszą amplitudę co jest spowodowane wpływem sygnału sinusoidalnego.
- Widmo z szumem
- Szum=2*rand(1,N);
- PSygSz=PSyg+Szum;
- subplot(211);plot(t,fft(PSyg),'m'); grid; title('Sygnal PSyg(t)'); xlabel('czas [s]');
- subplot(212);plot(t,fft(PSygSz),'m');grid; title('Sygnal PSygSz(t)'); xlabel('czas [s]');
- Szum=5*rand(1,N);
- PSygSz=PSyg+Szum;
- subplot(211);plot(t,fft(PSyg),'m'); grid; title('Sygnal PSyg(t)'); xlabel('czas [s]');
- subplot(212);plot(t,fft(PSygSz),'m');grid; title('Sygnal PSygSz(t)'); xlabel('czas [s]');
- Dodanie szumu to sygnałów sinusoidalnego i prostokątnego powoduje uzyskanie widma w którym prążki dla poszczególnych etapów sygnału są bardziej widoczne. Dotyczy to w szczególności sygnałów sinusoidalnych w ich środkowym momencie przebiegu.
- Dodanie szumu powoduje zmianę widma utworzonego sygnału
- Badanie odpowiedzi impulsowej filtru
- clear
- echo on
- % Odpowied impulsowa filtru IIR 2-rzędu
- % Algorytm opisany rownaniem różnicowym
- %
- echo off
- % Współczynniki filtracji
- f=880;
- fp=11025;
- k=tan(pi*f/fp); %sprawd wpływ wartoci tego wsp. na odpowied imp.
- b(1)=1/(1+sqrt(2)*k+k^2);
- b(2)=-2/(1+sqrt(2)*k+k^2);
- b(3)=1/(1+sqrt(2)*k+k^2);
- a(1)=1;
- a(2)=2*(k^2-1)/(1+sqrt(2)*k+k^2);
- a(3)=(1-sqrt(2)*k+k^2)/(1+sqrt(2)*k+k^2);
- % Inicjalizacja próbek odpowiedzi
- xh1=0;xh2=0;
- yh1=0;yh2=0;
- % Sygnał wejciowy: skok jednostkowy
- N=40; % Długoć sygnału
- x(N)=0;x(1)=1;
- % Algorytm próbka po próbce
- for n=1:N
- y(n)=b(1)*x(n) + b(2)*xh1 + b(3)*xh2 - a(2)*yh1 - a(3)*yh2;
- xh2=xh1;xh1=x(n);
- yh2=yh1;yh1=y(n);
- end;
- % Wyniki
- subplot(2,1,1)
- stem(0:1:length(x)-1,x,'.');axis([-0.6 length(x)-1 -1.2 1.2]);
- xlabel('n \rightarrow');ylabel('x(n) \rightarrow');
- subplot(2,1,2)
- stem(0:1:length(x)-1,y,'.');axis([-0.6 length(x)-1 -1.2 1.2]);
- xlabel('n \rightarrow');ylabel('y(n) \rightarrow');
- Filtry
- Filtr Butterworha II rzędu
- [Z,P,K] = butter(4,0.5,'low');
- [Sos,G] = Zp2Sos(Z,P,K);
- Hd = dfilt.df2tsos(Sos,G);
- %fvtool(Hd,Sin2);
- %fvtool(Hd,Sin3);
- [B,A]=butter(2,0.1,'low');
- S=filter(B,A,PSin);
- fvtool(Hd);
- %S=filter(Sos,G,PSin);
- subplot(211);plot(t,PSin,'m'); grid; title('Sygnal PSin(t)'); xlabel('czas [s]');
- subplot(212);plot(t,S,'m'); grid; title('Sygnal S(t)'); xlabel('czas [s]'
- [Z,P,K] = butter(4,0.01,'low');
- [Sos,G] = Zp2Sos(Z,P,K);
- Hd = dfilt.df2tsos(Sos,G);
- %fvtool(Hd,Sin2);
- %fvtool(Hd,Sin3);
- [B,A]=butter(2,0.01,'low');
- S=filter(B,A,PSin);
- fvtool(Hd);
- %S=filter(Sos,G,PSin);
- subplot(211);plot(t,PSin,'m'); grid; title('Sygnal PSin(t)'); xlabel('czas [s]');
- subplot(212);plot(t,S,'m'); grid; title('Sygnal S(t)'); xlabel('czas [s]');
- Filtr Butterworha IV rzędu
- [Z,P,K] = butter(4,0.1,'low');
- [Sos,G] = Zp2Sos(Z,P,K);
- Hd = dfilt.df2tsos(Sos,G);
- %fvtool(Hd,Sin2);
- %fvtool(Hd,Sin3);
- [B,A]=butter(4,0.1,'low');
- S=filter(B,A,PSin);
- fvtool(Hd);
- %S=filter(Sos,G,PSin);
- subplot(211);plot(t,PSin,'m'); grid; title('Sygnal PSin(t)'); xlabel('czas [s]');
- subplot(212);plot(t,S,'m'); grid; title('Sygnal S(t)'); xlabel('czas [s]');
- [Z,P,K] = butter(4,0.1,'low');
- [Sos,G] = Zp2Sos(Z,P,K);
- Hd = dfilt.df2tsos(Sos,G);
- %fvtool(Hd,Sin2);
- %fvtool(Hd,Sin3);
- [B,A]=butter(4,0.01,'low');
- S=filter(B,A,PSin);
- fvtool(Hd);
- %S=filter(Sos,G,PSin);
- subplot(211);plot(t,PSin,'m'); grid; title('Sygnal PSin(t)'); xlabel('czas [s]');
- subplot(212);plot(t,S,'m'); grid; title('Sygnal S(t)'); xlabel('czas [s]');
- Filtr II rzędu Butterworha górnoprzepustowy
- [Z,P,K] = butter(4,0.1,'high');
- [Sos,G] = Zp2Sos(Z,P,K);
- Hd = dfilt.df2tsos(Sos,G);
- %fvtool(Hd,Sin2);
- %fvtool(Hd,Sin3);
- [B,A]=butter(4,0.1,'high');
- S=filter(B,A,PSin);
- fvtool(Hd);
- %S=filter(Sos,G,PSin);
- subplot(211);plot(t,PSin,'m'); grid; title('Sygnal PSin(t)'); xlabel('czas [s]');
- subplot(212);plot(t,S,'m'); grid; title('Sygnal S(t)'); xlabel('czas [s]');
- [Z,P,K] = butter(4,0.1,'high');
- [Sos,G] = Zp2Sos(Z,P,K);
- Hd = dfilt.df2tsos(Sos,G);
- %fvtool(Hd,Sin2);
- %fvtool(Hd,Sin3);
- [B,A]=butter(4,0.5,'high');
- S=filter(B,A,PSin);
- fvtool(Hd);
- %S=filter(Sos,G,PSin);
- subplot(211);plot(t,PSin,'m'); grid; title('Sygnal PSin(t)'); xlabel('czas [s]');
- subplot(212);plot(t,S,'m'); grid; title('Sygnal S(t)'); xlabel('czas [s]');
- Filtr IV rzędu Butterworha pasmowoprzepustowy
- [Z,P,K] = butter(4,[0.1,0.9],'stop');
- [Sos,G] = Zp2Sos(Z,P,K);
- Hd = dfilt.df2tsos(Sos,G);
- %fvtool(Hd,Sin2);
- %fvtool(Hd,Sin3);
- [B,A]=butter(4,[0.05,0.95],'stop');
- S=filter(B,A,PSin);
- fvtool(Hd);
- %S=filter(Sos,G,PSin);
- subplot(211);plot(t,PSin,'m'); grid; title('Sygnal PSin(t)'); xlabel('czas [s]');
- subplot(212);plot(t,S,'m'); grid; title('Sygnal S(t)'); xlabel('czas [s]');
- [Z,P,K] = butter(4,[0.05,0.95],'stop');
- [Sos,G] = Zp2Sos(Z,P,K);
- Hd = dfilt.df2tsos(Sos,G);
- %fvtool(Hd,Sin2);
- %fvtool(Hd,Sin3);
- [B,A]=butter(4,[0.05,0.95],'stop');
- S=filter(B,A,PSin);
- fvtool(Hd);
- %S=filter(Sos,G,PSin);
- subplot(211);plot(t,PSin,'m'); grid; title('Sygnal PSin(t)'); xlabel('czas [s]');
- subplot(212);plot(t,S,'m'); grid; title('Sygnal S(t)'); xlabel('czas [s]');
- Pobierz plik acoustic.wav i wyświetl/odegraj go, poznaj jego parametry.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement