Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- clear all;
- load ('h.mat');
- %_____________________zadanie1 - identyfikacja kanalu_________________
- %wysylam sygnal "pilot" ktory umozliwi mi zidentyfikowanie kanalu h
- %teoplitz z tego syganlu (U1) to macierz diagonalna => na wyjscu dostane
- %szczegoly kanalu (h) w postaci wektora;
- %____________________________________________________________________
- % +/- o to chodzi
- %nadaje u i odbieram y1 a chcialbym umiec odtworzyc spowrotem na u
- %wiec zeby to zrobic musze ogarnac w jaki sposob moje u sie psuje:
- %jak cos nadaje (u) to mnoze to przez h i dostaje y; jesli wiec wysle
- %w postaci impulsu (macierz identycznosciowa) to jako y dostane h,
- %czyli bede znal "mnozniki/wagi" = h;
- %jesli wiec nastepnym razem wysle cos innego niz jednostkowe to bede mogl
- %"podzielic" y przez h i dostane to co wyslalem
- if(0)
- u1 = zeros(32,1);
- u1(1) = 1;
- r1 = zeros(1,32);
- r1(1) = u1(1);
- U1 = toeplitz(u1,r1);
- h = h'; %number of columns from U1 must equal number od rows in h
- y1 = U1*h;
- disp("pierwszy nadany sygnal: ");
- disp(u1);
- disp("pierwszy odebrany sygnal: ");
- disp(y1);
- if(y1 == h)
- disp("sygnal odebrany jest taki sam jak sygnal impulsowy h");
- else
- disp("sygnal y jest inny od h");
- end
- end
- %______________________zadanie2_______________________________________
- %dzieki zadaniu powyzej znam h
- %wysylam cos innego, robie sobie macierz teoplitza z tego co wysylam
- %zeby moc pomnozyc wyslay przez kanal h; "tak jakby w tyl"
- %mam sobie sygnal y2 --> to dostalem jako odbiorca
- %robie pseudo-odwrotna macierz h == P i mam rowanie :
- %y2 = U2*h|*P
- %U2 = P*y2
- %no i mam spowrotem to co nadalem +/-
- if(0)
- u2 = zeros(32,1);
- u2(1:7) = [0, 1,1,0.5,0.5,-1,-1];
- r2 = zeros(1,32);
- %r2(1:7) = [0, 1,1,0.5,0.5,-1,-1];
- U2 = toeplitz(u2,r2);
- h = h'; %number of columns from U2 must equal number od rows in h
- y2 = U2*h;
- disp("drugi nadany sygnal: ");
- disp(u2);
- disp("drugi odebrany sygnal: ");
- disp(y2);
- f1 = figure("name","sygnal nadany i odebrany","NumberTitle", "off");
- subplot(2,1,1);
- stem(u2, "filled" ,'-r');
- hold on;
- stem(y2, 'filled', '-b');
- title('sygnal nadany i odebrany');
- legend("sygnal nadany", "sygnal odebrany");
- P = pinv(h);
- P = toeplitz(P);
- ukor = P*y2;
- subplot(2,1,2);
- stem(ukor);
- title('sygnal odebrany skorektowany');
- end
- %_______________w sumie moze to samo ale nie wiem____________________
- % no lepiej wychodzi jak zrobie macierz z H zamiast z sygnalu
- if(0)
- u2 = zeros(32,1);
- u2(1:7) = [0, 1,1,0.5,0.5,-1,-1];
- %r2 = zeros(1,32);
- %r2(1:7) = [0, 1,1,0.5,0.5,-1,-1];
- hr = zeros(32,1);
- hr(1) = h(1) %number of columns from U2 must equal number od rows in h
- H = toeplitz(h,hr);
- y2 = H*u2;
- disp("drugi nadany sygnal: ");
- disp(u2);
- disp("drugi odebrany sygnal: ");
- disp(y2);
- f1 = figure("name","sygnal nadany i odebrany","NumberTitle", "off");
- subplot(2,1,1);
- stem(u2, "filled" ,'-r');
- hold on;
- stem(y2, 'filled', '-b');
- title('sygnal nadany i odebrany');
- legend("sygnal nadany", "sygnal odebrany");
- %P = pinv(h);
- %P = toeplitz(P);
- ukor = H\y2; %= inv(H)*y2
- subplot(2,1,2);
- stem(ukor);
- title('sygnal odebrany skorektowany');
- end
- %____________________________zadanie3_______________________________
- % wysylam sygnal skladajacy sie z 2 sinusoid o roznych czestotliwosciach
- % i przechodzi on przez tan stystem h jak sie okazuje przepusza on tylko
- % jedna z 2 sinusoid, tak jest dobrany
- if(1)
- L = 32;
- u3 = zeros(32,1);
- for(n=0:31)
- u3(n+1)= sin(2*pi*2*n/L)+sin(2*pi*6*n/L);
- end
- r3 = zeros(1,32);
- U3 = toeplitz(u3,r3);
- %plot(U3);
- h = h';
- y3 = U3*h;
- %sprawdzenie czy filtracja sie udala
- %u3new = zeros(32,1);
- %for(n=0:31)
- % u3new(n+1)= sin(2*pi*2*n/L);
- %end
- f1 = figure;
- subplot(2,1,1);
- plot(u3, 'r');
- title("sygnal nadany");
- hold on;
- subplot(2,1,2);
- plot(y3,'b');
- %hold on;
- %plot(u3new, 'r');
- title("sygnal odebrany");
- % P =pinv(h);
- % P = toeplitz(P);
- % ukor = P*y3;
- % subplot(2,1,2);
- % plot(ukor);
- % title('sygnal odebrany skorektowany');
- end
- %_________________niby to samo_________________________
- if(0)
- L = 32;
- u3 = zeros(32,1);
- for(n=0:31)
- u3(n+1)= sin(2*pi*2*n/L)+sin(2*pi*6*n/L);
- end
- %r3 = zeros(1,32);
- %U3 = toeplitz(u3,r3);
- %plot(U3);
- hr = zeros(32,1);
- hr(1) = h(1)
- H = toeplitz(h,hr);
- y3 = H*u3;
- %sprawdzenie czy filtracja sie udala
- %u3new = zeros(32,1);
- %for(n=0:31)
- % u3new(n+1)= sin(2*pi*2*n/L);
- %end
- f1 = figure;
- subplot(3,1,1);
- plot(u3, 'r');
- title("sygnal nadany");
- hold on;
- subplot(3,1,2);
- plot(y3,'b');
- %hold on;
- %plot(u3new, 'r');
- title("sygnal odebrany");
- % P =pinv(h);
- % P = toeplitz(P);
- ukor = H\y3;
- subplot(3,1,3);
- plot(ukor);
- title('sygnal odebrany skorektowany');
- end
- end
- %-------------------------------------------ZADANIE2
- clc;
- clear all;
- load('h.mat');
- N=32;
- % -------------------------ANALIZA SYGNAŁU X----------------------------- %
- % Sygnał do transformaty %
- x = zeros(32,1);
- for i=0:31
- x(i+1)= sin(2*pi*2*i/32) + sin(2*pi*6*i/32);
- end
- % Sygnał z exp %
- x_e = zeros(32,1);
- for i=0:31
- x_e(i+1)= exp(-i*2*pi*2*i/32) + exp(-i*2*pi*6*i/32);
- end
- % Macierz F transformaty DFT %
- for n=0:31
- for m=0:31
- F(n+1,m+1)=(1/sqrt(N))*cos(2*(pi/N)*n*m)-i*(1/sqrt(N))*sin(2*(pi/N)*n*m);
- end
- end
- % Macierz F transformaty DFT - drugi wzór %
- for n=0:31
- for m=0:31
- F_e(n+1,m+1)=(1/sqrt(N))*exp(-i*2*(pi/N)*n*m);
- end
- end
- % --------------OBLICZENIA NA SINUSIE-------------- %
- X=F*x;
- figure(1)
- X_show=20*log(abs(X));
- plot(X_show);
- title('Widmo gęsto¶ci mocy');
- x1=inv(F)*X;
- x2=inv(F.')*X;
- if (x1==x2)
- disp('Macierze x1 i x2 s± takie same.');
- else
- disp('Macierze x1 i x2 nie s± takie same.');
- end
- % ----------------OBLICZENIA NA EXP---------------- %
- X_e=F*x_e;
- figure(2)
- X_eshow=20*log(abs(X_e));
- plot(X_eshow);
- title('Widmo gęstosci mocy');
- x_e1=inv(F)*X;
- x_e2=inv(F.')*X;
- if (x_e1==x_e2)
- disp('Macierze x_e1 i x_e2 s± takie same.');
- else
- disp('Macierze x_e1 i x_e2 nie s± takie same.');
- end
- % -------------------------ANALIZA SYGNAŁU Y----------------------------- %
- % Macierz F transformaty DFT %
- for n=0:62
- for m=0:62
- Fy(n+1,m+1)=(1/sqrt(N))*cos(2*(pi/N)*n*m)-i*(1/sqrt(N))*sin(2*(pi/N)*n*m);
- end
- end
- % Macierz F transformaty DFT - drugi wzór %
- for n=0:62
- for m=0:62
- Fy_e(n+1,m+1)=(1/sqrt(N))*exp(-i*2*(pi/N)*n*m);
- end
- end
- y=conv(h,x);
- Y=Fy*y;
- y1=inv(Fy)*Y;
- y2=inv(Fy.')*Y;
- if (y1==y2)
- disp('Macierze y1 i y2 s± takie same');
- else
- disp('Macierze y1 i y2 nie s± takie same');
- end
- % -----------------------ANALIZA SYGNAŁU RAND---------------------------- %
- rs = randn(32,1);
- RS=F*rs;
- rs1=inv(F)*RS;
- rs2=inv(F.')*RS;
- %------------------------------ZADANIE3----------------------------------
- clc;
- clear all;
- d=ones(1,1024);
- for i=10:1024
- d(i)=xor(d(i-4),d(i-9));
- end
- x = xcorr(d, 'unbiased');
- plot(x);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement