Advertisement
Guest User

Untitled

a guest
Oct 17th, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.41 KB | None | 0 0
  1. clear all;
  2. load ('h.mat');
  3. %_____________________zadanie1 - identyfikacja kanalu_________________
  4. %wysylam sygnal "pilot" ktory umozliwi mi zidentyfikowanie kanalu h
  5. %teoplitz z tego syganlu (U1) to macierz diagonalna => na wyjscu dostane
  6. %szczegoly kanalu (h) w postaci wektora;
  7.  
  8. %____________________________________________________________________
  9. % +/- o to chodzi
  10.  
  11. %nadaje u i odbieram y1 a chcialbym umiec odtworzyc spowrotem na u
  12. %wiec zeby to zrobic musze ogarnac w jaki sposob moje u sie psuje:
  13. %jak cos nadaje (u) to mnoze to przez h i dostaje y; jesli wiec wysle
  14. %w postaci impulsu (macierz identycznosciowa) to jako y dostane h,
  15. %czyli bede znal "mnozniki/wagi" = h;
  16. %jesli wiec nastepnym razem wysle cos innego niz jednostkowe to bede mogl
  17. %"podzielic" y przez h i dostane to co wyslalem
  18. if(0)
  19. u1 = zeros(32,1);
  20. u1(1) = 1;
  21. r1 = zeros(1,32);
  22. r1(1) = u1(1);
  23. U1 = toeplitz(u1,r1);
  24. h = h'; %number of columns from U1 must equal number od rows in h
  25. y1 = U1*h;
  26.  
  27. disp("pierwszy nadany sygnal: ");
  28. disp(u1);
  29. disp("pierwszy odebrany sygnal: ");
  30. disp(y1);
  31. if(y1 == h)
  32. disp("sygnal odebrany jest taki sam jak sygnal impulsowy h");
  33. else
  34. disp("sygnal y jest inny od h");
  35. end
  36. end
  37. %______________________zadanie2_______________________________________
  38. %dzieki zadaniu powyzej znam h
  39. %wysylam cos innego, robie sobie macierz teoplitza z tego co wysylam
  40. %zeby moc pomnozyc wyslay przez kanal h; "tak jakby w tyl"
  41. %mam sobie sygnal y2 --> to dostalem jako odbiorca
  42. %robie pseudo-odwrotna macierz h == P i mam rowanie :
  43. %y2 = U2*h|*P
  44. %U2 = P*y2
  45. %no i mam spowrotem to co nadalem +/-
  46. if(0)
  47. u2 = zeros(32,1);
  48. u2(1:7) = [0, 1,1,0.5,0.5,-1,-1];
  49. r2 = zeros(1,32);
  50. %r2(1:7) = [0, 1,1,0.5,0.5,-1,-1];
  51. U2 = toeplitz(u2,r2);
  52. h = h'; %number of columns from U2 must equal number od rows in h
  53. y2 = U2*h;
  54. disp("drugi nadany sygnal: ");
  55. disp(u2);
  56. disp("drugi odebrany sygnal: ");
  57. disp(y2);
  58.  
  59. f1 = figure("name","sygnal nadany i odebrany","NumberTitle", "off");
  60. subplot(2,1,1);
  61. stem(u2, "filled" ,'-r');
  62. hold on;
  63. stem(y2, 'filled', '-b');
  64. title('sygnal nadany i odebrany');
  65. legend("sygnal nadany", "sygnal odebrany");
  66.  
  67.  
  68. P = pinv(h);
  69. P = toeplitz(P);
  70. ukor = P*y2;
  71.  
  72. subplot(2,1,2);
  73. stem(ukor);
  74. title('sygnal odebrany skorektowany');
  75. end
  76.  
  77. %_______________w sumie moze to samo ale nie wiem____________________
  78. % no lepiej wychodzi jak zrobie macierz z H zamiast z sygnalu
  79. if(0)
  80. u2 = zeros(32,1);
  81. u2(1:7) = [0, 1,1,0.5,0.5,-1,-1];
  82. %r2 = zeros(1,32);
  83. %r2(1:7) = [0, 1,1,0.5,0.5,-1,-1];
  84. hr = zeros(32,1);
  85. hr(1) = h(1) %number of columns from U2 must equal number od rows in h
  86. H = toeplitz(h,hr);
  87. y2 = H*u2;
  88. disp("drugi nadany sygnal: ");
  89. disp(u2);
  90. disp("drugi odebrany sygnal: ");
  91. disp(y2);
  92.  
  93. f1 = figure("name","sygnal nadany i odebrany","NumberTitle", "off");
  94. subplot(2,1,1);
  95. stem(u2, "filled" ,'-r');
  96. hold on;
  97. stem(y2, 'filled', '-b');
  98. title('sygnal nadany i odebrany');
  99. legend("sygnal nadany", "sygnal odebrany");
  100.  
  101.  
  102. %P = pinv(h);
  103. %P = toeplitz(P);
  104. ukor = H\y2; %= inv(H)*y2
  105.  
  106. subplot(2,1,2);
  107. stem(ukor);
  108. title('sygnal odebrany skorektowany');
  109. end
  110.  
  111. %____________________________zadanie3_______________________________
  112. % wysylam sygnal skladajacy sie z 2 sinusoid o roznych czestotliwosciach
  113. % i przechodzi on przez tan stystem h jak sie okazuje przepusza on tylko
  114. % jedna z 2 sinusoid, tak jest dobrany
  115. if(1)
  116. L = 32;
  117. u3 = zeros(32,1);
  118. for(n=0:31)
  119. u3(n+1)= sin(2*pi*2*n/L)+sin(2*pi*6*n/L);
  120. end
  121. r3 = zeros(1,32);
  122. U3 = toeplitz(u3,r3);
  123.  
  124. %plot(U3);
  125. h = h';
  126. y3 = U3*h;
  127.  
  128.  
  129. %sprawdzenie czy filtracja sie udala
  130. %u3new = zeros(32,1);
  131. %for(n=0:31)
  132. % u3new(n+1)= sin(2*pi*2*n/L);
  133. %end
  134.  
  135. f1 = figure;
  136. subplot(2,1,1);
  137. plot(u3, 'r');
  138. title("sygnal nadany");
  139. hold on;
  140. subplot(2,1,2);
  141. plot(y3,'b');
  142. %hold on;
  143. %plot(u3new, 'r');
  144. title("sygnal odebrany");
  145.  
  146. % P =pinv(h);
  147. % P = toeplitz(P);
  148. % ukor = P*y3;
  149.  
  150. % subplot(2,1,2);
  151. % plot(ukor);
  152. % title('sygnal odebrany skorektowany');
  153. end
  154.  
  155. %_________________niby to samo_________________________
  156. if(0)
  157. L = 32;
  158. u3 = zeros(32,1);
  159. for(n=0:31)
  160. u3(n+1)= sin(2*pi*2*n/L)+sin(2*pi*6*n/L);
  161. end
  162. %r3 = zeros(1,32);
  163. %U3 = toeplitz(u3,r3);
  164.  
  165. %plot(U3);
  166. hr = zeros(32,1);
  167. hr(1) = h(1)
  168. H = toeplitz(h,hr);
  169. y3 = H*u3;
  170.  
  171.  
  172.  
  173. %sprawdzenie czy filtracja sie udala
  174. %u3new = zeros(32,1);
  175. %for(n=0:31)
  176. % u3new(n+1)= sin(2*pi*2*n/L);
  177. %end
  178.  
  179. f1 = figure;
  180. subplot(3,1,1);
  181. plot(u3, 'r');
  182. title("sygnal nadany");
  183. hold on;
  184. subplot(3,1,2);
  185. plot(y3,'b');
  186. %hold on;
  187. %plot(u3new, 'r');
  188. title("sygnal odebrany");
  189.  
  190. % P =pinv(h);
  191. % P = toeplitz(P);
  192. ukor = H\y3;
  193. subplot(3,1,3);
  194. plot(ukor);
  195. title('sygnal odebrany skorektowany');
  196. end
  197.  
  198.  
  199.  
  200. end
  201.  
  202. %-------------------------------------------ZADANIE2
  203. clc;
  204. clear all;
  205. load('h.mat');
  206. N=32;
  207.  
  208. % -------------------------ANALIZA SYGNAŁU X----------------------------- %
  209. % Sygnał do transformaty %
  210. x = zeros(32,1);
  211. for i=0:31
  212. x(i+1)= sin(2*pi*2*i/32) + sin(2*pi*6*i/32);
  213. end
  214. % Sygnał z exp %
  215. x_e = zeros(32,1);
  216. for i=0:31
  217. x_e(i+1)= exp(-i*2*pi*2*i/32) + exp(-i*2*pi*6*i/32);
  218. end
  219.  
  220. % Macierz F transformaty DFT %
  221. for n=0:31
  222. for m=0:31
  223. F(n+1,m+1)=(1/sqrt(N))*cos(2*(pi/N)*n*m)-i*(1/sqrt(N))*sin(2*(pi/N)*n*m);
  224. end
  225. end
  226.  
  227. % Macierz F transformaty DFT - drugi wzór %
  228. for n=0:31
  229. for m=0:31
  230. F_e(n+1,m+1)=(1/sqrt(N))*exp(-i*2*(pi/N)*n*m);
  231. end
  232. end
  233.  
  234. % --------------OBLICZENIA NA SINUSIE-------------- %
  235. X=F*x;
  236. figure(1)
  237. X_show=20*log(abs(X));
  238. plot(X_show);
  239. title('Widmo gęsto¶ci mocy');
  240.  
  241. x1=inv(F)*X;
  242. x2=inv(F.')*X;
  243. if (x1==x2)
  244. disp('Macierze x1 i x2 s± takie same.');
  245. else
  246. disp('Macierze x1 i x2 nie s± takie same.');
  247. end
  248. % ----------------OBLICZENIA NA EXP---------------- %
  249. X_e=F*x_e;
  250. figure(2)
  251. X_eshow=20*log(abs(X_e));
  252. plot(X_eshow);
  253. title('Widmo gęstosci mocy');
  254.  
  255. x_e1=inv(F)*X;
  256. x_e2=inv(F.')*X;
  257. if (x_e1==x_e2)
  258. disp('Macierze x_e1 i x_e2 s± takie same.');
  259. else
  260. disp('Macierze x_e1 i x_e2 nie s± takie same.');
  261. end
  262.  
  263. % -------------------------ANALIZA SYGNAŁU Y----------------------------- %
  264. % Macierz F transformaty DFT %
  265. for n=0:62
  266. for m=0:62
  267. Fy(n+1,m+1)=(1/sqrt(N))*cos(2*(pi/N)*n*m)-i*(1/sqrt(N))*sin(2*(pi/N)*n*m);
  268. end
  269. end
  270.  
  271. % Macierz F transformaty DFT - drugi wzór %
  272. for n=0:62
  273. for m=0:62
  274. Fy_e(n+1,m+1)=(1/sqrt(N))*exp(-i*2*(pi/N)*n*m);
  275. end
  276. end
  277.  
  278. y=conv(h,x);
  279.  
  280. Y=Fy*y;
  281. y1=inv(Fy)*Y;
  282. y2=inv(Fy.')*Y;
  283. if (y1==y2)
  284. disp('Macierze y1 i y2 s± takie same');
  285. else
  286. disp('Macierze y1 i y2 nie s± takie same');
  287. end
  288.  
  289. % -----------------------ANALIZA SYGNAŁU RAND---------------------------- %
  290. rs = randn(32,1);
  291. RS=F*rs;
  292. rs1=inv(F)*RS;
  293. rs2=inv(F.')*RS;
  294.  
  295.  
  296. %------------------------------ZADANIE3----------------------------------
  297.  
  298.  
  299.  
  300. clc;
  301. clear all;
  302. d=ones(1,1024);
  303. for i=10:1024
  304. d(i)=xor(d(i-4),d(i-9));
  305. end
  306. x = xcorr(d, 'unbiased');
  307. plot(x);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement