Files
matlab/common/buch/l15.m
T
2022-06-30 13:32:40 +02:00

112 lines
4.4 KiB
Matlab
Executable File

% ##################################################################################
% ## 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 #####