Signale und Systeme - Modulation

1. Modulationssystem zur Sprachübertragung

Aufgabenstellung

Das nachfolgend dargestellte Modulationssystem dient zum Schutz einer Sprachübertragung gegen unerlaubtes Mithören. Ebenfalls ist das Spektrum des reellwertigen Eingangssignals \(u(t)\) für \(\omega > 0\) nachfolgend dargestellt.

  1. Analysieren Sie die Wirkungsweise der Schaltung durch Angabe der Spektren \(G_i(j\omega) = \mathcal{F}\{g_i(t)\}\) an den einzelnen Punkten \(i \in \{1,\,2,\,3,\,4\}\) der Schaltung.
  2. Ergänzen Sie die fehlenden Angaben \(\omega_S\) und \(\omega_D\) für das verwendete Hochpassfilter (HP) und das Tiefpassfilter (TP), wie sie nachfolgend spezifiziert sind.
  3. Zeigen Sie, dass das gleiche System auch zur Demodulation geeignet ist.

Umfang und Schwierigkeitsgrad

  • Zeitlicher Umfang: ca. 30 Minuten
  • Schwierigkeitsgrad: leicht

Lösung

  1. Zunächst ist zu beachten, dass Sprachsignale reellwertig sind und somit für das gegebene Spektrum Hermitesymmetrie vorliegt
        \(
            U(-j\omega) = U^\ast(j\omega) \quad \Rightarrow \quad |U(-j\omega)| = |U(j\omega)|.
        \)
    Die Analyse des Systems wird am besten unter Betrachtung der Spektren vorgenommen. Die Multiplikation mit dem Sinusträger bewirkt dabei
        \begin{align*}
            g_1(t)       &= u(t) \cdot \sin\left(\omega_1 t\right) \\
                            &\circ \!\! - \!\!\! - \!\! \bullet \\
            G_1(j\omega) &= \frac{1}{2\pi} U(j\omega) \ast \mathcal{F}\left\{\sin\left(\omega_1 t\right)\right\} \\
                         &= \frac{1}{2\pi} U(j\omega) \ast j\pi \left[\delta_0(\omega + \omega_1) - \delta_0(\omega - \omega_1)\right] \\
                         &= \frac{j}{2} \left[U(j \big(\omega + \omega_1)\big) - U(j \big(\omega - \omega_1)\big)\right]
        \end{align*}
    Auf gleiche Art und Weise kann die zweite Modulation behandelt werden.
    Für die Teilsignale ergeben sich die nachfolgenden Spektren:
  2. Die Parameter des Hochpassfilters sind so zu bestimmen, dass nur das obere Frequenzband durchgelassen wird. Das Tiefpassfilter soll nur das innere Frequenzband durchlassen. Beides Mal ist zu beachten, dass die Filter reellwertig sein sollen, das heißt, dass für die Frequenzgänge \(H(-j\omega) = H^\ast(j\omega)\) gelten muss.
    Für das Hochpassfilter muss gelten: \(19,7\;\textrm{kHz} \leq \frac{\omega_S}{2\pi} \leq \frac{\omega_D}{2\pi} \leq 20,3\;\textrm{kHz}.\) Für das Tiefpassfilter muss gelten: \(4,7\;\textrm{kHz} \leq \frac{\omega_D}{2\pi} \leq \frac{\omega_S}{2\pi} \leq 45,3\;\textrm{kHz}.\)
  3. Das Spektrum \(G_4(j\omega)\) als Eingangsspektrum annehmen und erneut das Ausgangssignal berechnen. Man erhält das gewichtete Signal \(\alpha \cdot u(t)\). Welchen Wert hat der Verstärkungsfaktor \(\alpha\)?
    Wie bereits in der Aufgabenstellung erwähnt eignet sich das System zur Demodulation. Der Verstärkungsfaktor ist \( \alpha=1/16\).

Matlab Demo

Achtung: Für diese Demo werden zusätliche Dateien benötigt. Eine Sammulung aller Matlab Beispiele inklusive zusätlicher Dateien befindet sich hier:

  Matlab examples from the exercises

%--------------------------------------------------------------------------
% Signals and Systems II - Exercise 1
%
% Sound example for the "encoded" speech signal.
%
%
% Nov. 2012, Nov. 2013, Nov. 2014
% Digital Signal Processing and System Theory
% Faculty of Engineering Christian-Albrechts-Universitt zu Kiel
% Jochen Withopf, 
%--------------------------------------------------------------------------

clear

%--------------------------------------------------------------------------
% Set parameters, initialize variables
%--------------------------------------------------------------------------
fs = 100000; % has to be high enough for the modulated signals

% --- Minimum and maximum signal frequency
fmin =  300;
fmax = 3400;

% --- Modulation frequencies
f1    = 20000;
f2    = 25000;

% --- Filter cutoff frequencies (3dB cutoffs, we don't use stop band and
%     pass band edge frequencies for simplicity here) and filter order N
fc_hp = 20000;
fc_tp = 10000;
N     = 12;

% --- Design butterworth/Chebychev filters
% [b_hp a_hp] = butter( N, fc_hp/fs*2, 'high');
% [b_tp a_tp] = butter( N, fc_tp/fs*2, 'low');
[b_hp, a_hp] = cheby2( N, 30, fc_hp/fs*2, 'high');
[b_tp, a_tp] = cheby2( N, 30, fc_tp/fs*2, 'low');

% --- Load input signal, bandlimit and upsample it to sample rate fs;
%[u, fs_sig] = wavread( 'signals/interview_heino.wav' );
[u, fs_sig] = wavread( 'signals/sprachnotiz_1.wav' );

[b, a] = butter( 4, [fmin fmax]/fs_sig*2 );
u = filter( b, a, u );
u = resample( u, fs, fs_sig );

%--------------------------------------------------------------------------
% Modulation system
%--------------------------------------------------------------------------
t = linspace(0, length(u)/fs, length(u));
t = t(:);    % make t a column vector

g1 = u.*sin(2*pi*f1*t);
g2 = filter(b_hp, a_hp, g1);
g3 = g2.*sin(2*pi*f2*t);
g4 = filter(b_tp, a_tp, g3);

%--------------------------------------------------------------------------
% Plots and sound
%--------------------------------------------------------------------------

N_win = 1024*4;

[pu, f] = pwelch(u, N_win,128,N_win,fs);
pg1     = pwelch(g1,N_win,128,N_win,fs);
pg2     = pwelch(g2,N_win,128,N_win,fs);
pg3     = pwelch(g3,N_win,128,N_win,fs);
pg4     = pwelch(g4,N_win,128,N_win,fs);

% [pu, f] = pwelch(u,N_win,128,N_win,fs,'twosided');
% pg1    = pwelch(g1,N_win,128,N_win,fs,'twosided');
% pg2    = pwelch(g2,N_win,128,N_win,fs,'twosided');
% pg3    = pwelch(g3,N_win,128,N_win,fs,'twosided');
% pg4    = pwelch(g4,N_win,128,N_win,fs,'twosided');

figure(1);
plot(f/1000, 10*log10([pu pg1 pg2 pg3 pg4]), 'LineWidth', 1);
legend('|U(f)|', '|G_1(f)|', '|G_2(f)|', '|G_3(f)|', '|G_4(f)|');
grid on;
xlabel('Frequency in kHz');
ylabel('Magnitude in dB');

%--------------------------------------------------------------------------
% Spectrograms
%--------------------------------------------------------------------------
u_dn  = resample(u, fs_sig, fs);
g4_dn = resample(g4, fs_sig, fs);
M     = round(40/1000*fs_sig);
ovl   = round(M*0.9);
t_dn  = linspace(0, length(u_dn)/fs_sig, length(u_dn));

figure(2);
sp(1) = subplot(4,2,1);
plot(t_dn, u_dn);
title('Eingangssignal u(t)');
grid on;
xlim([t_dn(1) t_dn(end)]);

sp(2) = subplot(4,2,2);
plot(t_dn, g4_dn);
title('Ausgangssignal g_4(t)');
grid on;

sp(3) = subplot(4,2,[3,5,7]);
[S,F,T] = spectrogram(u_dn, M, ovl, M, fs_sig);
imagesc(T,F,20*log10(abs(S)));
axis xy
ylim([0 fs_sig/4]);
xlabel('Zeit in Sekunden');
ylabel('Frequenz in Hz');

sp(4) = subplot(4,2,[4, 6, 8]);
[S,F,T] = spectrogram(g4_dn, M, ovl, M, fs_sig);
imagesc(T,F,20*log10(abs(S)));
axis xy
ylim([0 fs_sig/4]);
xlabel('Zeit in Sekunden');
ylabel('Frequenz in Hz');

linkaxes(sp, 'x');

2. Amplitudenmodulation

Aufgabenstellung

Gegeben ist das reellwertige, bandbegrenzte Signal \(v(t)\), für dessen Spektrum

\(V(j\omega) = 0 \quad \forall \, |\omega|>\omega_g\)

gilt. Zur Übertragung soll dieses Signal so modifiziert werden, dass das resultierende Spektrum \(V_c(j\omega)\) um die Frequenz \(\omega_T \gg \omega_g\) "verschoben" wird. Gelten soll also

\( V_c(j\omega) = 0 \quad \forall \, (\omega_T-\omega_g) > \omega > (\omega_T+\omega_g).\)

  1. Welcher Ansatz für eine solche Modifikation ergibt sich aus dem Modulationssatz? Wie kann das Ausgangssignal \(v(t)\) aus dem modulierten Signal \(v_c(t)\) zurückgewonnen werden?
  2. Was ist ein Nachteil der Modulationsmethode aus (a)? Die Zweiseitenband-Modulation (ZSB-Modulation) umgeht dieses Problem. Wie wird hier das modulierte Signal \(y_z(t)\) erzeugt und wie kann es demoduliert werden?
  3. Ein Nachteil der ZSB-Modulation wird ersichtlich, wenn man das Spektrum \(Y_z(j\omega)\) des modulierten Signals skizziert. Welche Erweiterung der ZSB-Modulation kann hier helfen, wie heißt diese Modulationsart und welche Vorteile bietet sie bei der Demodulation?
  4. Die Amplitudenmodulation ist ein weit verbreitetes, der ZSB-Modulation ähnliches, Verfahren. Worin bestehen die Gemeinsamkeiten?

Umfang und Schwierigkeitsgrad

  • Zeitlicher Umfang: ca. 30 Minuten
  • Schwierigkeitsgrad: leicht

Lösung

  1. Der Ansatz zur Modulation ergibt sich direkt aus dem Modulationssatz
                    \[
                         v(t)\,e^{j\omega_0 t} \;\circ \!\! - \!\!\! - \!\! \bullet\; V\big( j(\omega-\omega_0)\big).
                    \]
     Ebenso kann durch eine negative Verschiebung des Spektrums wieder demoduliert werden.
     Modulation: \(v_c(t) = v(t) \, e^{j\omega_T t}\); Demodulation: \(v(t) = v_c(t) \, e^{-j\omega_T t}\)
  2. Ein Nachteil ist, dass das mit dem Modulationsverfahren aus (a) gewonnene Signal komplexwertig ist. Dies ist zum Einen direkt aus der Definition \[v_c(t) = v(t) \, e^{j\omega_T t} \in \mathbb{C}\] ersichtlich, zum Anderen aber auch aus der fehlenden Hermitesymmetrie des Spektrums \[V(-j\omega)\neq V^\ast(j\omega).\]
        
        Die Zweiseitenbandmodulation liefert ein reellwertiges Signal, indem sie nur den Realteil des Trägers \[e^{j\omega_T t}\] benutzt:
        \[
            y_z(t) = v(t) \, \cos(\omega_T t).
        \]
    Demoduliert werden kann durch erneutes Multiplizieren mit \(\cos(\omega_T t)\) und passende Tiefpassfilterung. Dies kann man sich gut klarmachen, wenn man die verschobenen Spektren skizziert.Nachteil von 1.: \(v_c(t) \in \mathbb{C}\); Modulation: \(y_z(t) = v(t) \, \cos(\omega_T t)\); Demodulation: \(v(t) = \left[y_z(t) \, \cos(\omega_T t)\right]\ast h(t) \) mit \(h(t)\) Impulsantwort eines passenden Tiefpassfilters
  3. Skizziert man das Spektrum \[Y_z(j\omega)\] der ZSB-modulierten Signals so wird deutlich, dass die Information in den beiden um die Frequenz \[\pm \omega_T\] liegenden Seitenbändern steckt. Würde man diese Redundanz entfernen, könnte der frei werdende Frequenzbereich für andere Signale genutzt werden. Daher  verwendet die ESB-Modulation eine Bandpassfilterung um entweder das obere oder untere Seitenband zu eliminieren.

    Wie bei den in (a)-(c) behandelten Modulationsverfahren können auch  bei der ESB-Modulation zwei verschiedene Fehler im Trägersignal auftreten
          - Trägerfrequenzfehler \(\Delta \omega\) und
          - Trägerphasenfehler \(\varphi\).
    Damit verändert sich das Trägersignal zu
    \[
        \cos(\omega t) \;\Rightarrow\; \cos\big((\omega_T+\Delta\omega)t + \varphi \big).
    \]
    Ein Fehler \(\Delta \omega\) in der Trägerfrequenz bewirkt, dass bei der Demodulation die Spektren nicht korrekt in den Durchlassbereich des Demodulationstiefpassfilters verschoben werden. Bei der ZSB-Modulation überlagern sich dabei zwei Spektren nicht optimal, während bei der ESB-Modulation "`nur"' eine Lücke um die Frequenz \(\omega=0\) entsteht.

    Nachteil von 2.: Verminderte Bandbreiteneffizienz, da jedes Seitenband von \(y_z(t)\) die Information des Signals trägt; Lösung: Einsteitenband Modulation (ESB-Modulation); Vorteil: Trägerfrequenzfehler bei Demodulation weniger kritisch als bei ZSB-Modulation
  4. Die Amplitudenmodulation ist eine ZSB-Modulation, bei der die Trägerschwingung mitübertragen wird:
    \(\begin{align*}
            y_a(t) &= \big[1+m\,v(t)\big] \cos(\omega_T t) \\
                   &= \cos(\omega_T t) + m\underbrace{v(t)\cos(\omega_T t)}_{y_z(t)}.
        \end{align*}\)
    Die zusätzlich übertragene Trägerschwingung verschlechtert zwar die Energieeffizienz des Verfahrens, erleichtert aber, Trägerphasenfehler in der Demodulation zu korrigieren.

Matlab Demo

Achtung: Für diese Demo werden zusätliche Dateien benötigt. Eine Sammulung aller Matlab Beispiele inklusive zusätlicher Dateien befindet sich hier:

  Matlab examples from the exercises

%% Example for single-sideband modulation and "double"-sideband modulation
%
% -> general concept
% -> advantage of singe-sibeband modulation (reduced error caused by frequency shift)
%
% Jens Reermann
%% Reset
clear all;
close all;
clc;
%% Parameter
f_s=44.1e3;
PLAY_SIGNAL=0;
AUDIO_ENABLED = 0;

%%
fc=16e3;
f_error=1500;
phi_error = 0; %pi*0.48;

%% Load signal
if AUDIO_ENABLED == 1
    [u, fs_sig] = audioread( 'signals/interview_heino.wav' );
    n=0:length(u)-1;
else
    fsig=2000;
    fs_sig=100e3;
    T=10;
    Nsig=T*fs_sig;
    n=0:Nsig-1;
    u = sin(2*pi*fsig/fs_sig.*n)'+randn(Nsig,1);
end


%% LP 3kHz | 4kHz
f_l=3e3;
f_h=4e3;
f = [ f_l f_h];
a = [1 0];
rp = 1;           
rs = 120;     
dev = [ (10^(rp/20)-1)/(10^(rp/20)+1) 10^(-rs/20)]; 
[n_ord,fo,ao,w] = firpmord(f,a,dev,f_s);
b = firpm(n_ord+1,fo,ao);
u_f = filter(b,1,u);

%% Carrier signals

c=cos(2*pi*n*fc/f_s)';
c_e=cos(2*pi*n*(fc+f_error)/f_s+phi_error)';

%% Modulation

% DSB
m=c.*u_f;

% BP: DSB->SSB
f_bp = [ fc fc+1000 fc+f_l fc+f_h];
a_bp = [0 1  0]; 
dev_bp = [10^(-rs/20) (10^(rp/20)-1)/(10^(rp/20)+1) 10^(-rs/20)]; 
[n_ord_bp,fo_bp,ao_bp,w] = firpmord(f_bp,a_bp,dev_bp,f_s);
b_bp = firpm(n_ord_bp+1,fo_bp,ao_bp);

m_bp = filtfilt(b_bp,1,m);    %SSB

%% Demodulation

% *cos
u_d=m.*c;
u_d_bp=m_bp.*c;
u_de=m.*c_e;
u_de_bp=m_bp.*c_e;
% LP
u_df = filter(b,1,u_d);
u_df_bp = filter(b,1,u_d_bp);
u_def = filter(b,1,u_de);
u_def_bp = filter(b,1,u_de_bp);

%% Play signalss
if PLAY_SIGNAL==1
    sound(u_f,f_s)
    pause
    sound(u_df,f_s)
    pause
    sound(u_def,f_s)
    pause
    sound(u_def_bp,f_s)
end

%% PSD estimation
N_FFT=2^12;
[Puu, F] = pwelch(u,hann(N_FFT),N_FFT-N_FFT/4,N_FFT,f_s);
[Pufuf, F] = pwelch(u_f,hann(N_FFT),N_FFT-N_FFT/4,N_FFT,f_s);
[Pmm, F] = pwelch(m,hann(N_FFT),N_FFT-N_FFT/4,N_FFT,f_s);
[Pmm_bp, F] = pwelch(m_bp,hann(N_FFT),N_FFT-N_FFT/4,N_FFT,f_s);
[Pudfudf, F] = pwelch(u_df,hann(N_FFT),N_FFT-N_FFT/4,N_FFT,f_s);
[Pudefudef, F] = pwelch(u_def,hann(N_FFT),N_FFT-N_FFT/4,N_FFT,f_s);
[Pudfudf_bp, F] = pwelch(u_df_bp,hann(N_FFT),N_FFT-N_FFT/4,N_FFT,f_s);
[Pudefudef_bp, F] = pwelch(u_def_bp,hann(N_FFT),N_FFT-N_FFT/4,N_FFT,f_s);

%% Plotting (Modulation)
[val1 ind1] =max(10*log10(Puu));
[val2 ind2] =max(10*log10(Pmm));
[val3 ind3] =max(10*log10(Pmm_bp));

if AUDIO_ENABLED
    y_lims=[-160 -50];
else
    y_lims=[-100 10];
end

figure

plot(F, 10*log10(Puu));
text(F(ind1),val1,[num2str(val1) 'dB']);
legend('S_{uu}');
xlabel('f / Hz');ylabel('LDS / dB');xlim([0 f_s/2]);ylim(y_lims);
pause
hold on;
plot(F, 10*log10(Pufuf),'r');
legend('S_{uu}','S_{ufuf}');
xlabel('f / Hz');ylabel('LDS / dB');xlim([0 f_s/2]);ylim(y_lims);
pause
plot(F, 10*log10(Pmm),'g');
text(F(ind2),val2,[num2str(val2) 'dB']);
legend('S_{uu}','S_{ufuf}','S_{mm}');
xlabel('f / Hz');ylabel('LDS / dB');xlim([0 f_s/2]);ylim(y_lims);
pause
plot(F, 10*log10(Pmm_bp),'k');
text(F(ind3),val3,[num2str(val3) 'dB']);
legend('S_{uu}','S_{ufuf}','S_{mm}','S_{mm_{BP}}');
xlabel('f / Hz');ylabel('LDS / dB');xlim([0 f_s/2]);ylim(y_lims);
pause
hold off;

%% Plotting (Demodulation)

[val3 ind3] =max(10*log10(Pufuf));
[val4 ind4] =max(10*log10(Pudfudf));
[val5 ind5] =max(10*log10(Pudefudef));
[val6 ind6] =max(10*log10(Pudefudef_bp));

figure
xlim([0 f_h+1000]);
ylabel('LDS / dB');
xlabel('f / Hz');
if AUDIO_ENABLED
    ylim=[-160 -50];
else
    ylim=[-100 10];
end

hold on;
plot(F, 10*log10(Pufuf));
text(F(ind3),val3,[num2str(val3) 'dB']);
legend('S_{ufuf}');
pause
plot(F, 10*log10(Pudfudf),'g');
text(F(ind4),val4,[num2str(val4) 'dB']);
legend('S_{ufuf}','S_{ZSB}');
pause
plot(F, 10*log10(Pudefudef),'r');
text(F(ind5),val5,[num2str(val5) 'dB']);
legend('S_{ufuf}','S_{ZSB}','S_{eeZSB}');
pause
plot(F, 10*log10(Pudefudef_bp),'k');
text(F(ind6),val6,[num2str(val6) 'dB']);
legend('S_{ufuf}','S_{ZSB}','S_{eeZSB}','S_{eeESB}');
pause

hold off;

disp( [ num2str(20*log10(cos(phi_error))) ] );

3. Winkelmodulation

Aufgabenstellung

Wie in der Vorlesung vorgestellt kann die Winkelmodulation als kontinuirliche Modulation eines Sinusträgers verstanden werden:

\(c_T(t) = \hat{c}_T \cos(\omega_Tt+\phi_T) = \hat{c}_t\cos(\Phi_T(t)).\)

  1. Wie ließe sich die ZSB-Modulation in dem Trägersignal \(c_T(t)\) integrieren ?
  2. Welcher Prinzipielle Unterschied besteht zwischen der Frequenzmodulation (FM) und der Phasenmodulation (PM)?
  3. In der unten stehenden Abbildung ist ein einfaches Nutzsignal \(v(t)\) dargestellt. Bestimmen Sie jeweils für PM und FM die Momentanfrequenz \(\Omega_T(t)\) und skizzieren sie diese. ?
  4. Welche Syxstemeigenschaften weist die Winkelmodulation bezüglich Linearität, Kausalität, Verschiebungsinvarianz und Stabilität auf?

Umfang und Schwierigkeitsgrad

  • Zeitlicher Umfang: ca. 30 Minuten
  • Schwierigkeitsgrad: leicht

Lösung

  1. Die Winkelmodulation ist folgendermaßen definiert:
    \(\begin{align*}c_T(t) &=  \hat{c}_T \cos(\omega_T \, t + \varphi_T) \\& = \cos\big(\Phi_T(t)\big).\end{align*}\)
    Obige Definition enthält die ZSB-Modulation als Sonderfall, wenn die Amplitude des Trägers durch das Signal \(v(t)\) moduliert wird
    \(\hat{c}_T  \;\Rightarrow\; \hat{c}_T(t) = v(t).\)

  2. In obiger Definition der Winkelmodulation ist die Momentanphase
     \(\Phi_T(t) = f\big(v(t)\big) \)
    eine Funktion des Signals \(v(t)\) und trägt somit die Signalinformation. Phasen- und Frequenzmodulation unterscheiden sich in der Art und Weise, wie die Information von \(v(t)\) in \(\Phi_T(t)\) eingeprägt wird:
    Frequenzmodulation (FM):
                       Momentanphase     \(\displaystyle \Phi(t)     = \omega_T \, t + k \, 2\pi \, v(t)\)
                       Momentanfrequenz  \(\displaystyle \Omega_T(t) = \frac{d \, \Phi_T(t)}{dt} = \omega_T + k \, 2\pi \frac{d \, v(t)}{dt}\)
    Frequenzmodulation (FM):
                       Momentanfrequenz & \(\displaystyle \Omega_T(t) = \omega_T + k \, 2\pi \, v(t)\)
                       Momentanphase    & \(\displaystyle \Phi_T(t)   = \omega_T t + k \, 2\pi \int_{-\infty}^{t}v(\tau) \, d\tau\)
    In einer Nachrichtenübertragung wäre also \(c_T(t)\) das Sendesignal. Im Allgemeinen kann das Spektrum \(C(j\omega)=\mathcal{F}\{c_T(t)\}\) nicht berechnet werden.
    Phasen- und Frequenzmodulation unterscheiden sich in der Art und Weise, wie die Information von \(v(t)\) in \(\Phi_T(t)\) eingeprägt wird.

  3. Das gegebene Signal \(v(t)\) in die obigen Definitionen für die Momentanfrequenz \(\Omega_T(t)\) einsetzen und vereinfachen.
    • Phasenmodulation:
                                  \(
                                      \Omega_T(t) = \frac{d\Phi_T(t)}{dt} = \begin{cases}
                                                                               \omega_T,                                 & t<0 \\
                                                                               \omega_T + k \, 2\pi \frac{\hat{v}}{t_1}, & 0 \leq t \leq t_1 \\
                                                                               \omega_T,                                 & t>t_1 \\
                                                                            \end{cases}
                                  \)
                                 
                         
    • Frequenzmodulation:
                                  \(
                                      \Omega_T (t) = \omega_T + k \, 2\pi (t) = \begin{cases}
                                                                                       \omega_T,                                  & t<0 \\
                                                                                       \omega_T + k \, 2\pi \frac{\hat{v}}{t_1}t, & 0 \leq t \leq t_1 \\
                                                                                       \omega_T + k \, 2\pi \, \hat{v},           & t>t_1 \\
                                                                                    \end{cases}
                                  \)
  4. Überprüfen der Systemeingenschaften der Winkelmodulation:
    • Linearität: Wie in Aufgabgenteil (b) die Momentanphase \(Phi_T(t) = f\big(v(t)\big)\) als Funktion des Signals
                                \(
                                    v(t) = \alpha_1 v_1(t) + \alpha_2 v_2(t)
                              \)
      ausdrücken. Gilt der Überlagerungssatz? Um sich das klar zu machen, kann man auch auch eine einfache Funktion, z.B. \(f(x)=x\), annehmen. Die Winkelmodulation ist nicht linear!
    • Kausalität: Ein System ist auch nichtkausal, wenn es ohne Anregung ein Ausgangssignal generiert ("Reaktion ohne Ursache"). Ist dies bei der Winkelmodulation der Fall? Die Winkelmodulation ist nicht kausal!
    • Verschiebungsinvarianz: Die Bedingung für Verschiebungsinvarianz für Phasen- und Frequenzmodulation getrennt überprüfen. Die Winkelmodulation ist nicht verschiebungsinvariant!
    • Stabilität: Kriterium der BIBO-Stabilität anwenden. Die Winkelmodulation ist stabil!

 

Matlab Demo

Achtung: Für diese Demo werden zusätliche Dateien benötigt. Eine Sammulung aller Matlab Beispiele inklusive zusätlicher Dateien befindet sich hier:

  Matlab examples from the exercises

%--------------------------------------------------------------------------
% Signals and Systems II - Exercise 3
%
% An (unorthodox) example for frequency modulation. The input signal is an
% EEG signal of an epilepsy patient. The "content" of the signal is well
% below 100Hz and should be transformed to the audible frequency range
% (so-called auralization of EEG signals) by applying frequency modulation.%
%
% Nov. 2013
% Digital Signal Processing and System Theory
% Faculty of Engineering Christian-Albrechts-Universitaet zu Kiel
% Jochen Withopf, 
%--------------------------------------------------------------------------

clear all;
close all;
clc;

fileName = 'signals/eeg_005_F3.wav';
   

fm = 1000;   % Modulation frequency in Hz
k  = 500; % Modulation index

%--------------------------------------------------------------------------
% Load data and normalize to [-1 1]
%--------------------------------------------------------------------------
[data, fs] = wavread(fileName);
data       = data/max(abs(data));

%--------------------------------------------------------------------------
% Frequency modulation
%--------------------------------------------------------------------------

% --- Vector for time (2pi * t)
twoPiT   = 2*pi*linspace(0, length(data)/fs, length(data));
twoPiT   = twoPiT(:);

% --- Compute integral over the signal
twoPiInt = 2*pi*cumsum(data)/fs;

% --- The actucal modulation
data_mod = cos( twoPiT*fm + k*twoPiInt );

%--------------------------------------------------------------------------
% Plot: time-domain signal
%--------------------------------------------------------------------------
figure(1)
t = linspace(0, length(data)/fs, length(data));
plot(t, data);
grid on
xlim([t(1), t(end)])
ylabel('EEG signal');
xlabel('Time in seconds');

%--------------------------------------------------------------------------
% Plot: spectrogram
%--------------------------------------------------------------------------

% --- Compute spectrogram
[p_mod, f, t] = spectrogram(data_mod, 2048, 1024, 2048, fs);
[p_ecg, f, t] = spectrogram(data, 2048, 1024, 2048, fs);

figure(2);

subplot(2,1,1);
imagesc(t,f/1000,10*log10(abs(p_ecg))); 
axis xy;
ylim([0 10]);
title(['Original signal'] );
xlabel('Time in seconds'); 
ylabel('Frequency in kHz')
ylim([0 1]);

subplot(2,1,2);
imagesc(t,f/1000,10*log10(abs(p_mod))); 
axis xy;
ylim([0 10]);
title(['Frequency modulated signal, f_T=' int2str(fm) ...
       ' Hz, k=' int2str(k)] );
xlabel('Time in seconds'); 
ylabel('Frequency in kHz');


% --- Welch estimator for the signal PSD
% N = 50000;
% figure;
% pwelch(data, N, N/2, N, fs);
% xlim([0 0.3]);

%--------------------------------------------------------------------------
% Open in sound player
%--------------------------------------------------------------------------
%spclab(fs, data_mod)

%--------------------------------------------------------------------------
% Signals and Systems II - Exercise 3 (c)
%
% Visualization of the carrier signals for phase modulation (PM) and
% frequency modulation (FM).
%
%
% Nov. 2010
% Revised: Nov. 2011, Nov. 2014
% Digital Signal Processing and System Theory
% Faculty of Engineering Christian-Albrechts-Universitaet zu Kiel
% Jochen Withopf, This email address is being protected from spambots. You need JavaScript enabled to view it.
%--------------------------------------------------------------------------

N     = 1000;
v_hat = 10;
c_hat = 1;
w_T   = 2;
k     = 1;

v = [zeros(N,1); linspace(0, v_hat, N)'; v_hat*ones(N,1)];
t = linspace(-6, 12, length(v))';
%v = 1*sin(2*t);
%v = [sin(1*t(1:N)); sin(2*t(N+1:2*N)); sin(3*t(2*N+1:3*N))];

c_pm = c_hat * cos(w_T*t + k*2*pi*v);
c_fm = c_hat * cos(w_T*t + k*2*pi*cumsum(v)/N);


%--------------------------------------------------------------------------
% Plots
%--------------------------------------------------------------------------
lw = 1;
sp(1) = subplot(511);
plot(t,v, 'LineWidth', lw);
ylabel('Modulation signal');
set(gca, 'XTick', [0 6]);
set(gca, 'XTickLabel', {'0', 't1'});
ylim([1.1*min(v)-0.1*max(v) 1.1*max(v)]);
line([0 0], get(gca, 'YLim'), 'Color', 0.3*[1 1 1]);
line([6 6], get(gca, 'YLim'), 'Color', 0.3*[1 1 1]);

sp(2) = subplot(5,1,2:3);
plot(t,c_pm, 'LineWidth', lw)
ylabel('Phase modulation');
set(gca, 'XTick', [0 6]);
set(gca, 'XTickLabel', {'0', 't1'});
set(gca, 'YTick', [-c_hat 0 c_hat]);
ylim(1.1 * get(gca, 'YLim'));
line([0 0], get(gca, 'YLim'), 'Color', 0.3*[1 1 1]);
line([6 6], get(gca, 'YLim'), 'Color', 0.3*[1 1 1]);

sp(3) = subplot(5,1,4:5);
plot(t,c_fm, 'LineWidth', lw)
ylabel('Frequency modulation');
xlabel('Time');
set(gca, 'XTick', [0 6]);
set(gca, 'XTickLabel', {'0', 't1'});
set(gca, 'YTick', [-c_hat 0 c_hat]);
ylim(1.1 * get(gca, 'YLim'));
line([0 0], get(gca, 'YLim'), 'Color', 0.3*[1 1 1]);
line([6 6], get(gca, 'YLim'), 'Color', 0.3*[1 1 1]);

linkaxes(sp, 'x')

4. Frequenzmodulation

Aufgabenstellung

Gegeben ist ein frequenzmoduliertes Signal der Form

\(c_T(t) = \hat{c}_T \cos\left(\omega_Tt+\frac{2\pi \Delta f}{\omega_1} \sin(\omega_1 t)\right)\)

Trägeramplitude    \(\hat{c}_T = 2V\)

Trägerfrequenz     \(\omega_T = 2\pi\cdot 10,7 \cdot 10^6 \text{s}^{-1}\)

Frequenzhub        \(\Delta f = 75 \cdot 10^3 \text{s}^{-2}\)

  1. Bei welcher Modulationsfrequenz wird mit den angegebenen Werten der Modulationsgrad \( \eta = 5\) erreicht?
  2.  Wie groß ist nach Carson die zur Übertragung dieses FM-Signals erforderliche Bandbreite?
  3. Welchen Frequenzabstand besitzen die einzelnen Spektrallinien des FM-Signals zueinander und wieviele Linien werden durch die Abschätzungen nach Carson berücksichtigt ?
  4. Ermitteln Sie mit Hilfe von der unten stehenden Abbildung die Beträge der Amplituden der Spektralenlinien bis zur Ordnung \( \mu = 3\) und geben Sie die zugehörigen Frequenzen an.

Umfang und Schwierigkeitsgrad

  • Zeitlicher Umfang: ca. 30 Minuten
  • Schwierigkeitsgrad: leicht

Lösung

Wie in den Vorlesungsfolien (V-68 ff.) beschrieben, kann für das Spektrum eines frequenzmodulierten Signals für den Sonderfall,
\(
   v(t) = \hat{v}\cos(\omega_1 t)
\)
berechnet werden. Dies ist genau der Fall, der in dieser Aufgabe betrachtet wird. Für das Trägersignal gilt also

\(\begin{align}
   c_T(t) &= \hat{c}_T \cos\left( \omega_Tt + 2\pi k \int_{-\infty}^{t} \hat{v}\cos(\omega_1\tau) \, d\tau \right) \nonumber \\
        &= \hat{c}_T \cos\left( \omega_Tt + 2k\pi \hat{v} \frac{1}{\omega_1} \sin(\omega_1 t)\right) \nonumber \\
        &= \hat{c}_T \, \textrm{Re}\left\{e^{j\omega_T t} e^{j2\pi k \frac{\hat{v}}{\omega_1}\sin(\omega_1 t)}\right\} \nonumber \\
        &= \hat{c}_T \, \textrm{Re}\left\{e^{j\omega_T t} \tilde{c}(t)\right\}.
\label{eq:freqmod_carrier}
\end{align}\)


Der Term \(\tilde{c}(t)\) kann wie in den Vorlesungsfolien beschrieben als komplexer Zeiger interpretiert werden.
Hierzu werden üblicherweise die beiden Größen

  • Frequenzhub \(\displaystyle \Delta f = k\hat{v}\) und
  • Modulationsgrad \(\displaystyle \eta = 2\pi k \frac{\hat{v}}{\omega_1} = \frac{\Delta f}{f_1}\)

eingeführt.
Des Weiteren kann  \(\tilde{c}(t)\) durch die Potenzreihenentwicklung für die Exponentialfunktion dargestellt werden:
\(
    \tilde{c}(t) = \sum_{\mu=-\infty}^{\infty} J_\mu(\eta) e^{j\mu\omega_1t}.
\)
Dabei stellt \(J_\mu(\eta)\) die Besselfunktion (oder auch Zylinderfunktion) erster Gattung der Ordnung \(\eta\) dar (die Funktionswerte werden für gewöhnlich einer Tabelle oder einem Graphen entnommen).
Setzt man dies in Gleichung (\ref{eq:freqmod_carrier}) ein, erhält man
\(\begin{align}
   c_T(t) = \hat{c}_T \, \textrm{Re}\left\{ \sum_{\mu=-\infty}^{\infty} J_\mu(\eta) e^{j(\omega_T + \mu\omega_1) t }\right\},
\label{eq:freqmod_carrier_bessel}
\end{align}\)
was für Aufgabenteile 3 und 4 hilfreich ist.

  1. Die Formeln für Frequenzhub und Modulationsgrad entsprechend umformen und die gegebenen Kenngrößen einsetzten. Der Modulationsgrad \(\eta=5\) wird bei der Modulationsfrequenz \(f_1=15\) kHz erreicht.
  2. Die Breite  \(f_B\) des Bandes, in dem 99% der Energie des Trägersignals  \(c_T(t)\) liegen, lässt sich nach Carson über
             \(
                f_B = 2(\eta + 2) f_1
             \)
    abschätzen.
    Die benötigte Bandbreite ist nach Carson \(f_\mathrm{B}=210\)\,kHz.
  3. Gleichung (\ref{eq:freqmod_carrier_bessel}) zeigt, dass das Trägersignal Spektrallinien bei den Frequenzen
             \(\pm(\omega_T + \mu \omega_1)\) aufweist (das \(\pm\) kommt von der Realteilbildung, die aus der Exponentialfunktion einen Kosinus erzeugt).
             Der Abstand der Spektrallinien ist also
             \(
                \omega_1 = 2\pi \cdot 15 \, \textrm{kHz}
             \)
             und die Anzahl der berücksichtigten Spektrallinien
             \(
                \textrm{Anzahl der Spektrallinien} = \frac{\textrm{Bandbreite}}{\textrm{Abstand}} = \frac{f_B}{f_1} = 2(\eta + 2).
             \)
    Der Abstand zwischen den Spektrallinien beträgt \(\omega_1 = 2\pi \cdot 15\)\,kHz. Es werden 14
              Linien berücksichtigt.
  4. Aus  Gleichung (\ref{eq:freqmod_carrier_bessel}) wird ersichtlich, dass die einzelnen Signalkomponenten mit den Faktoren
             \(
                c_\mu = \hat{c}_T J_\mu(\eta).
             \)
             gewichtet werden.
             Die Werte der Besselfunktionen können aus dem Graphen entnommen werden, zusätzlich gilt für ganzzahlige \(\mu\)
             \(
                J_{-\mu}(\eta) = (-1)^\mu J_\mu(\eta).
             \)
             Für \(\mu = 1\) gilt also beispielsweise
             \(
                |c_1| =  |2\textrm{V} \cdot J_1(\eta)| \approx |2 \, \textrm{V} \cdot (-0,3276) | = 0,6552 \, \textrm{V}
             \)
             mit der zugehörigen Frequenz
             \(
                f_1 = \pm(10,7 \, \textrm{MHz} + 0,15 \, \textrm{MHz}) = \pm 10,85 \, \textrm{MHz}.
             \)
    Die Tabelle zeigt die Betrags-Amplitudengewichte für\(\mu \in [-3, \,3]\in\mathbb{N}\) sowie die zugehörigen Frequenzen.
    \(\mu\) Gewicht \(|c_{\pm\mu}|\) \(f_{\mu}= \pm(f_T+\mu f_1)\) \(f_{-\mu}= \pm(f_T-\mu f_1)\)
    0 0,3552 V \(\pm\)10,7 MHz \(\pm\)10,7 MHz
    1 0,6552 V \(\pm\)10,85 MHz \(\pm\)10,55 MHz
    2 0,0931 V \(\pm\)11,0 MHz \(\pm\)10,4 MHz
    3 0,7297 V \(\pm\)11,15 MHz \(\pm\)10,25 MHz

 

5. Puls-Amplituden-Modulation und Quantisierung

Aufgabenstellung

In dieser Aufgabe werden die Grundlagen der Puls-Amplituden-Modulation (PAM) wiederholt. Dabei bezeichne \(v(t)\) das Informationssignal und \(y_p(t)\) das modulierte Signal. \(V(j\omega)\) und \(Y_p(j\omega)\) seien die entsprechenden Spektren.

  1. Worin unterscheiden sich PAM und Amplitudenmodulation, worin liegen die Gemeinsamkeiten?
  2. Wie kann ein PAM-Signal demoduliert werden? Welche Bedingung muss erfüllt sein, damit eine Demodulation überhaupt möglich ist. Erklären Sie dies, indem Sie ein geeignetes Spektrum \(V(j\omega)\) annehmen und das resultierende Spektrum \(Y_p(jw)\) skizzieren.
  3. Welcher weitere Schritt ist notwendig, um aus dem PAM-Signal ein digitales Signal \(v_Q(n)\) zu erzeugen?

Umfang und Schwierigkeitsgrad

  • Zeitlicher Umfang: ca. 30 Minuten
  • Schwierigkeitsgrad: leicht

Lösung

  1. Die Pulsamplitudenmodulation (PAM) ist folgendermaßen definiert
                   \( \begin{align*}
                        y_p(t) &= v(t) \, p(t) \\
                               &= T_A \, v(t) \sum_{n=-\infty}^\infty \delta_0(t-nT_A)\\
                               &= T_A \sum_{n=-\infty}^\infty v(nT_A) \, \delta_0(t-nT_A)
                    \end{align*}\)
    Sie beschreibt also die Abtastung eines zeitkontinuierlichen Signals.   
    Sowohl bei PAM als auch bei AM steckt die Information des Nutzsignals in der Amplitude des modulierten Signals. Die beiden Verfahren unterscheiden sich lediglich im Trägersignal.
    ZSB-Modulation (als AM): \(\cos(\omega_T t)\)
    PAM: \(T_A \sum_{n=-\infty}^\infty \delta_0(t-nT_A)\)
  2. Das Spektrum des PAM-Signals ist
                \(
                    Y_p(j\omega) = \sum_{\mu=-\infty}^\infty V\bigg( j\Big(\omega-\mu \underbrace{\frac{2\pi}{T_A}}_{\omega_A}\Big)\bigg).
                \)
    Es besteht also aus der Überlagerung verschobener Spektren \(V(j\omega)\). Nur wenn diese Spektren sich nicht überlappen, kann durch Tiefpassfilterung demoduliert werden. Dies ist der Fall, wenn das Abtasttheorem
                \(
                    \omega_A \geq 2\omega_g
              \)
    erfüllt ist, wobei \(\omega_g\) die höchste im Signal \(v(t)\) auftretende Frequenz sei. Für eine Skizze bietet sich z.B. ein dreieckiges Spektrum an.
    Demodulation ist durch Tiefpassfilterung möglich, wenn das Abtasttheorem
                    \(
                        \omega_A \geq 2\omega_g
                    \)
    erfüllt ist, wobei \(\omega_g\) die höchste im Signal \(v(t)\) auftretende Frequenz sei.
  3. Durch die PAM wird ein zeitdiskretes Signal erzeugt. Um ein digitales Signal zu erhalten, ist zusätzlich Amplitudenquantisierung notwendig, um das Signal auch wertediskret zu machen. Durch Amplitudenquantisierung wird aus dem PAM-Signal ein digitales Signal erzeugt.

Matlab Demo

Achtung: Für diese Demo werden zusätliche Dateien benötigt. Eine Sammulung aller Matlab Beispiele inklusive zusätlicher Dateien befindet sich hier:

  Matlab examples from the exercises

%--------------------------------------------------------------------------
% Signals and Systems II - Problem 5 (Aliasing effect)
%
% Select one of the signals (or load your own favourite audio file). It
% will be downsampled by the factor 'dn' with two methods to the signals:
%    - 'x_dn' by using an anti-aliasing lowpass first
%    - 'x_al' by simply discarding samples
%
% SPCLAB for comfortable file playback (and much more) is freely available
% at http://spclab.wikispaces.com/
%
% Jan. 2011
% Revised: Nov. 2011, Nov. 2012, Nov. 2013
% Digital Signal Processing and System Theory
% Faculty of Engineering Christian-Albrechts-Universitaet zu Kiel
% Jochen Withopf,
%--------------------------------------------------------------------------

%--------------------------------------------------------------------------
% Set parameters and load audio file
%--------------------------------------------------------------------------
dn = 16;                                             % downsampling factor
filepath = 'signals\';

plot_orig = 0;

%--------------------------------------------------------------------------
% Load (or create) signals
%--------------------------------------------------------------------------
%[x fs] = wavread([filepath 'SeparateEntity.wav']);
[x fs] = wavread([filepath 'ce_jeu.wav']);
x = x(1:8.6*fs);

% --- or create as sinusoidal signal...
% fs = 44100;
% dur = 5;
% f0 = 2000;
% t = linspace(0,dur, dur*fs);
% x = cos(2*pi*f0*t);

%--------------------------------------------------------------------------
% If audio is stereo, mix both channel to one
%--------------------------------------------------------------------------
if size(x,2) == 2
    x = x(:,1) + x(:,2);
end

%--------------------------------------------------------------------------
% Compute downsampled signals:
%    - x_dn by using an anti-aliasing lowpass first
%    - x_al by simply discarding samples
%--------------------------------------------------------------------------
x_dn = resample(x, 1, dn);
x_al = x(1:dn:end);

%--------------------------------------------------------------------------
% Analysis of both signals
%--------------------------------------------------------------------------


% --- Plot spectrograms
colorLims = [-140 -20];   % for same value-to-color mapping in each plot
Nfft = 256;
ovl  = 240;

[S_dn, f, t, P_dn] = spectrogram(x_dn(1:4*fs/dn), hann(Nfft), ovl, Nfft, fs/dn, 'yaxis');
[S_al, f, t, P_al] = spectrogram(x_al(1:4*fs/dn), hann(Nfft), ovl, Nfft, fs/dn, 'yaxis');
[S,    fx, tx, P]  = spectrogram(x(1:4*fs), hann(Nfft*4), ovl*4, Nfft*4, fs, 'yaxis');

if plot_orig
    figure;
    surf(tx,fx/1000,10*log10(abs(P)),'EdgeColor','none');   
    axis xy; axis tight; colormap(jet); view(0,90);
    caxis(colorLims);
    xlabel('Time in seconds');
    ylabel('Frequency in kHz');

    % --- Open in spclab audioplayer
    spclab(round(fs), x);

else
    figure;
    subplot(221)
    surf(t,f,10*log10(abs(P_dn)),'EdgeColor','none');   
    axis xy; axis tight; colormap(jet); view(0,90);
    caxis(colorLims);
    %xlabel('Time in seconds');
    ylabel('Frequency in Hz');
    title('Downsampled');
    box on

    subplot(222)
    surf(t,f,10*log10(abs(P_al)),'EdgeColor','none');   
    axis xy; axis tight; colormap(jet); view(0,90);
    caxis(colorLims);
    %xlabel('Time in seconds');
    %ylabel('Frequency in Hz');
    title('Aliased');
    box on

    subplot(2,2,3:4)
    surf(t,f,10*log10(abs(P_al-P_dn)),'EdgeColor','none');   
    axis xy; axis tight; colormap(jet); view(0,90);
    caxis(colorLims);
    xlabel('Time in seconds');
    ylabel('Frequency in Hz');
    title('Difference');
    box on

    % --- Open in spclab audioplayer (first resample all audio to fs)
    x_dn_up = resample(x_dn, dn, 1);
    x_al_up = resample(x_al, dn, 1);
    N = min([length(x), length(x_dn_up), length(x_al_up)]);
    
    spclab(fs, x(1:N), x_dn_up(1:N), x_al_up(1:N));
end

%% Einfaches Beispiel fr die Quantisierung / Abtastung
% Datum: 26.11.2014
% Author: Jens Reermann
%
% Dieses Script simuliert sowohl die Quantisierung als auch die Abtastung
% und soll zum Verstndnis der auftretenden Effekte dienen
%
%% Reset
clear all;
close all;
clc;

%% Parameter
fact=2;   % Anzahl der Quantisierungsstufen zwischen -1 und 1: 2*fact+1

%% Bestimmung der Kennlinie
% Eingangssignal
analog_in = -2:0.001:2;

% Quantisierung
discrete_out=round(analog_in*fact)/fact;    % "Quantisierung"
discrete_out=max(-1,min(1,discrete_out));   % Begrenzung

% Plotten
figure(1);

subplot(2,1,1);
plot(analog_in,discrete_out,'r');
hold on;
plot(analog_in,analog_in,'b');
hold off;
xlabel('Analog');
ylabel('Digital');
legend([num2str(fact*2+1) ' Stufen'],'Ideal');

subplot(2,1,2);
plot(analog_in,analog_in-discrete_out);
xlabel('Analog');
ylabel('Fehler');

%% Sinus
% Eingangssignal
f_s=128;
f=1;
T=1;
n=0:1:T*f_s-1;
y = sin(2*pi*n*f/f_s);

% Quantisierung
y_d=round(y*fact)/fact; % "Quantisierung"
y_d=max(-1,min(1,y_d)); % Begrenzung

% Plotten
figure(2);

plot(n/f_s,y,'b');
hold on;
plot(n/f_s,y_d,'r-*');
hold off;
xlabel('Zeit in Sekunden');
ylabel('Amplitude');
legend('Analog','Digital');

%% Aliasing

% Signal (Summierung mehrerer sinusartiger Signale)
freqs=[2.5 4.1 40];     % Frequenzen
x=zeros(1, length(n));
for ii=1:length(freqs)
    x = x + sin(2*pi*n*freqs(ii)/f_s);
end

% Unterabtastung (Decimation): Simulation der Abtastung
dn=4;
f_s_dn=f_s/dn;
x_dn = resample(x, 1, dn);      % Mit Anti-Alias-Filter (stellt sicher, dass das Abtasttheorem erfllt ist)
x_al = x(1:dn:end);             % Ohne Filter

% FFT Berechnung
N_FFT=length(x);
X=fft(x);
N_FFT_dn=length(x_dn);
X_dn=fft(x_dn);
X_al=fft(x_al);

% Plotten
figure(3);
subplot(2,1,1);
plot(0:f_s/N_FFT:(N_FFT-1)*f_s/N_FFT,20*log10(abs(X)));
xlabel('Frequenz in Hz');
ylabel('Amplitudengang in dB');
xlim([0 f_s]);
title('Eingangssignal');

subplot(2,1,2);
plot(0:f_s_dn/N_FFT_dn:(N_FFT_dn-1)*f_s_dn/N_FFT_dn,20*log10(abs(X_dn)),'r');
hold on;
plot(0:f_s_dn/N_FFT_dn:(N_FFT_dn-1)*f_s_dn/N_FFT_dn,20*log10(abs(X_al)),'b');
xlabel('Frequenz in Hz');
ylabel('Amplitudengang in dB');
legend('Mit Anti-Aliasing-Filter','Ohne Anti-Aliasing-Filter');
title('Ausgangssignal');
xlim([0 f_s]);

%--------------------------------------------------------------------------
% Signals and Systems II - Problem 5 (Quantization noise)
%
% Example of a uniform quantizer with mid-rise charactersitic. Design the
% quantizer by setting v_max, v_min and w.
%
%
% SPCLAB for comfortable file playback (and much more) is freely available
% at http://spclab.wikispaces.com/
%
% Nov. 2010
% Revised: Nov. 2011, Nov. 2012, Nov. 2013
% Digital Signal Processing and System Theory
% Faculty of Engineering Christian-Albrechts-Universitaet zu Kiel
% Jochen Withopf
%--------------------------------------------------------------------------

close all
clear

% --- Control plots
plot_sig    = 1;
plot_hist   = 0;
plot_char   = 1;
plot_spclab = 1;

%--------------------------------------------------------------------------
% Define quantizer parameters
%--------------------------------------------------------------------------
v_max =  1;  % maximium amplitude
v_min = -1;  % minimum amplitude
w     =  4;  % number of bits (word length)

%--------------------------------------------------------------------------
% Load data
%--------------------------------------------------------------------------
data_type = 'speech'; % specify type of data: 'rand', 'sin', 'music' or 'speech'
fs  = 16000;          % sampling rate
dur = 2.5;            % duration in seconds

switch data_type
    case 'rand'
        data = rand(dur*fs, 1)-0.5;
        
    case 'sin'
        freq  = 500;                       % sinusoid's frequency in Hz
        dur   = 5/freq;                    % set length to 5 periods
        t_sin = linspace(0, dur, dur*fs);
        data  = sin(2*pi*freq*linspace(0, dur, dur*fs))';
        
    case 'music'
        [data, fs] = wavread('signals\ff_let_it_die.wav');
        %data = data(1:dur*fs);
        
    case 'speech'
        [data, fs] = wavread('signals\interview_heino.wav');
        %data = data(1:dur*fs);               
end

% --- Normalize amplitude to 1
data = data/max(abs(data)); 

%--------------------------------------------------------------------------
% Perform quantization
%--------------------------------------------------------------------------
delta      = (v_max - v_min)/2^w;               % delta is the same as Q in the lecture
codebook   = v_min+delta/2:delta:v_max-delta/2; % vector with reconstruction levels
partition  = v_min+delta:delta:v_max-delta;     % vector with decision boarders

% --- Quantization using the MATLAB-quantizer...
% [idx quant] = quantiz(data, partition, codebook); 

% --- ... or not (basically the same as quantiz)
idx = ones(length(data), 1);
for i=1:length(partition)
   idx = idx + double(data>partition(i)); 
end
quant = codebook(idx);
quant = quant(:); % make it a column vector
    
%--------------------------------------------------------------------------
% Make plots
%--------------------------------------------------------------------------
lw = 1;
t  = linspace(0, length(data)/fs, length(data));

% --- Plot original and quantized sinal
if plot_sig == 1
    figure;
    sp(1) = subplot(3,1,1:2);
    stairs(t, quant, 'Color', 'r', 'LineWidth', lw);
    hold on;
    plot(t, data, 'LineWidth', lw);
    axis([t(1), t(end), -1.1, 1.1])
    %xlabel('Time in seconds');
    ylabel('Amplitude');
    legend('Original singal', 'Quantized signal', 'Location', 'best');
    grid on

    sp(2) = subplot(3,1,3);
    plot(t, data-quant)
    xlim([t(1), t(end)])
    xlabel('Time in seconds');
    ylabel('Quantization error');
    grid on
    
    linkaxes(sp, 'x');
end

% --- Plot quantizer characteristic
if plot_char == 1
    figure; 
    v_in = [1.2*v_min, partition 1.2*v_max];
    v_q  = [codebook(1) ,codebook(2:end), codebook(end)];
    stairs(v_in, v_q);
    axis([v_in(1), v_in(end), v_min, v_max]);
    set(gca, 'XTick', v_in(2:end))
    set(gca, 'YTick', v_q(1:end-1))
    grid on;
    xlabel('Quantizer input signal v')
    ylabel('Quantizer output signal v_Q')
end

% --- Plot histograms of original and quantized signal
if plot_hist == 1
    numBins = 100;

    figure;
    subplot(211)
    hist(data, numBins);
    ylabel('Absolute frequency');
    title('Original signal');
    grid on

    subplot(212)
    hist(quant, numBins);
    title('Quantized signal');
    ylabel('Absolute frequency');
    xlabel('Sample amplitude');
    grid on
end

% --- Open spclab audioplayer
if plot_spclab == 1
    spclab(fs, data, quant, data-quant);
end

Related Sections

Please have also a look into the other sections that are related to the lecture "Signals and Systems II":

 

Website News

01.10.2017: Started with a Tips and Tricks section for KiRAT.

01.10.2017: Talks from Jonas Sauter (Nuance) and Vasudev Kandade Rajan (Harman/Samsung) added.

13.08.2017: New Gas e.V. sections (e.g. pictures or prices) added.

05.08.2017: The first "slide carousel" added.

Recent Publications

J. Reermann, P. Durdaut, S. Salzer, T. Demming,A. Piorra, E. Quandt, N. Frey, M. Höft, and G. Schmidt: Evaluation of Magnetoelectric Sensor Systems for Cardiological Applications, Measurement (Elsevier), ISSN 0263-2241, https://doi.org/10.1016/j.measurement.2017.09.047, 2017

S. Graf, T. Herbig, M. Buck, G. Schmidt: Low-Complexity Pitch Estimation Based on Phase Differences Between Low-Resolution Spectra, Proc. Interspeech, pp. 2316 -2320, 2017

Contact

Prof. Dr.-Ing. Gerhard Schmidt

E-Mail: gus@tf.uni-kiel.de

Christian-Albrechts-Universität zu Kiel
Faculty of Engineering
Institute for Electrical Engineering and Information Engineering
Digital Signal Processing and System Theory

Kaiserstr. 2
24143 Kiel, Germany

Recent News

Jens Reermann Defended his Dissertation with Distinction

On Friday, 21st of June, Jens Reermann defended his research on signals processing for magnetoelectric sensor systems very successfully. After 90 minutes of talk and question time he finished his PhD with distinction. Congratulations, Jens, from the entire DSS team.

Jens worked for about three and a half years - as part of the collaborative research center (SFB) 1261 - on all kinds of signal ...


Read more ...