Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- clear all; close all;
- N = 1000; phase = pi/4;
- %dane z zadania 1
- fn = 2*10^6; %HZ
- v = 5000; %m/s
- c = 3*10^8; %m/s
- delay = 4;
- x = randi([0 15],N,1); %losowanie randomowego sygnału
- msg = x;
- %msg = msg(1:end-2*delay);
- %sekwencja treningowa
- trainlength = 150;
- %{
- head = ones(1,trainlength);
- x = x';
- x = [head x];
- msg = msg';
- msg = [head msg]
- %}
- %txSig = pskmod(x,4,phase); %sygnal zmodulowany po stronie nadawczej
- %txSig = qammod(x,16,phase);
- txSig = qammod(msg, 16, phase);
- scatterplot(txSig); title('Sygnal wyslany');
- %przepuszczamy przez kanal
- SNR = 30;
- ts = 1*10^(-6); %impuls
- fD = (v*fn)/c; %czestotliwosc Dopplera
- RAY = rayleighchan(ts,fD);
- tux = stdchan(ts, fD, '3gppTUx');
- %rxTux =
- %rxSig = filter(RAY,txSig); %nadawczy sfiltrowany Rayleighem
- rxSig = filter(tux,txSig);
- %% compesate channel delay
- x_com = msg(1:end-2*delay);
- filtered_msg = rxSig((2*delay+1):end);
- %% Corection
- %%%%%%%
- rxSig = awgn(rxSig,SNR); %zaszumiamy
- filtered_msg = awgn(filtered_msg, SNR);
- %eq1 = lineareq(1, rls(0.99)); %tworzy obiekt, ktory moze byc eq, mamy rls
- %yd = equalize(eq1,rxSig,txSig(1:trainlength));
- eq1 = lineareq(1, rls(0.99));
- yd = equalize(eq1, x_com, filtered_msg(1:trainlength));
- scatterplot(yd); title('filtered');
- %scatterplot(rxSig); title('Sygnal odebrany bez korekcji');
- %scatterplot(yd); title('Sygnal odebrany z korekcją');
- %dem = pskdemod(rxSig,4,phase);
- %dem2 = pskdemod(yd,4,phase);
- %dem = qamdemod(rxSig,16,phase);
- dem = qamdemod(yd,16,phase);
- %dem2 = qamdemod(yd,16,phase);
- %msg = msg((2*delay+1):end);
- [xd, BER] = biterr(x_com,dem);
- disp(BER);
- %[xxd,BER2]= biterr(x,dem2);
- %disp(BER2);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement