DIS10/matlab/DIS10_lab2_0.m
2024-02-22 11:35:19 +01:00

65 lines
1.3 KiB
Matlab

[ x, Fs ] = audioread("0964590.wav");
Fs
X = fftshift(fft(x));
dF = Fs / length(X);
dOmega = 2*pi / length(X);
f = -Fs/2 : dF : (Fs-dF)/2; % opd 2.1
omega = -pi : dOmega : pi-dOmega; % opd 2.2
%plot(f, 20 * log10(abs(X))); % opd 2.1
%plot(omega, 20 * log10(abs(X))); % opd 2.2
%title('Frequentiespectrum |X(f)|');
%xlabel('f (Hz)');
%ylabel('|X| (dB)');
%grid;
Oc = 0.461983;
Og = 0.05;
filterOrde = 1024*1024;
Oa = Oc - 0.5*Og;
Ob = Oc + 0.5*Og;
H = ones(1, length(X));
for i = round((pi-Oa)/dOmega) : round((pi-Ob)/dOmega)
H(i) = 0;
end
for i = round((pi+Oa)/dOmega) : round((pi+Ob)/dOmega)
H(i) = 0;
end
%plot(omega, H);
%title('filter ding |H(f)|');
%xlabel('f (Hz)');
%ylabel('|X| (dB)');
%grid;
h = zeros(1, length(filterOrde));
j = 1i;
n = 0 : filterOrde/2;
%h = 1/(2*pi) * ( exp(i*Ob*n) - exp(i*Oa*n) + exp(i*-Ob*n) - exp(i*-Oa*n) )/exp(j*n);
%h(n==0) = 1/(2*pi) * Og*2;
h = ( exp(j*Oa*n) - 1 ...
+ exp(j*(2*pi)*n) - exp(j*(2*pi-Oa)*n) ...
+ exp(j*(2*pi-Ob)*n) - exp(j*Ob*n) ...
)./(j*n*(2*pi));
h(n==0) = 1/(2*pi) * 2*pi - Og*2;
%plot(0 : filterOrde/2, h);
Fa = Oa * Fs/(2*pi)
Fb = Ob * Fs/(2*pi)
freqz(h, 1, 0 : Fs/2, Fs);
y = conv(x, h, 'same');
Y = fftshift(fft(y));
dF = Fs / length(Y);
f = -Fs/2 : dF : (Fs-dF)/2;
%plot(f, 20 * log10(abs(Y)));