Advertisement
worms005

kolokwium

Nov 30th, 2017
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 7.21 KB | None | 0 0
  1. %1. (17)Wczytanie sygnału i decymacja:
  2. [x,fp]=wavread('S1.wav');
  3. y=decimate(x,5);
  4. subplot(111);
  5. plot(y);
  6.  
  7. %1**
  8. [x,fp]=audioread('cartoon008.wav'); %wczytuje plik
  9. y=decimate(x,5);
  10. subplot(331); plot(x); title('17-decymacja'); xlabel('t'); ylabel('A');
  11.  
  12. %2. (18)Policzenie widma amplitudowego sygnału:
  13. Nf=1024;
  14. v=fft(x,Nf);
  15. w=abs(v);
  16. f=linspace(0,fp,Nf);
  17. subplot(212);
  18. plot(f,w);
  19. ylabel('czestotliwosc[Hz');
  20. %xlabe('modul widma');
  21.  
  22. %****
  23. Nf=2^11;
  24. N21=Nf/2+1;
  25. w=fft(x,Nf) %x to sygnał
  26. v=abs(w);
  27. Nf=length(v);
  28. tf=linspace(0,Fs/2,N21); %Fs czestotliwosc probkowania
  29. plot(tf,v(1:N21));
  30. xlabel('czestotliwosc[Hz]')
  31. ylabel('modul widma')
  32.  
  33. %*****
  34. Nf=1024
  35. v=fft(x,Nf);
  36. w=abs(v);
  37. f=linspace(0,fp,Nf);
  38. plot(f,w);
  39.  
  40. %1****
  41. Nf=1024;
  42. v=fft(x,Nf); %fft dla syg x i liczbie probek=Nf
  43. f=linspace(0,fp,Nf); %wektor o Nf wartosciach podzielonych od 0 do fp
  44. subplot(332); plot(f,v); title('18-widmo amp'); xlabel('czestotliwosc'); ylabel('widmo');
  45. vv=abs(v);
  46. subplot(333); plot(f,vv); title('18A-modul widma'); xlabel('czestotliwosc'); ylabel('mod widma');
  47.  
  48.  
  49. %3. (19)Filtr fir o zadanej długości i f granicznej
  50. h=fir1( 51,[1400]);
  51. plot(h);
  52. freqz(h,1);
  53. y=filter(h,1,x);
  54.  
  55.  
  56. %1****
  57. h=fir1(51,[1400/(fp/2)],'low');
  58. q=fft(h,Nf);
  59. q1=abs(q);
  60. subplot(334);plot(f,q1); title('19-mod widma?'); xlabel('czestotliwosc'); ylabel('mod widma');
  61. figure(2); freqz(h,1); title('19');
  62.  
  63. %4. (20)Filtracja i wyznaczenie modułu widma sygnału po filtracji
  64.  
  65. h=fir1(21,[300/500]);
  66. plot(abs(fft(h(512))),'r')
  67. y=filter(h,1,x);
  68. plot(x)
  69. hold on
  70.  
  71. %1****
  72. y=filter(h,1,x);
  73. rr=fft(y,Nf);
  74. ww=abs(rr);
  75. figure(1);
  76. subplot(335); plot(f,ww);
  77. title('20-mod widma');
  78. xlabel('czestotliwosc');
  79. ylabel('mod widma');
  80.  
  81.  
  82. %5. (21)Generacja sygnału o zadanej długości i częstotliwości
  83. fp=150; %próbkowanie
  84. t1=0:1/fp:2;
  85. f1=5;
  86. y1=sin(t1*2*pi*f1);
  87. t2=2:1/fp:4;
  88. f2=3.5;
  89. fi2=pi/4;
  90. y2=sin(t2*2*pi*f2+fi2);
  91. t3=4:1/fp:8;
  92. A3=1;
  93. y3=2*rand(1,601)-A3; %rozkład normalny szumu
  94. t4=8:1/fp:10;
  95. f4=5;
  96. fi4=pi/2;
  97. y4=sin(2*pi*f4*t4+fi4);
  98. y=[y1 y2 y3 y4];
  99. t=[t1 t2 t3 t4];
  100. plot(t,y);
  101.  
  102. %*****
  103. fp=150;
  104. t1=0:1/fp:2;
  105. f1=5;
  106. y1=sin(t1*2*pi*f1);
  107. t2=2:1/fp:4;
  108. f2=3.5;
  109. fi2=pi/4;
  110. y2=sin(t2*2*pi*f2+fi2);
  111. t3=4:1/fp:8;
  112. A3=1;
  113. y3=2*rand(1,601)-A3;
  114. t4=8:1/fp:10;
  115. f4=5;
  116. fi4=pi/2;
  117. y4=sin(2*pi*f4*t4+fi4);
  118. y=[y1 y2 y3 y4];
  119. t=[t1 t2 t3 t4];
  120. plot(t,y);
  121.  
  122.  
  123. %1*****
  124. fp=150; %czestotliwosc probkowania
  125. t1=0:1/fp:2;
  126. f1=5;
  127. y1=sin(2*pi*f1*t1);
  128.  
  129. t2=2:1/fp:4;
  130. f2=3.5;
  131. fi2=pi/4;
  132. y2=sin(2*pi*f2*t2+fi2);
  133. t3=4:1/fp:8;
  134. A3=1;
  135. y3=2*rand(1,601)-A3;
  136. t4=8:1/fp:10;
  137. f4=5;
  138. fi4=pi/2;
  139. y4=sin(2*pi*f4*t4+fi4);
  140. y=[y1 y2 y3 y4];
  141. t=[t1 t2 t3 t4];
  142. subplot(336); plot(t,y); title('21-zmienny syg'); xlabel('t'); ylabel('A');
  143. figure(3); plot(t,y); title('21-zmienny syg'); xlabel('t'); ylabel('A');
  144.  
  145.  
  146. %6. (22)Policzenie autokorelacji sygnału z 5tki z danym tau_max
  147. [r,T]=xcorr(x,400);
  148. plot(T,r);
  149.  
  150. %1*****
  151. tau_max=400;
  152. [s,T]=xcorr(y,tau_max);
  153. figure(1);
  154. subplot(337); plot(T,s); title('22-autokorelacja'); xlabel('t'); ylabel('A');
  155.  
  156. %7. (23)Korelacja sygnału z 5tki z zadanym sygnalem sinusoidalnym
  157. f7=5;
  158. fi7=pi;
  159. t7=0:1/fp:10;
  160. y7=sin(2*pi*f7+fi7);
  161. [r,T]=xcorr(y,y7,400);
  162. plot(T,r);
  163.  
  164. %1****
  165. f7=5;
  166. fi7=0; %mozna pominac
  167. t7=0:1/fp:10;
  168. y7=sin(2*pi*f7*t7+fi7);
  169. [ss,TT]=xcorr(y,y7,tau_max);
  170. subplot(338), plot(TT,ss); title('22-korelacja'); xlabel('t'); ylabel('A')
  171.  
  172.  
  173.  
  174. %Kod z zajęć
  175. % WIDMO AMPLITUDOWE SYGNAŁU W ZAKRESIE 0-FP
  176. N=200;
  177. fp=1000;
  178. t=0:1/fp:(N-1)/fp;
  179. %suma sinusow i szumu
  180. x=6*sin(2*pi*250*t)+3*sin(2*pi*350*t)+2*randn(1,N);
  181. subplot(211);
  182. plot(t,x)
  183. xlabel('czas[s]');
  184. ylabel('sygnał');
  185. %widmo
  186. Nf=1024;
  187. v=fft(x,Nf);%widmo zespolone
  188. w=abs(v);%;widmo amplitudowe
  189. f=linspace(0,fp,Nf); %generowanie osi czestotliwosci
  190. subplot(212);
  191. plot(f,w)
  192. xlabel('czestotliwosc[Hz]');
  193. ylabel('modul widma');
  194.  
  195. %generowanie szumu
  196. x=rand(1,1000);
  197. plot(x);
  198. hold on
  199. x=randn(1,1000);
  200. plot(x,'r');
  201. x=rand(1,1000);
  202. %sygnał o zmiennej częstotliwości
  203. x=chirp(t,fo,t1,f1)
  204.  
  205. %FFT
  206. y=fft(x);
  207. y=abs(abs(y);
  208. y=unurap(angle(y));
  209. y=real(y);
  210. y=imag(y);
  211.  
  212. %Filtr FIR- skonczona odpowiedz impulsowa
  213. h=fir1(K,fg);
  214. h=fir(K,[fd fg]);
  215. h=fir1(K,fd,'high');
  216. %filtracja
  217. y=filter(h,1,x);
  218.  
  219.  
  220. %decymacja -zmiejszenie czestliwosci próbkowania
  221. [x,y]=sinus(1,2,200,0,2)
  222. plot(x,y);
  223. y=decimate(x,y)
  224. ny=...;
  225. plot(ny,y);
  226.  
  227. %Histogram-jakie prawdopodobienstwo wystapienia sygnalu o danej
  228. %czestotliwosci
  229. sz=randn(1,1000);
  230. hist(sz,51)%51 liczba przedziałów(liczone ile probek wpada do hist)
  231. hist(x,101);
  232.  
  233. %Autokorelacja mówi nam o zależności w obrębie jednego sygnału
  234. r=xcorr(x,tmax)
  235. [x,n]=sinus(1,2,2000,0,2);
  236. [r,t]=xcor(x);
  237. plot(t,r);
  238. [r,t]=xcorr(x,100);
  239. plot(t,r);
  240.  
  241. %Korelacja wzajemna
  242. [r,t]=xcorr(x,y,tmax);
  243. [r,t]=xcorr(x,sz,200);
  244. plot(t,r);
  245.  
  246. %Wave read
  247. [x,fs]=wavread('mbi04popis.wav');
  248. %N - nowa zmienna pomocnicza
  249. y=fft(x,fs);
  250. w=abs(y);
  251. f=linspace(0,fs/2,N);
  252. subplot(211)
  253. plot(f,w(1:N));grid on; zoom on;
  254. xlabel('Czestotliwość [Hz]');
  255. ylabel('Moduł widma');
  256. title('Wykres widma amplitudowego');
  257.  
  258.  
  259. %Inne kody
  260.  
  261. fs=1000; %czest probkowania
  262. f1=10; %czest 1
  263. f2=100;%czest 2
  264. A=1; %amplituda
  265. N=1000; %liczba probek
  266. phi=pi/3; %przesuniecie
  267. t=0:1/fs:(N-1)/fs; %wektor czasu
  268. x1=A*sin(2*pi*f1*t);%+phi); %sygnal 1
  269. x2=A*sin(2*pi*f2*t); %sygnal 2
  270.  
  271. x=x1+x2; %suma sygnalow
  272. szum=awgn(x,1); %szum
  273.  
  274.  
  275. subplot(211) % siatka wykresow na jednej figurze: x1,x2, x oraz x z szumem
  276. plot(t,x1)
  277. title 'sygnał 1'
  278. xlabel('czas [s]');
  279. ylabel('amplituda');
  280. legend x1
  281. subplot(212)
  282. plot(t,x2)
  283. title 'sygnał 2'
  284. xlabel('czas [s]');
  285. ylabel('amplituda');
  286. legend x2
  287. figure()
  288. subplot(211)
  289. plot(t,x1+x2)
  290. title 'sygnał 1 i 2'
  291. xlabel('czas [s]');
  292. ylabel('amplituda');
  293. legend x
  294. subplot(212)
  295. plot (t,x+szum);
  296. title 'suma sygnałów zaszumonich '
  297. xlabel('czas [s]');
  298. ylabel('amplituda');
  299. legend x_s
  300.  
  301.  
  302. X1=fft(x1);
  303. X2=fft(x2);
  304. X=fft(x);%+szum);
  305. p=unwrap(angle(X));% funkcja unwrap służy do usunięcia skoków fazy większych niż pi pomiędzy kolejnymi próbkami
  306. f=0:fs/N:fs - fs/N;
  307.  
  308. figure
  309. subplot(311)
  310. plot(t,x)
  311. xlabel 'czas [s]'
  312. title 'sygnal x'
  313. subplot(312)
  314. plot(f,abs(fft(x)))
  315. xlabel 'czestotliwosc [Hz]'
  316. title 'widmo amplitudowe sygnalu'
  317. subplot(313)
  318. plot(f,p)
  319. xlabel 'czestotliwosc [Hz]'
  320. title 'widmo fazowe sygnalu'
  321.  
  322. %%%
  323. fp = 1000;  %czestotliwosc probkowania
  324. fs1 = 10;  %czestotliwosc sygnalu #1
  325. fs2 = 100;   %czestotliwosc sygnalu #2
  326. A = 1;      %amplituda sygnalu
  327. N = 500;   %liczba probek
  328. phi = pi/3; %przesuniecie fazowe
  329. t = 0:1/fp:(N-1)/fp;%wektor czasu
  330. % otrzymujemy wektory _x_ i _x1_
  331. x = A*sin(2*pi*fs1*t + phi);%nasz sygnal
  332. x1= A*sin(2*pi*fs2*t);%nasz sygnal
  333.  
  334. figure(1)
  335. plot(t,x);
  336. xlabel('czas [s]');
  337. ylabel('amplituda');
  338. title(['wykres sin(x) dla f_s=' num2str(fs1) 'Hz @ f_p=' num2str(fp)...
  339.     ' \phi=' num2str(phi*180/pi) '^\circ']);
  340. figure(2)
  341. plot(t,x,'r');
  342. grid
  343. hold on;% Zatrzymanie wykresu na figurze
  344. plot(t,x1,'k');
  345. legend('wykres 1','wykres 2')
  346. hold off; % uwolnienie wykresu
  347.  
  348. subplot(311) % siatka wykresow na jednej figurze
  349. plot(t,x)
  350. legend x
  351. subplot(312)
  352. plot(t,x1)
  353. legend x1
  354. subplot(313)
  355. plot(t,x+x1)
  356. legend x1+x2
  357.  
  358.  
  359. x = fft(x);
  360. x1 = fft(x1);
  361. x2 = fft(x1+x);
  362.  
  363. f = 0:fp/N:fp - fp/N;
  364.  
  365. figure(3)
  366. subplot(211)
  367. plot(t,x1+x)
  368. xlabel 'czas [s]'
  369. title 'sygnal'
  370. subplot(212)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement