Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- % 154994 2 �liwowski Hubert
- clear all
- %------------------------------Modulator-------------------------
- N = 20; %d�ugo�� wektora wej�ciowego
- M = 20; %ilo�� pr�bek
- %Generowanie symboli
- Wektor_Wejsciowy = randi([0 1],1,N);
- %Wykres 1
- figure
- plot(1:1:N, Wektor_Wejsciowy, 'k*');
- title('Modulator - Wektor wej�ciowy');
- xlabel('Numer pr�bki');
- ylabel('Warto�� pr�bki');
- axis([1 N -0.5 1.5]);
- ax = gca;
- ax.YTick = [0 1];
- %Koniec 'Wykres 1'
- %Zamiana 0 na -1
- Wektor_Wejsciowy_bez0_Mprobek = zeros(1,N*M);
- for i=1:1:N
- if(Wektor_Wejsciowy(i) == 1)
- Wektor_Wejsciowy_bez0_Mprobek(1,1 + (i-1)*20:i*20) = ones([1,20]);
- elseif(Wektor_Wejsciowy(i) == 0)
- Wektor_Wejsciowy_bez0_Mprobek(1,1 + (i-1)*20:i*20) = -ones([1,20]);
- end
- end
- %Filtr Gausowski
- OdpowiedzImpulsowaFiltruGausowskiego = zeros(1,40);
- BT = 0.5;
- delta = sqrt(log10(2)/(2*pi*BT)); %Obliczenie delta
- krok = 0;
- for j=-M:1:M
- t = j/M;
- krok = krok + 1;
- OdpowiedzImpulsowaFiltruGausowskiego(1,krok) = exp((-t^2)/(2*(delta^2)))/(sqrt(2*pi)*delta);
- end
- %-----splot-----
- Wektor_Po_Filtrowaniu = conv(Wektor_Wejsciowy_bez0_Mprobek, OdpowiedzImpulsowaFiltruGausowskiego, 'same');
- %Wykres 2
- figure
- plot(1:1:M*N, Wektor_Po_Filtrowaniu);
- title('Modulator - Filtr Gaussa');
- xlabel('Numer pr�bki');
- ylabel('Warto�� pr�bki');
- %Koniec 'Wykres 2'
- %Ca�kowanie
- Wektor_Po_Calkowaniu = zeros(1, N*M);
- Wektor_Po_Calkowaniu(1,1) = Wektor_Po_Filtrowaniu(1,1);
- for i=2:1:N*M
- Wektor_Po_Calkowaniu(1,i) = Wektor_Po_Calkowaniu(1,i-1) + Wektor_Po_Filtrowaniu(1,i);
- end
- %Oblicznie sinusa z wektora po ca�kowaniu
- Wektor_Po_Sinus = zeros(1,N*M);
- Wektor_Po_Cosinus = zeros(1,N*M);
- for i=1:1:N*M
- Wektor_Po_Sinus(1,i) = sin(Wektor_Po_Calkowaniu(1,i)/100);
- Wektor_Po_Cosinus(1,i) = cos(Wektor_Po_Calkowaniu(1,i)/100);
- end
- %Obliczanie sinus�w oraz iloczynu z wektorem
- Sinus0 = zeros(1, M*N);
- Sinus90 = zeros(1, M*N);
- kat = 0;
- for n=1:1:N*M
- Sinus0(n) = sin(kat);
- Sinus90(n) = cos(kat);
- kat = kat + 0.4*pi;
- end
- Wektor_Po_Sinus0 = Wektor_Po_Sinus.*Sinus0;
- Wektor_Po_Sinus90 = Wektor_Po_Cosinus.*Sinus90;
- Wektor_Wyjsciowy = Wektor_Po_Sinus0 + Wektor_Po_Sinus90;
- %Wykres 3
- figure
- plot(1:1:M*N, Wektor_Wyjsciowy);
- title('Modulator - Wektor Wyjsciowy');
- xlabel('Numer pr�bki');
- ylabel('Warto�� pr�bki');
- %---------------DEMODULATOR----------------
- Wektor_Demodulator_Wejscie = Wektor_Wyjsciowy;
- %Mno�enie sinus0 i sinus90
- Wektor_Demodulator_Sinus0 = Wektor_Demodulator_Wejscie.*Sinus90;
- Wektor_Demodulator_Sinus90 = Wektor_Demodulator_Wejscie.*Sinus0;
- %Filtr Dolnoprzepustowy
- Filtr_Dolnoprzepustowy = zeros(1, N*M);
- kat = -20*pi;
- for n=1:1:N*M
- Filtr_Dolnoprzepustowy(n) = sin(kat)/kat;
- kat = kat + pi/10;
- end
- %Filtracja Filtem Dolnoprzepustowym
- Wektor_Demodulator_FDP_I = conv(Wektor_Demodulator_Sinus0, Filtr_Dolnoprzepustowy, 'same');
- Wektor_Demodulator_FDP_Q = conv(Wektor_Demodulator_Sinus90, Filtr_Dolnoprzepustowy, 'same');
- %Wykres 4
- figure
- plot(1:1:M*N, Wektor_Demodulator_FDP_I, 'k-', 1:1:M*N, Wektor_Demodulator_FDP_Q, 'r-');
- title('Demodulator - I i Q po filtrze dolnoprzepustowym');
- xlabel('Numer pr�bki');
- ylabel('Warto�� pr�bki');
- %R�niczki i odejmowanie
- Wektor_Demodulator_FDP_I_rozniczka = zeros(1, N*M);
- Wektor_Demodulator_FDP_Q_rozniczka = zeros(1, N*M);
- Wektor_Demodulator_FDP_I_rozniczka(1) = Wektor_Demodulator_FDP_I(1);
- Wektor_Demodulator_FDP_Q_rozniczka(1) = Wektor_Demodulator_FDP_Q(1);
- for i=2:1:N*M
- Wektor_Demodulator_FDP_I_rozniczka(i) = Wektor_Demodulator_FDP_I(i) - Wektor_Demodulator_FDP_I(i-1);
- Wektor_Demodulator_FDP_Q_rozniczka(i) = Wektor_Demodulator_FDP_Q(i) - Wektor_Demodulator_FDP_Q(i-1);
- end
- Wektor_Demodulator_FDP_I_dQ = Wektor_Demodulator_FDP_I.*Wektor_Demodulator_FDP_Q_rozniczka;
- Wektor_Demodulator_FDP_Q_dI = Wektor_Demodulator_FDP_Q.*Wektor_Demodulator_FDP_I_rozniczka;
- Wektor_Demodulator_Po_Sumatorze = Wektor_Demodulator_FDP_I_dQ - Wektor_Demodulator_FDP_Q_dI;
- %Wykres5
- figure
- plot(1:1:M*N, Wektor_Demodulator_Po_Sumatorze);
- title('Demodulator - I i Q zsumowane');
- xlabel('Numer pr�bki');
- ylabel('Warto�� pr�bki');
- %Ca�kowanie
- Wektor_Demodulator_Po_Calkowaniu = zeros(1, N);
- for i=1:1:N
- for j=1:1:M
- Wektor_Demodulator_Po_Calkowaniu(i) = Wektor_Demodulator_Po_Calkowaniu(i) + Wektor_Demodulator_Po_Sumatorze((i-1)*M + j);
- end
- end
- %Uk�ad decyzyjny
- Wektor_Demodulator_Wyjsciowy = zeros(1, N);
- for i=1:1:N
- if(Wektor_Demodulator_Po_Calkowaniu(i) < 0)
- Wektor_Demodulator_Wyjsciowy(i) = 0;
- elseif(Wektor_Demodulator_Po_Calkowaniu(i) > 0)
- Wektor_Demodulator_Wyjsciowy(i) = 1;
- end;
- end
- %Wykres6
- figure
- plot(1:1:N, Wektor_Demodulator_Wyjsciowy, 'k*');
- title('Demodulator - Wektor wyjsciowy ');
- xlabel('Numer pr�bki');
- ylabel('Warto�� pr�bki');
- if(isequal(Wektor_Wejsciowy, Wektor_Demodulator_Wyjsciowy))
- disp('s154994_2: Wektor wejsciowy i odebrany sa takie same !');
- end
Add Comment
Please, Sign In to add comment