Advertisement
Guest User

Untitled

a guest
Mar 20th, 2019
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.12 KB | None | 0 0
  1. clc;
  2. clear all;
  3. format long
  4. [Y,FS,NBITS] = wavread('fisiere/u15.wav');
  5. [N,M] = size(Y);
  6. figure(1)
  7. plot(Y(:,1))
  8.  
  9. Y2 = Y(1:55300);
  10. N=55300;
  11. figure(2)
  12. plot(Y2(:,1))
  13.  
  14. wavwrite(Y2, FS, NBITS, 'scurtat.wav');
  15. n = 55300;
  16. length(Y2);
  17. t = (0:1:n-1)/FS;
  18. % figure(3);
  19. % plot(t, Y2, 'b')
  20. % xlabel('timp[sec]')
  21. % ylabel('amplitudine')
  22. % grid on
  23. % title('Reprezentarea in domeniul timp')
  24.  
  25. %valori minime/maxime
  26. v_min = min(Y2)
  27. v_max = max(Y2)
  28. %abaterea medie standard
  29. std0 = std(Y2)
  30.  
  31. c1 = polyfit(t,Y2',1);
  32. z1 = polyval(c1, t);
  33. std1 = std(Y2-z1')
  34.  
  35. c2 = polyfit(t,Y2',2);
  36. z2 = polyval(c2, t);
  37. std2 = std(Y2-z2')
  38.  
  39. c3 = polyfit(t,Y2',3);
  40. z3 = polyval(c3, t);
  41. std3 = std(Y2-z3')
  42.  
  43. f = 0:FS/n:FS-FS/n;
  44. tf = fft(Y2);
  45. % figure(4);
  46. % length(f)
  47. % length(tf)
  48. % stem(f, abs(tf), 'r');
  49. % xlabel('frequency[Hz]')
  50. % ylabel('amplitudine')
  51. % grid on
  52. % title('Reprezentarea in domeniul frecventa')
  53.  
  54. %L2
  55.  
  56. n30=floor(n/30)*30; %n30 va fi multiplu de 30
  57. n10=n30/10; %n30 va fi multiplu de 30
  58.  
  59. Y30 = Y2(1:n30);
  60. t2 = t(1:n30);
  61. % figure(5);
  62. % plot(t2, Y30, 'b')
  63. % xlabel('timp[sec]')
  64. % ylabel('amplitudine')
  65. % grid on
  66. % title('Reprezentarea in domeniul timp')
  67.  
  68. tf2 = fft(Y30);
  69. f2=0:FS/n30:FS/2-FS/n30;
  70. tf2=tf2/n30;
  71. tf2(2:n30/2)=2*(tf2(2:n30/2));
  72. tf3=tf2(1:n30/2);
  73. tf3=abs(tf3);
  74. % figure(6);
  75. % plot(f2,tf3, 'r');
  76. % xlabel('frequency[Hz]')
  77. % ylabel('power')
  78. % grid on
  79. % title('Reprezentarea in domeniul frecventa')
  80.  
  81. % figure(7);
  82. % semilogy(f2,tf3,'r');
  83. % xlabel('frequency[Hz]')
  84. % ylabel('power log')
  85. % grid on
  86. % title('Reprezentarea in domeniul frecventa')
  87.  
  88. %Y30(2)
  89. Y10 = reshape(Y30, n10, 10);
  90. %Y10(2,1)
  91.  
  92. Y28 = zeros(n10, 28);
  93. for i=1:28
  94. Y28(:,i) = Y30(1+(i-1)*n10/3:n10+(i-1)*n10/3);
  95. end
  96.  
  97. %Y30(1+n10/3)
  98. %Y28(1,2)
  99.  
  100. tf10 = fft(Y10)/n10;
  101. tf10 = abs(tf10(1:n10/2,:)); %taiem jumatate din spectru
  102. tf10(2:n10/2,:) = 2*tf10(2:n10/2,:);
  103.  
  104. fr10 = (0:1:n10/2-1) * FS / n10;
  105. % figure(8)
  106. % for i=1:10
  107. % subplot(2,5,i)
  108. % plot(fr10, tf10(1:n10/2, i), 'bl');
  109. % grid on
  110. % end
  111.  
  112. tf28 = fft(Y28)/n10;
  113. tf28 = abs(tf28(1:n10/2,:)); %taiem jumatate din spectru
  114. tf28(2:n10/2,:) = 2*tf28(2:n10/2,:);
  115.  
  116. % figure(9)
  117. % for i=1:28
  118. % subplot(4,7,i)
  119. % plot(fr10, tf28(1:n10/2, i), 'bl');
  120. % grid on
  121. % title(['Si= ' int2str(i)]);
  122. % end
  123.  
  124. %%%%% Lab 3 %%%%%
  125. N=n30;
  126. n_init = 0:1:N-1;
  127. w_hanning = sin(n_init*pi/N).^2;
  128. length(Y30);
  129. length(w_hanning);
  130. signal_window_Hanning = Y30.*w_hanning';
  131.  
  132. figure(10)
  133. title('Hanning window');
  134. plot(t2, w_hanning);
  135.  
  136. figure(11)
  137. title('Signal windowed with Hanning');
  138. plot(t2, signal_window_Hanning);
  139.  
  140. alfa = 25/46;
  141. w_hamming = alfa - (1 - alfa) * cos(2*pi*n_init/N);
  142. length(w_hamming);
  143. signal_window_Hamming = Y30.*w_hamming';
  144.  
  145. figure(12)
  146. title('Hanning window');
  147. plot(t2, w_hamming);
  148.  
  149. figure(13)
  150. title('Signal windowed with Hanning');
  151. plot(t2, signal_window_Hamming);
  152.  
  153. %%%%%%%%%%%% Hanning %%%%%%%%%%%
  154. %%%%%% w10
  155.  
  156. N=n10;
  157. n_init=0:1:N-1;
  158. w_hanning10 = sin(n_init*pi/N).^2;
  159.  
  160. for i=1:10
  161. S10_hanning(:,i)=Y10(:,i).*w_hanning10';
  162. end
  163.  
  164. figure(14)
  165. % for i=1:10
  166. % subplot(2,5,i)
  167. % plot(n_init, S10_hanning(:,i), 'bl');
  168. % grid on
  169. % title(['i= ' int2str(i)]);
  170. % end
  171.  
  172. tf10_hn = fft(S10_hanning)/N;
  173. tf10_hn = abs(tf10_hn(1:N/2,:)); %taiem jumatate din spectru
  174. tf10_hn(2:N/2,:) = 2*tf10_hn(2:N/2,:);
  175.  
  176. fr10 = (0:1:N/2-1) * FS / N;
  177.  
  178. for i=1:10
  179. subplot(2,5,i)
  180. plot(fr10, tf10_hn(:,i), 'bl');
  181. grid on
  182. title(['i= ' int2str(i)]);
  183. end
  184. %%%%%%% w28
  185.  
  186. N=n10;
  187. n_init=0:1:N-1;
  188. w_hanning28 = sin(n_init*pi/N).^2;
  189.  
  190. for i=1:28
  191. S28_hanning(:,i)=Y28(:,i).*w_hanning28';
  192. end
  193.  
  194. figure(15)
  195. % for i=1:28
  196. % subplot(4,7,i)
  197. % plot(n_init, S28_hanning(:,i), 'bl');
  198. % grid on
  199. % title(['i= ' int2str(i)]);
  200. % end
  201. tf28_hn = fft(S28_hanning)/N;
  202. tf28_hn = abs(tf28_hn(1:N/2,:)); %taiem jumatate din spectru
  203. tf28_hn(2:N/2,:) = 2*tf28_hn(2:N/2,:);
  204.  
  205. fr28 = (0:1:N/2-1) * FS / N;
  206.  
  207. for i=1:28
  208. subplot(4,7,i)
  209. plot(fr28, tf28_hn(:,i), 'bl');
  210. grid on
  211. title(['i= ' int2str(i)]);
  212. end
  213.  
  214.  
  215. %%%%%%%%%%%%% Hamming %%%%%%%%%%%%
  216. %%%%%%% w10
  217.  
  218. N=n10;
  219. n_init=0:1:N-1;
  220. w_hamming10 = alfa - (1-alfa) *cos(2*pi*n_init/N);
  221.  
  222. for i=1:10
  223. S10_hamming(:,i)=Y10(:,i).*w_hamming10';
  224. end
  225.  
  226. figure(16)
  227. % for i=1:10
  228. % subplot(2,5,i)
  229. % plot(n_init, S10_hanning(:,i), 'bl');
  230. % grid on
  231. % title(['i= ' int2str(i)]);
  232. % end
  233.  
  234. tf10_hm = fft(S10_hamming)/N;
  235. tf10_hm = abs(tf10_hm(1:N/2,:)); %taiem jumatate din spectru
  236. tf10_hm(2:N/2,:) = 2*tf10_hm(2:N/2,:);
  237.  
  238. fr10 = (0:1:N/2-1) * FS / N;
  239.  
  240. for i=1:10
  241. subplot(2,5,i)
  242. plot(fr10, tf10_hm(:,i), 'bl');
  243. grid on
  244. title(['i= ' int2str(i)]);
  245. end
  246. %%%%%%% w28
  247.  
  248. N=n10;
  249. n_init=0:1:N-1;
  250. w_hamming28 = alfa - (1-alfa) *cos(2*pi*n_init/N);
  251.  
  252. for i=1:28
  253. S28_hamming(:,i)=Y28(:,i).*w_hamming28';
  254. end
  255.  
  256. figure(17)
  257. % for i=1:28
  258. % subplot(4,7,i)
  259. % plot(n_init, S28_hanning(:,i), 'bl');
  260. % grid on
  261. % title(['i= ' int2str(i)]);
  262. % end
  263. tf28_hm = fft(S28_hamming)/N;
  264. tf28_hm = abs(tf28_hm(1:N/2,:)); %taiem jumatate din spectru
  265. tf28_hm(2:N/2,:) = 2*tf28_hm(2:N/2,:);
  266.  
  267. fr28 = (0:1:N/2-1) * FS / N;
  268.  
  269. for i=1:28
  270. subplot(4,7,i)
  271. plot(fr28, tf28_hm(:,i), 'bl');
  272. grid on
  273. title(['i= ' int2str(i)]);
  274. end
  275.  
  276.  
  277. %%%%%%%%LAB4
  278.  
  279. %%Tabel tot intervalul
  280. %signal_window_dr
  281. signal_window_drept_fft = fft(Y30)/N;
  282. signal_window_drept_fft = abs(signal_window_drept_fft(1:N/2,:));
  283. signal_window_drept_fft(2:N/2,:) = 2*signal_window_drept_fft(2:N/2,:);
  284.  
  285. [Amax_dr,iAmax_dr] = max(signal_window_drept_fft);
  286. FAmax_dr = (iAmax_dr - 1) * FS / N;
  287.  
  288. %signal_window_Hanning
  289. signal_window_Hanning_fft = fft(signal_window_Hanning)/N;
  290. signal_window_Hanning_fft = abs(signal_window_Hanning_fft(1:N/2,:));
  291. signal_window_Hanning_fft(2:N/2,:) = 2*signal_window_Hanning_fft(2:N/2,:);
  292.  
  293. [Amax_hn,iAmax_hn] = max(signal_window_Hanning_fft);
  294. FAmax_hn = (iAmax_hn - 1) * FS / N;
  295.  
  296. %signal_window_Hamming
  297. signal_window_Hamming_fft = fft(signal_window_Hamming)/N;
  298. signal_window_Hamming_fft = abs(signal_window_Hamming_fft(1:N/2,:));
  299. signal_window_Hamming_fft(2:N/2,:) = 2*signal_window_Hamming_fft(2:N/2,:);
  300.  
  301. [Amax_hm,iAmax_hm] = max(signal_window_Hamming_fft);
  302. FAmax_hm = (iAmax_hm - 1) * FS / N;
  303.  
  304. fprintf('\n\nTabel interval intreg');
  305. fprintf('\nTip fereastra \t\t Dreptunghiulara \t\t Hanning \t\t Hamming');
  306. fprintf('\nAmax \t\t\t %d \t\t %d \t\t %d',Amax_dr,Amax_hn,Amax_hm);
  307. fprintf('\nF(Amax) \t\t %d \t\t %d \t\t %d',FAmax_dr,FAmax_hn,FAmax_hm);
  308.  
  309.  
  310.  
  311. %%%%%%%%%%
  312. %%DREPTUNGHIuLAR TOT INTERVALu
  313. fprintf('\n\nCorectie pentru fereastra dreptunghiulara');
  314. A1 = signal_window_drept_fft(iAmax_dr);
  315. A2 = max(signal_window_drept_fft(iAmax_dr-1), signal_window_drept_fft(iAmax_dr+1));
  316.  
  317. dF = FS / (N);
  318. dFc = A2/(A1+A2) * dF;
  319.  
  320. A = A1 / abs( sin(pi * dFc / dF) / (pi * dFc / dF) );
  321.  
  322. fprintf('\nAmax_formula = %f',A);
  323. fprintf('\ndFc = %f',dFc); %corectie de frecventa
  324.  
  325. fprintf('\nCorectie: FAmax_real = FAmax+dFc = %f',FAmax_dr+dFc); %corectie de frecventa
  326. %%%%%%%%%
  327. %%%%%%%%%%
  328. %%HANnING TOT INTERVALu
  329. fprintf('\n\nCorectie pentru fereastra Hanning');
  330. A1_hn = signal_window_Hanning_fft(iAmax_hn);
  331. A2_hn = max(signal_window_Hanning_fft(iAmax_hn-1), signal_window_Hanning_fft(iAmax_hn+1));
  332.  
  333. dF = FS / (N);
  334. dFc = (2*A2 - A1)/(A1+A2) * dF;
  335.  
  336. A = A1 / ( abs( sin(pi * dFc / dF) / (pi * dFc / dF) ) * (1 / (1 - (dFc / dF)^2)) );
  337.  
  338. fprintf('\nAmax_formula = %f',A);
  339. fprintf('\ndFc = %f',dFc); %corectie de frecventa
  340.  
  341. fprintf('\nCorectie: FAmax_real = FAmax+dFc = %f',FAmax_dr+dFc); %corectie de frecventa
  342. %%%%%%%%%
  343.  
  344.  
  345. %%Tabel subintervale disjuncte
  346. %tf10_hm
  347. %tf10_hn
  348. %tf10
  349. [Amax,iAmax] = max(tf10);
  350. FAmax = (iAmax - 1) * FS / N;
  351.  
  352. [Amax_hn,iAmax_hn] = max(tf10_hn);
  353. FAmax_hn = (iAmax_hn - 1) * FS / N;
  354.  
  355. [Amax_hm,iAmax_hm] = max(tf10_hm);
  356. FAmax_hm = (iAmax_hm - 1) * FS / N;
  357.  
  358. fprintf('\n\nTabel intervale disjuncte');
  359. fprintf('\nNR. sub \t\t\t\t Dreptunghiulara \t\t\t\t Hanning \t\t\t\t\t\t\t\t Hamming');
  360. fprintf('\n \t\t\t\t A F \t\t\t\t A F\t\t\t\t\t\tA F ');
  361.  
  362. for i=1:10
  363. fprintf('\n%d\t\t\t %d %d \t\t%d %d\t\t%d %d ',i,Amax(i),FAmax(i),Amax_hn(i),FAmax_hn(i),Amax_hm(i),FAmax_hm(i));
  364. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement