Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- clc;
- clear all;
- format long
- [Y,FS,NBITS] = wavread('fisiere/u15.wav');
- [N,M] = size(Y);
- figure(1)
- plot(Y(:,1))
- Y2 = Y(1:55300);
- N=55300;
- figure(2)
- plot(Y2(:,1))
- wavwrite(Y2, FS, NBITS, 'scurtat.wav');
- n = 55300;
- length(Y2);
- t = (0:1:n-1)/FS;
- % figure(3);
- % plot(t, Y2, 'b')
- % xlabel('timp[sec]')
- % ylabel('amplitudine')
- % grid on
- % title('Reprezentarea in domeniul timp')
- %valori minime/maxime
- v_min = min(Y2)
- v_max = max(Y2)
- %abaterea medie standard
- std0 = std(Y2)
- c1 = polyfit(t,Y2',1);
- z1 = polyval(c1, t);
- std1 = std(Y2-z1')
- c2 = polyfit(t,Y2',2);
- z2 = polyval(c2, t);
- std2 = std(Y2-z2')
- c3 = polyfit(t,Y2',3);
- z3 = polyval(c3, t);
- std3 = std(Y2-z3')
- f = 0:FS/n:FS-FS/n;
- tf = fft(Y2);
- % figure(4);
- % length(f)
- % length(tf)
- % stem(f, abs(tf), 'r');
- % xlabel('frequency[Hz]')
- % ylabel('amplitudine')
- % grid on
- % title('Reprezentarea in domeniul frecventa')
- %L2
- n30=floor(n/30)*30; %n30 va fi multiplu de 30
- n10=n30/10; %n30 va fi multiplu de 30
- Y30 = Y2(1:n30);
- t2 = t(1:n30);
- % figure(5);
- % plot(t2, Y30, 'b')
- % xlabel('timp[sec]')
- % ylabel('amplitudine')
- % grid on
- % title('Reprezentarea in domeniul timp')
- tf2 = fft(Y30);
- f2=0:FS/n30:FS/2-FS/n30;
- tf2=tf2/n30;
- tf2(2:n30/2)=2*(tf2(2:n30/2));
- tf3=tf2(1:n30/2);
- tf3=abs(tf3);
- % figure(6);
- % plot(f2,tf3, 'r');
- % xlabel('frequency[Hz]')
- % ylabel('power')
- % grid on
- % title('Reprezentarea in domeniul frecventa')
- % figure(7);
- % semilogy(f2,tf3,'r');
- % xlabel('frequency[Hz]')
- % ylabel('power log')
- % grid on
- % title('Reprezentarea in domeniul frecventa')
- %Y30(2)
- Y10 = reshape(Y30, n10, 10);
- %Y10(2,1)
- Y28 = zeros(n10, 28);
- for i=1:28
- Y28(:,i) = Y30(1+(i-1)*n10/3:n10+(i-1)*n10/3);
- end
- %Y30(1+n10/3)
- %Y28(1,2)
- tf10 = fft(Y10)/n10;
- tf10 = abs(tf10(1:n10/2,:)); %taiem jumatate din spectru
- tf10(2:n10/2,:) = 2*tf10(2:n10/2,:);
- fr10 = (0:1:n10/2-1) * FS / n10;
- % figure(8)
- % for i=1:10
- % subplot(2,5,i)
- % plot(fr10, tf10(1:n10/2, i), 'bl');
- % grid on
- % end
- tf28 = fft(Y28)/n10;
- tf28 = abs(tf28(1:n10/2,:)); %taiem jumatate din spectru
- tf28(2:n10/2,:) = 2*tf28(2:n10/2,:);
- % figure(9)
- % for i=1:28
- % subplot(4,7,i)
- % plot(fr10, tf28(1:n10/2, i), 'bl');
- % grid on
- % title(['Si= ' int2str(i)]);
- % end
- %%%%% Lab 3 %%%%%
- N=n30;
- n_init = 0:1:N-1;
- w_hanning = sin(n_init*pi/N).^2;
- length(Y30);
- length(w_hanning);
- signal_window_Hanning = Y30.*w_hanning';
- figure(10)
- title('Hanning window');
- plot(t2, w_hanning);
- figure(11)
- title('Signal windowed with Hanning');
- plot(t2, signal_window_Hanning);
- alfa = 25/46;
- w_hamming = alfa - (1 - alfa) * cos(2*pi*n_init/N);
- length(w_hamming);
- signal_window_Hamming = Y30.*w_hamming';
- figure(12)
- title('Hanning window');
- plot(t2, w_hamming);
- figure(13)
- title('Signal windowed with Hanning');
- plot(t2, signal_window_Hamming);
- %%%%%%%%%%%% Hanning %%%%%%%%%%%
- %%%%%% w10
- N=n10;
- n_init=0:1:N-1;
- w_hanning10 = sin(n_init*pi/N).^2;
- for i=1:10
- S10_hanning(:,i)=Y10(:,i).*w_hanning10';
- end
- figure(14)
- % for i=1:10
- % subplot(2,5,i)
- % plot(n_init, S10_hanning(:,i), 'bl');
- % grid on
- % title(['i= ' int2str(i)]);
- % end
- tf10_hn = fft(S10_hanning)/N;
- tf10_hn = abs(tf10_hn(1:N/2,:)); %taiem jumatate din spectru
- tf10_hn(2:N/2,:) = 2*tf10_hn(2:N/2,:);
- fr10 = (0:1:N/2-1) * FS / N;
- for i=1:10
- subplot(2,5,i)
- plot(fr10, tf10_hn(:,i), 'bl');
- grid on
- title(['i= ' int2str(i)]);
- end
- %%%%%%% w28
- N=n10;
- n_init=0:1:N-1;
- w_hanning28 = sin(n_init*pi/N).^2;
- for i=1:28
- S28_hanning(:,i)=Y28(:,i).*w_hanning28';
- end
- figure(15)
- % for i=1:28
- % subplot(4,7,i)
- % plot(n_init, S28_hanning(:,i), 'bl');
- % grid on
- % title(['i= ' int2str(i)]);
- % end
- tf28_hn = fft(S28_hanning)/N;
- tf28_hn = abs(tf28_hn(1:N/2,:)); %taiem jumatate din spectru
- tf28_hn(2:N/2,:) = 2*tf28_hn(2:N/2,:);
- fr28 = (0:1:N/2-1) * FS / N;
- for i=1:28
- subplot(4,7,i)
- plot(fr28, tf28_hn(:,i), 'bl');
- grid on
- title(['i= ' int2str(i)]);
- end
- %%%%%%%%%%%%% Hamming %%%%%%%%%%%%
- %%%%%%% w10
- N=n10;
- n_init=0:1:N-1;
- w_hamming10 = alfa - (1-alfa) *cos(2*pi*n_init/N);
- for i=1:10
- S10_hamming(:,i)=Y10(:,i).*w_hamming10';
- end
- figure(16)
- % for i=1:10
- % subplot(2,5,i)
- % plot(n_init, S10_hanning(:,i), 'bl');
- % grid on
- % title(['i= ' int2str(i)]);
- % end
- tf10_hm = fft(S10_hamming)/N;
- tf10_hm = abs(tf10_hm(1:N/2,:)); %taiem jumatate din spectru
- tf10_hm(2:N/2,:) = 2*tf10_hm(2:N/2,:);
- fr10 = (0:1:N/2-1) * FS / N;
- for i=1:10
- subplot(2,5,i)
- plot(fr10, tf10_hm(:,i), 'bl');
- grid on
- title(['i= ' int2str(i)]);
- end
- %%%%%%% w28
- N=n10;
- n_init=0:1:N-1;
- w_hamming28 = alfa - (1-alfa) *cos(2*pi*n_init/N);
- for i=1:28
- S28_hamming(:,i)=Y28(:,i).*w_hamming28';
- end
- figure(17)
- % for i=1:28
- % subplot(4,7,i)
- % plot(n_init, S28_hanning(:,i), 'bl');
- % grid on
- % title(['i= ' int2str(i)]);
- % end
- tf28_hm = fft(S28_hamming)/N;
- tf28_hm = abs(tf28_hm(1:N/2,:)); %taiem jumatate din spectru
- tf28_hm(2:N/2,:) = 2*tf28_hm(2:N/2,:);
- fr28 = (0:1:N/2-1) * FS / N;
- for i=1:28
- subplot(4,7,i)
- plot(fr28, tf28_hm(:,i), 'bl');
- grid on
- title(['i= ' int2str(i)]);
- end
- %%%%%%%%LAB4
- %%Tabel tot intervalul
- %signal_window_dr
- signal_window_drept_fft = fft(Y30)/N;
- signal_window_drept_fft = abs(signal_window_drept_fft(1:N/2,:));
- signal_window_drept_fft(2:N/2,:) = 2*signal_window_drept_fft(2:N/2,:);
- [Amax_dr,iAmax_dr] = max(signal_window_drept_fft);
- FAmax_dr = (iAmax_dr - 1) * FS / N;
- %signal_window_Hanning
- signal_window_Hanning_fft = fft(signal_window_Hanning)/N;
- signal_window_Hanning_fft = abs(signal_window_Hanning_fft(1:N/2,:));
- signal_window_Hanning_fft(2:N/2,:) = 2*signal_window_Hanning_fft(2:N/2,:);
- [Amax_hn,iAmax_hn] = max(signal_window_Hanning_fft);
- FAmax_hn = (iAmax_hn - 1) * FS / N;
- %signal_window_Hamming
- signal_window_Hamming_fft = fft(signal_window_Hamming)/N;
- signal_window_Hamming_fft = abs(signal_window_Hamming_fft(1:N/2,:));
- signal_window_Hamming_fft(2:N/2,:) = 2*signal_window_Hamming_fft(2:N/2,:);
- [Amax_hm,iAmax_hm] = max(signal_window_Hamming_fft);
- FAmax_hm = (iAmax_hm - 1) * FS / N;
- fprintf('\n\nTabel interval intreg');
- fprintf('\nTip fereastra \t\t Dreptunghiulara \t\t Hanning \t\t Hamming');
- fprintf('\nAmax \t\t\t %d \t\t %d \t\t %d',Amax_dr,Amax_hn,Amax_hm);
- fprintf('\nF(Amax) \t\t %d \t\t %d \t\t %d',FAmax_dr,FAmax_hn,FAmax_hm);
- %%%%%%%%%%
- %%DREPTUNGHIuLAR TOT INTERVALu
- fprintf('\n\nCorectie pentru fereastra dreptunghiulara');
- A1 = signal_window_drept_fft(iAmax_dr);
- A2 = max(signal_window_drept_fft(iAmax_dr-1), signal_window_drept_fft(iAmax_dr+1));
- dF = FS / (N);
- dFc = A2/(A1+A2) * dF;
- A = A1 / abs( sin(pi * dFc / dF) / (pi * dFc / dF) );
- fprintf('\nAmax_formula = %f',A);
- fprintf('\ndFc = %f',dFc); %corectie de frecventa
- fprintf('\nCorectie: FAmax_real = FAmax+dFc = %f',FAmax_dr+dFc); %corectie de frecventa
- %%%%%%%%%
- %%%%%%%%%%
- %%HANnING TOT INTERVALu
- fprintf('\n\nCorectie pentru fereastra Hanning');
- A1_hn = signal_window_Hanning_fft(iAmax_hn);
- A2_hn = max(signal_window_Hanning_fft(iAmax_hn-1), signal_window_Hanning_fft(iAmax_hn+1));
- dF = FS / (N);
- dFc = (2*A2 - A1)/(A1+A2) * dF;
- A = A1 / ( abs( sin(pi * dFc / dF) / (pi * dFc / dF) ) * (1 / (1 - (dFc / dF)^2)) );
- fprintf('\nAmax_formula = %f',A);
- fprintf('\ndFc = %f',dFc); %corectie de frecventa
- fprintf('\nCorectie: FAmax_real = FAmax+dFc = %f',FAmax_dr+dFc); %corectie de frecventa
- %%%%%%%%%
- %%Tabel subintervale disjuncte
- %tf10_hm
- %tf10_hn
- %tf10
- [Amax,iAmax] = max(tf10);
- FAmax = (iAmax - 1) * FS / N;
- [Amax_hn,iAmax_hn] = max(tf10_hn);
- FAmax_hn = (iAmax_hn - 1) * FS / N;
- [Amax_hm,iAmax_hm] = max(tf10_hm);
- FAmax_hm = (iAmax_hm - 1) * FS / N;
- fprintf('\n\nTabel intervale disjuncte');
- fprintf('\nNR. sub \t\t\t\t Dreptunghiulara \t\t\t\t Hanning \t\t\t\t\t\t\t\t Hamming');
- fprintf('\n \t\t\t\t A F \t\t\t\t A F\t\t\t\t\t\tA F ');
- for i=1:10
- 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));
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement