Lecture "Advanced Digital Signal Processing"

 

Basic Information
Lecturers: Gerhard Schmidt (lecture) and Christian Kanarski (exercise)
Room: Building F, room F-SR-II
E-mail: This email address is being protected from spambots. You need JavaScript enabled to view it.
Language: English
Target group: Students in electrical engineering and computer engineering
Prerequisites: Basic Knowledge about signals and systems
Contents:

Students attending this lecture should be able to implement efficient and robust signal processing structures. Knowledge about moving from the analog to the digital domain and vice versa including the involved effects (and trap doors) should be acquired. Also differences (advantages and disadvantages) between time and frequency domain approaches should be learnt.

Topic overview:

  • Digital processing of continuous-time signals
  • Efficient FIR structures
  • DFT and FFT
  • Digital filters (FIR filters/IIR filters)
  • Multirate digital signal processing
References: J. G. Proakis, D. G. Manolakis: Digital Signal Processing: Principles, Algorithms, and Applications, Prentice Hall,
S. K. Mitra: Digital Signal Processing: A Computer-Based Approach, McGraw Hill Higher Education, 2000
A. V. Oppenheim, R. W. Schafer: Discrete-time signal processing, Prentice Hall, 1999, 2nd edition
M. H. Hayes: Statistical Signal Processing and Modeling, John Wiley and Sons, 1996

 

News

There will be no exercise after the first lecture on Friday the 27.10.2023. The first exercise will be held after the lecture on Friday the 03.11.2023.

 

Lecture Slides

Link Content
Slides of the lecture "Introduction"
(Contents, literature, analog versus digital signal processing)
Slides of the lecture "Digital processing of continuous-time signals"
(Sampling, Quantization, AD and DA conversion)
Slides of the lecture "Efficient FIR structures"
(DFT and signal processing, FFT, DFT of real sequences)
Slides of the lecture "DFT/FFT"
(DFT and signal processing, FFT, DFT of real sequences)
Slides of the lecture "Digital filters"
(FIR filters, IIR filters, analysis and design)
Slides of the lecture "Multi-rate digital signal processing"
(Upsampling, downsampling, filter banks)

 

Exercises

Please note that the questionnaires will be uploaded every week before the excercises, if you download them earlier, you won't get the most recent version.

Link Content
Exercise 1: Sampling
Exercise 2: Quantization

 

Evaluation

Current evaluation Completed evaluations

 

Matlab demos

Matlab file for the comparison of window sequences (click to expand)

%**************************************************************************
% Comparison of "standard" and a bit more "advanced" window functions
%**************************************************************************

%**************************************************************************
% Basis parameters
%**************************************************************************
N_win =   64;
N_dft = 1024*16;

%**************************************************************************
% Basic windows - rectangle window
%**************************************************************************
h_rec     = ones(N_win,1);
h_rec     = h_rec / sum(h_rec);

H_rec     = fft(h_rec,N_dft);
H_rec     = H_rec(1:N_dft/2+1);
H_rec_log = 20*log10(abs(H_rec)+eps);

%**************************************************************************
% Basic windows - Hann window
%**************************************************************************
h_han     = hann(N_win);
h_han     = h_han / sum(h_han);

H_han     = fft(h_han,N_dft);
H_han     = H_han(1:N_dft/2+1);
H_han_log = 20*log10(abs(H_han)+eps);

%**************************************************************************
% Basic windows - Hamming window
%**************************************************************************
h_ham     = hamming(N_win);
h_ham     = h_ham / sum(h_ham);

H_ham     = fft(h_ham,N_dft);
H_ham     = H_ham(1:N_dft/2+1);
H_ham_log = 20*log10(abs(H_ham)+eps);

%**************************************************************************
% Advanced windows - "Chebyshev" window
%**************************************************************************
h_che     = chebwin(N_win,10);
h_che     = h_che / sum(h_che);

H_che     = fft(h_che,N_dft);
H_che     = H_che(1:N_dft/2+1);
H_che_log = 20*log10(abs(H_che)+eps);

%**************************************************************************
% Advanced windows - "Prolate" window
%**************************************************************************
h_pro     = dpss(N_win,1.18);
h_pro     = h_pro / sum(h_pro);

H_pro     = fft(h_pro,N_dft);
H_pro     = H_pro(1:N_dft/2+1);
H_pro_log = 20*log10(abs(H_pro)+eps);

%**************************************************************************
% Show results
%**************************************************************************
fig = figure(1);
f = (0:N_dft/2)/N_dft*2;

plot(f,H_rec_log,'b', ...
     f,H_han_log,'r', ...
     f,H_ham_log,'k', ...
     f,H_che_log,'m', ...
     f,H_pro_log,'c', ...
     'LineWidth',2);
legend('Rectangle window', ...
       'Hann window', ...
       'Hamming window', ...
       'Chebyshev window', ...
       'Prolate spheroidal window')
grid on;
xlabel('Normalized frequency $\Omega/\pi$','interpreter','latex');
ylabel('dB')
ylim([-90 10])

Matlab file for the effects of quantization on filter design (click to expand)

%**************************************************************************
% Design parameters
%**************************************************************************
N   =  8;     % Filter order
f_c =  0.1;   % Normalized cut-off frequency (0 ... 1)
R_p =  0.5;   % Ripple in dB in passband
R_s = 80;     % Stopband attenuation in dB

%**************************************************************************
% Design of an elliptic lowpass filter
%**************************************************************************
[b,a] = ellip(N, R_p, R_s, f_c);

%**************************************************************************
% Show frequency response
%**************************************************************************
fig = figure(1);
set(fig,'Units','Normalized');
set(fig,'Position',[0.1 0.1 0.8 0.8]);
[H,Omega] = freqz(b,a,2048*4,'whole',2);
plot(Omega,20*log10(abs(H)+eps),'b','LineWidth',2);
grid on
axis([0 2 (-R_s -20) 20])
xlabel('Normalized frequency \Omega/\pi')
ylabel('dB')


%**************************************************************************
% Quantization
%**************************************************************************
B = 32; % Number of bits

a_max = max(abs(a));
b_max = max(abs(b));

a_q = round(a / a_max * 2^B) / 2^B * a_max;
b_q = round(b / b_max * 2^B) / 2^B * b_max;

%**************************************************************************
% Show frequency response of quantized filter
%**************************************************************************
[H_q,Omega] = freqz(b_q,a_q,2048*4,'whole',2);
hold on;
plot(Omega,20*log10(abs(H_q)+eps),'r','LineWidth',2);
hold off;
legend('Non-quantized',['Quantized with ',num2str(B),' bits'])

%**************************************************************************
% Show coefficients
%**************************************************************************
format long;
a
a_q
b
b_q

%**************************************************************************
% Transform to cascade of biquad filters
%**************************************************************************
[sos,g] = tf2sos(b,a);

[L,L_tmp] = size(sos);

sos_q = round(sos / max(max(abs(sos))) * 2^B) / 2^B * max(max(abs(sos)));
g_q   = round(g^(1/L) * 2^B) / 2^B;

H_bq_q = freqz(g_q*sos_q(1,1:3),sos_q(1,4:6),2048*4,'whole',2);
for k = 2:L
    H_bq_q = H_bq_q .* freqz(g_q*sos_q(k,1:3),sos_q(k,4:6),2048*4,'whole',2);
end;

%**************************************************************************
% Show frequency response of quantized biquad filters
%**************************************************************************
[H_q,Omega] = freqz(b_q,a_q,2048*4,'whole',2);
hold on;
plot(Omega,20*log10(abs(H_bq_q)+eps),'k','LineWidth',2);
hold off;
legend('Non-quantized',['Quantized with ',num2str(B),' bits'],...
       'Biquad structure (also qunatized)');

 

Exams

Remember to register for the exam in the QiS system! And book a time-slot for your oral exam using this form.