diff --git a/.gitmodule b/.gitmodule new file mode 100644 index 0000000..d5519a5 --- /dev/null +++ b/.gitmodule @@ -0,0 +1,3 @@ +[module "wiki"] + path = wiki + url = https://bitbucket.org/HR_ELEKTRO/dis10.git/wiki diff --git a/matlab/0964590.wav b/matlab/0964590.wav new file mode 100644 index 0000000..6447b97 Binary files /dev/null and b/matlab/0964590.wav differ diff --git a/matlab/DIS10_lab1_1_1 b/matlab/DIS10_lab1_1_1 new file mode 100644 index 0000000..b472ddf --- /dev/null +++ b/matlab/DIS10_lab1_1_1 @@ -0,0 +1,4 @@ +a = [1, -0.9, 0.6, -0.4] +b = [0.5, -0.9] + +impz(b, a, 10) \ No newline at end of file diff --git a/matlab/DIS10_lab1_1_1.asv b/matlab/DIS10_lab1_1_1.asv new file mode 100644 index 0000000..97d1013 --- /dev/null +++ b/matlab/DIS10_lab1_1_1.asv @@ -0,0 +1,14 @@ + +c_6=0; +c_5=9; +c_4=6; +c_3=4; +c_2=5; +c_1=9; +c_0=0; + +a = [1, -0.1*c_5, 0.1*c_4, -0.c_3]; +b = [0.1*c_2, -0.1*c_1, 0.1*c_0]; + +%impz(b, a, 10) % opd B +stepz(b, a, 25) % opd C diff --git a/matlab/DIS10_lab1_1_1.m b/matlab/DIS10_lab1_1_1.m new file mode 100644 index 0000000..9366d4a --- /dev/null +++ b/matlab/DIS10_lab1_1_1.m @@ -0,0 +1,15 @@ +%pkg load signal + +c_6=4;%c_6=0; +c_5=9; +c_4=6; +c_3=4; +c_2=5; +c_1=9; +c_0=4;%c_0=0; + +a = [1, -0.1*c_5, 0.1*c_4, -0.1*c_3]; +b = [0.1*c_2, -0.1*c_1, -0.1*c_0]; + +%impz(b, a, 10) % opd B +stepz(b, a, 25) % opd C diff --git a/matlab/DIS10_lab1_1_2.m b/matlab/DIS10_lab1_1_2.m new file mode 100644 index 0000000..0b318fa --- /dev/null +++ b/matlab/DIS10_lab1_1_2.m @@ -0,0 +1,6 @@ +pkg load signals + +a = [1, -0.4, 0.5]; +b = [0.9]; + +stepz(b, a, 100) diff --git a/matlab/DIS10_lab1_1_3.asv b/matlab/DIS10_lab1_1_3.asv new file mode 100644 index 0000000..6161f5d --- /dev/null +++ b/matlab/DIS10_lab1_1_3.asv @@ -0,0 +1,31 @@ + +[x, Fs] = audioread('wannabe_in_la.wav'); + +len = length(x) / Fs % opd A + +% opd B +ft_x = fft(x); +df = Fs / length(ft_x); +f = (0 : length(ft_x) - 1) .* df; +% plot(f, 20 * log10(abs(ft_x))) +% xlabel('f (Hz)') +% ylabel('|X| (dB)') +% title('Frequentiespectrum |X(f)|') +% grid + +Fc = 300; +p = Fs/(2*Fc) % opd C + +k = 10; % opd D +n = -k:k; +b = sin(pi * n / p) ./ (pi * n) ; +b(n == 0) = 1 / p; + +freqz(b, 1, 0:(Fs/2), Fs); + +tic; +y = conv(b, x); +toc; + + +soundsc(y, Fs) \ No newline at end of file diff --git a/matlab/DIS10_lab1_1_3.m b/matlab/DIS10_lab1_1_3.m new file mode 100644 index 0000000..07fc0e9 --- /dev/null +++ b/matlab/DIS10_lab1_1_3.m @@ -0,0 +1,43 @@ + +[x, Fs] = audioread('wannabe_in_la.wav'); + +len = length(x) / Fs % opd A + +% opd B +ft_x = fft(x); +df = Fs / length(ft_x); +f = (0 : length(ft_x) - 1) .* df; +% plot(f, 20 * log10(abs(ft_x))) +% xlabel('f (Hz)') +% ylabel('|X| (dB)') +% title('Frequentiespectrum |X(f)|') +% grid + +Fc = 300 + 100*5; +p = Fs/(2*Fc) % opd C + +% k = 10; % opd D +% k = 100; % opd F +k = 1000; % opd F +% k = 10000; % opd F +n = -k:k; +b = sin(pi * n / p) ./ (pi * n) ; +b(n == 0) = 1 / p; + +freqz(b, 1, 0:(Fs/2), Fs); + +tic; % opd G +y = conv(b, x); % opd E +toc; % opd G + +% opd H +ft_y = fft(y); +df = Fs / length(ft_y); +f = (0 : length(ft_y) - 1) .* df; +% plot(f, 20 * log10(abs(ft_x))) +% xlabel('f (Hz)') +% ylabel('|X| (dB)') +% title('Frequentiespectrum |X(f)|') +% grid + +soundsc(y, Fs) diff --git a/matlab/DIS10_lab1_1_6.asv b/matlab/DIS10_lab1_1_6.asv new file mode 100644 index 0000000..a50d4b8 --- /dev/null +++ b/matlab/DIS10_lab1_1_6.asv @@ -0,0 +1,25 @@ + +[x, Fs] = audioread('wannabe_in_la.wav'); +ft_x = fft(x); + +Fc = 300; +p = Fs/(2*Fc); + +H_f = zeros(length(ft_x), 1); +do = length(H_f)/(2*pi); +for k = 1:length(H_f) + if k < do*(pi/p) + H_f(k) = 1; + end + if k > do*(2*pi - pi/p) + H_f(k) = 1; + end +end + +tic; +ft_x = fft(x); + +ft_y = ft_x .* H_f; + +y = ifft(ft_y, 'symmetric'); +toc; \ No newline at end of file diff --git a/matlab/DIS10_lab1_1_6.m b/matlab/DIS10_lab1_1_6.m new file mode 100644 index 0000000..a50d4b8 --- /dev/null +++ b/matlab/DIS10_lab1_1_6.m @@ -0,0 +1,25 @@ + +[x, Fs] = audioread('wannabe_in_la.wav'); +ft_x = fft(x); + +Fc = 300; +p = Fs/(2*Fc); + +H_f = zeros(length(ft_x), 1); +do = length(H_f)/(2*pi); +for k = 1:length(H_f) + if k < do*(pi/p) + H_f(k) = 1; + end + if k > do*(2*pi - pi/p) + H_f(k) = 1; + end +end + +tic; +ft_x = fft(x); + +ft_y = ft_x .* H_f; + +y = ifft(ft_y, 'symmetric'); +toc; \ No newline at end of file diff --git a/matlab/DIS10_lab2_0.asv b/matlab/DIS10_lab2_0.asv new file mode 100644 index 0000000..f12e928 --- /dev/null +++ b/matlab/DIS10_lab2_0.asv @@ -0,0 +1,58 @@ +[ 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() + diff --git a/matlab/DIS10_lab2_0.m b/matlab/DIS10_lab2_0.m new file mode 100644 index 0000000..b9eb88d --- /dev/null +++ b/matlab/DIS10_lab2_0.m @@ -0,0 +1,64 @@ +[ 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))); diff --git a/matlab/DIS10_lab2_1_1.m b/matlab/DIS10_lab2_1_1.m new file mode 100644 index 0000000..68e6d03 --- /dev/null +++ b/matlab/DIS10_lab2_1_1.m @@ -0,0 +1 @@ +dsp_assign(0, 9, 6, 4, 5, 9, 0) \ No newline at end of file diff --git a/matlab/addfade.p b/matlab/addfade.p new file mode 100644 index 0000000..fe08622 Binary files /dev/null and b/matlab/addfade.p differ diff --git a/matlab/calcparam.p b/matlab/calcparam.p new file mode 100644 index 0000000..0bbfceb Binary files /dev/null and b/matlab/calcparam.p differ diff --git a/matlab/dsp_assign.p b/matlab/dsp_assign.p new file mode 100644 index 0000000..3d120cc Binary files /dev/null and b/matlab/dsp_assign.p differ diff --git a/matlab/fdacoefs.h b/matlab/fdacoefs.h new file mode 100644 index 0000000..9a28320 --- /dev/null +++ b/matlab/fdacoefs.h @@ -0,0 +1,35 @@ +/* + * Filter Coefficients (C Source) generated by the Filter Design and Analysis Tool + * Generated by MATLAB(R) 9.11 and DSP System Toolbox 9.13. + * Generated on: 04-May-2022 20:48:48 + */ + +/* + * Discrete-Time FIR Filter (real) + * ------------------------------- + * Filter Structure : Direct-Form FIR + * Filter Length : 15 + * Stable : Yes + * Linear Phase : Yes (Type 1) + * Arithmetic : fixed + * Numerator : s16,14 -> [-2 2) + * Input : s16,15 -> [-1 1) + * Filter Internals : Full Precision + * Output : s33,29 -> [-8 8) (auto determined) + * Product : s31,29 -> [-2 2) (auto determined) + * Accumulator : s33,29 -> [-8 8) (auto determined) + * Round Mode : No rounding + * Overflow Mode : No overflow + */ + +/* General type conversion for MATLAB generated C-code */ +#include "tmwtypes.h" +/* + * Expected path to tmwtypes.h + * /home/mreenen/.local/MATLAB/R2021b/extern/include/tmwtypes.h + */ +const int BL = 15; +const int16_T B[15] = { + -2107, -3477, -2950, 0, 4917, 10430, 14751, 16384, 14751, + 10430, 4917, 0, -2950, -3477, -2107 +}; diff --git a/matlab/inputsound.mat b/matlab/inputsound.mat new file mode 100644 index 0000000..2ece82c Binary files /dev/null and b/matlab/inputsound.mat differ diff --git a/matlab/wannabe_in_la.wav b/matlab/wannabe_in_la.wav new file mode 100644 index 0000000..f8926e0 Binary files /dev/null and b/matlab/wannabe_in_la.wav differ diff --git a/wiki b/wiki new file mode 160000 index 0000000..f8fd582 --- /dev/null +++ b/wiki @@ -0,0 +1 @@ +Subproject commit f8fd582a70ea8883b615a90d48a687940d87797c