59 lines
1.1 KiB
Plaintext
59 lines
1.1 KiB
Plaintext
[ 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.01;
|
|
filterOrde = 128;
|
|
|
|
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);
|
|
|
|
conv()
|
|
|