% ################################################################################## % ## Loesung: Fensterfunktionen ## % ## -------------------------------------------------------------------------- ## % ## Benoetigte(s) m-File(s): ldtft.m ## % ################################################################################## % ##### Teilaufgabe a: Fenstertyp berechnen ##### window_length=[21 42]; for n=window_length %%%Rechteckfenster%%% n_find = find(n==window_length); tltstr = 'Rechteck-Fenster'; rw = boxcar(n); [Rw W] = ldtft(rw,512); i=find(abs(Rw)==0); % Vermeidung von Werten==0 Rw(i)=1e-100*ones(size(i)); if n_find==1 figure;plot(W/pi,20*log10(abs(Rw/max(Rw)))); axis([-1 1 -80 0]);grid;hold on; end; plot(W/pi, 20*log10(abs(Rw/max(Rw))),'--'); xlabel('Omega/pi'); ylabel('|F(exp(j*Omega))/F(exp(j*0))| in dB');title([tltstr,' m: - 21 -- 42']); end; hold off; figure; stem(0:n-1,rw);grid; xlabel('k'); ylabel('f(k)'); title(tltstr); for n=window_length %%%von Hann%%% n_find = find(n==window_length); tltstr = 'von Hann-Fenster'; rh = hanning(n); [Rh W] = ldtft(rh,512); i=find(abs(Rh)==0); % Vermeidung von Werten==0 Rh(i)=1e-100*ones(size(i)); if n_find==1 figure;plot(W/pi,20*log10(abs(Rh/max(Rh)))); axis([-1 1 -80 0]);grid;hold on; end; plot(W/pi,20*log10(abs(Rh/max(Rh))),'--'); xlabel('Omega/pi'); ylabel('|F(exp(j*Omega))/F(exp(j*0))| in dB');title([tltstr,' m: - 21 -- 42']); end; hold off; figure; stem(0:n-1,rh);grid; xlabel('k'); ylabel('f(k)'); title(tltstr); for n=window_length %%%Hamming%%% n_find = find(n==window_length); tltstr = 'Hamming-Fenster'; rhm = hamming(n); [Rhm W] = ldtft(rhm,512); i=find(abs(Rhm)==0); % Vermeidung von Werten==0 Rhm(i)=1e-100*ones(size(i)); if n_find==1 figure;plot(W/pi,20*log10(abs(Rhm/max(Rhm))));axis([-1 1 -80 0]);grid;hold on; end; plot(W/pi,20*log10(abs(Rhm/max(Rhm))),'--'); xlabel('Omega/pi'); ylabel('|F(exp(j*Omega))/F(exp(j*0))| in dB');title([tltstr,' m: - 21 -- 42']); end; hold off; figure; stem(0:n-1,rhm);grid; xlabel('k'); ylabel('f(k)'); title(tltstr); for n=window_length %%%Blackman%%% n_find = find(n==window_length); tltstr = 'Blackman-Fenster'; rhb = blackman(n); [Rhb W] = ldtft(rhb,512); i=find(abs(Rhb)==0); % Vermeidung von Werten==0 Rhb(i)=1e-100*ones(size(i)); if n_find==1 figure;plot(W/pi,20*log10(abs(Rhb/max(Rhb))));axis([-1 1 -80 0]);grid;hold on; end; plot(W/pi,20*log10(abs(Rhb/max(Rhb))),'--'); xlabel('Omega/pi'); ylabel('|F(exp(j*Omega))/F(exp(j*0))| in dB');title([tltstr,' m: - 21 -- 42']); end; hold off; figure; stem(0:n-1,rhb);grid; xlabel('k'); ylabel('f(k)'); title(tltstr); for n=window_length %%%Bartlett%%% n_find = find(n==window_length); tltstr = 'Bartlett-Fenster'; rhbt = bartlett(n); [Rhbt W] = ldtft(rhbt,512); i=find(abs(Rhbt)==0); % Vermeidung von Werten==0 Rhbt(i)=1e-100*ones(size(i)); if n_find==1 figure;plot(W/pi,20*log10(abs(Rhbt/max(Rhbt))));axis([-1 1 -80 0]);grid; hold on; end; plot(W/pi,20*log10(abs(Rhbt/max(Rhbt))),'--'); xlabel('Omega/pi'); ylabel('|F(exp(j*Omega))/F(exp(j*0))| in dB');title([tltstr,' m: - 21 -- 42']); end; hold off; figure; stem(0:n-1,rhbt);grid; xlabel('k'); ylabel('f(k)'); title(tltstr); % ##### Teilaufgabe b: Kaiser-Fenster berechnen ##### w0 = kaiser(21,0); [W0 W] = ldtft(w0,512); w3 = kaiser(21,3); W3 = ldtft(w3,512); w6 = kaiser(21,6); W6 = ldtft(w6,512); k=0:20; figure; plot(W/pi,20*log10(abs(W0/max(W0)))); xlabel('Omega/pi');axis([-1 1 -80 0]); ylabel('|F(exp(j*Omega))/F(exp(j*0))| in dB'); hold on; plot(W/pi,20*log10(abs(W3/max(W3))),'--');plot(W/pi,20*log10(abs(W6/max(W6))),'-.'); hold off; title('Kaiser-Fenster: beta: - 0, -- 3, -. 6'); grid; figure; plot(k,w0); xlabel('k');ylabel('f(k)');hold on; plot(k,w3,'--'); plot(k,w6,'-.'); axis([0 20 0 1.2]); hold off; title('Kaiser-Fenster: beta: - 0, -- 3, -. 6 '); grid % ##### EOF #####