next up previous contents
Nächste Seite: Lösungshinweise zum Kapitel 6 Aufwärts: Lösungshinweise Vorherige Seite: Lösungshinweise zum Kapitel 4   Inhalt


Lösungshinweise zum Kapitel 5

Gewöhnliche Faltungen

 

50-1

 
a = [1 2 1 2 1] ; b = [0 0 1 3 1 0 0]
conv(a,a)=[ 1 4 6 8 11 8 6 4 1]; conv(b,b) = [ 0 0 0 0 1 6 11 6 1 0 0 0 0];
conv(a,b) = conv(b,a) = [ 0 0 1 5 8 7 8 5 1 0 0]; wie z. B.

  0  0  
        1  2  1  2  1
           3  6  3  6  3
              1  2  1  2  1  0  0
  0  0  1  5  8  7  8  5  1  0  0

50-2

 
a= [0 0 0 1 1 1 1 0 0 0]; a2=conv(a,a) ; a3=conv(a2,a) ; a4=conv(a3,a) ;
a4=conv(a3,a) ; a5=conv(a4,a) ; a6=conv(a5,a) ;
an = a/max(a); a2n = a2/max(a2); a3n = a3/max(a3); a4n = a4/max(a4);
a5n = a5/max(a5); a6n = a6/max(a6); plot(an) ; hold on ; plot(a2n) ; plot(a3n) ; plot(a4n) ; plot(a5n) ;
plot(a6n) ; axis([0 50 0 1.5])

50-3

function shvbk = shrgt(v,nsh)
nel = length(v);
shvbk = [v(nel-nsh+1:nel) v(1:nel-nsh)]
g = [1 2 3 2 1 0 0 0 0 0 0 0 0 0]; w = [0 0 1 0 0 0 2 0 0 1 2 1 0 0 ]
conv(w,g) =[ 0 0 1 2 3 2 3 4 6 5 6 8 10 8 4 1 0 0 0 0 0 0 0 0 0 0 0]
cres = 1*g + 2*shrgt(g,4) + 1*shrgt(g,7) + 2*shrgt(g,8)+ 1*shrgt(g,9) ; plot(cres);
cres = 1*g ; plot(cres); hold on; cres = 1*g + 2*shrgt(g,4); plot(cres);
cres = 1*g + 2*shrgt(g,4) + 1*shrgt(g,7) ; plot(cres);
cres = 1*g + 2*shrgt(g,4) + 1*shrgt(g,7) + 2*shrgt(g,8) ; plot(cres);

50-4

r = [zeros(1,40) ones(1,40)]; h = [(1:40) (39:-1:0)]/40;
p = 1-(-1:0.025:0.975).^2 ; g = (1-(-1:0.025:0.975).^2).^2 ; 
rh = conv(r,h); plot(rh); pause; rp = conv(r,p); plot(rp); pause;
rg = conv(r,g); plot(rg); pause; hp = conv(h,p); plot(hp); pause;
hg = conv(h,g); plot(hg); pause; pg = conv(p,g); plot(pg);

50-5 Sobald der Rechteckpuls eine größere Breite hat als 6, das ist die Indexdifferenz zwischen den beiden Peaks von a=[0 1 2 3 2 1 0 1 2 3 2 1 0], gibt es keinen Doppelpeak mehr.

50-6

function vbk = vecinsert(lg,v,nsh)
nel = length(v);
vbk = zeros(1,lg);
for k=1+nsh:nsh+lg
 vbk = v(k-nsh)
%------------
function  sfres = selffalt(a,b)
la = length(a)
lb = length(b)
sfres = zeros(1, la+lb-1)
for k=1:lb 
  sfres = sfres + b(k)* vecinsert(la+lb-1, a, k-1)
end

50-7

function c = formfalt(a,b)
% c = formfalt(a,b) gewoehnliche Faltung nach Formel
n1 = length(a) ; n2 = length(b); nr = n1+n2-1;
for j=1:nr
  k1 = max(1,j-n2+1); k2 = min(n1,j);
  c(j) = 0;
  for k=k1:k2
    c(j)= c(j)+a(k)*b(j-k+1);
  end
end

Zirkuläre Faltungen

 

50-8 Siehe Beispiel-M-Files

50-9

function c = formfaltz(a,b)
% c = formfaltz(a,b) zirkulaere Faltung nach Formel
n1 = length(a) ; n2 = length(b);  al = a; bl = b;
if n1 < n2
  al = [al zeros(1,n2-n1)];   n1 = n2;
elseif n1 > n2
  bl = [bl zeros(1,n1-n2)];
end
for j=1:n1
  c(j) = 0;
  for k=1:j
    c(j)= c(j)+b(k)*a(j-k+1);
  end
  for k=j+1:n1
    c(j)= c(j)+b(k)*a(j-k+n1+1);
  end
end

50-10

t = 0:pi/40:2*pi-pi/40;  si = sin(t);
si2 = real(ifft(fft(si).*fft(si))); plot(si2); hold on;
plot(-40*cos(t)+1,'--r'); hold off

50-11

a = [1 2 3 4 5 6]; b = [1 0 0 1 0 0]; c = [5 7 9 5 7 9];
cf = real(ifft(fft(a).*fft(b)))

50-12

function c = fftfaltz(a,b)
% c = fftfaltz(a,b) zirkulaere Faltung nach Faltungssatz
n1 = length(a) ; n2 = length(b);  al = a; bl = b;
if n1 < n2  % Laengen-Test mit Nullen nachfuellen
  al = [al zeros(1,n2-n1)];   n1 = n2;
elseif n1 > n2
  bl = [bl zeros(1,n1-n2)];
end
c = real(ifft(fft(al).*fft(bl)));

50-13

function c = fftfaltgew(a,b)
% c = fftfaltgew(a,b) gewoehnliche Faltung nach Faltungssatz
n1 = length(a) ; n2 = length(b);  al = a; bl = b; nr = n1+n2-1;
% Nullen auffuellen bis zu Reaultatlaenge der gewoehnlichen Faltung
  al = [al zeros(1,nr-n1)];  
  bl = [bl zeros(1,nr-n2)];
c = real(ifft(fft(al).*fft(bl)));

50-14 Cz = [22 20 18 16 16 18 20 22 23]
Cg = [0 1 2 6 10 15 19 22 23 22 19 15 10 6 3 1 0]

Fourier-Analyse, Fourier-Transformation

 

50-15 Das Skalarprodukt von zwei Folgen entspricht dem Entegral über das Produkt der vorliegenden Funktionen.

function sicovec = sico(n,cc,cs,k)
% sicovec = sico(npt,coscoef,sincoef,kharm)    
t = (0:n-1)*2*pi/n;
sicovec = cc*cos(k*t)+cs*sin(k*t);

50-16 bis 50-21 siehe Beispiel-M-Files.

50-22 2dim: $ c0=f0+f1$,   $ c1=f0-f1$
4dim: $ c0=f0+f1+f2+f3 = g0+g1$;   $ g0 = f0+f2$;  $ g1 =f1+f3$;
$ c2=f0-f1+f2-f3 = g0-g1$;
$ c1=f0+j*f1-f2-j*f3 = u0 + u1$;   $ u0 = f0-f2$;   $ u1 = j*(f1-f3)$
$ c3 = f0-j*f1-f1+j*f3 = u0-u1$
8dim: $ g0 = f0+f4$;   $ g1 = f1+f5$;   $ g2 = f2+f6$;   $ g3 = f3+f7$;
damit 1. 4dim aus g: $ c0 = g0+g1+g2+g3$    $ c4 = g0-g1+g2-g3$
$ c2=g0+j*g1-g2-j*g3$;    $ c6 = g0-j*g1-g1+j*g3 $
$ w = exp(j\cdot \pi/4)$;   $ u0 = f0-f4$ ;   $ u1 = w*(f1-f5)$;
$ u2= w^2 \cdot (f2-f6)$ ;   $ u3= w^3 \cdot (f3-f7)$ ;
damit 2. 4dim aus u $ c1 = u0+u1+u2+u3$;   $ c3 = u0-u1+u2-u3$
$ c5=u0+j*u1-u2-j*u3$ ;   $ c7 = u0-j*u1-u2+j*u3 $

Lösungen zum Selbsttest

 

T511 -  Die Berechnung der Gleichstromkomponente hat dann den gleichen Vorfaktor   - Durch verschiedene Phasenlagen   - 21: 10 cos, 10 sin, 1 Gleichstrom   -  $ c_k = \mathrm{Re}(c_{-k} - \mathrm{Im}(c_{-k})$

T512 conv(a,b) = [1 2 4 7 5 8 6 3 4] al=[1 2 3 4 0 0 0 0 0];
bl=[1 0 1 1 0 1 0 0 0]; cl = ifft(fft(al).*fft(bl))

T513 $ c_0=1$$ c_1=1/2$, $ c_{-1}=1/2$$ c_2=-j/4$, $ c_{-2}=j/4$$ c_3=-j/4$, $ c_{-3}=j/4$ $ c_4 = c_{-4}=0$; $ c_5=1/10$, $ c_{-5}=1/10$  $ camp_k=\mathrm{abs}(c_k)$ $ \phi_k=-\mathrm{angle}(c_k)$ $ cp_k=camp_k^2$

T514  DFT4 = [1 1 1 1; 1 j -1 -j; 1 -1 1 -1; 1 -j -1 j]

T515

w=(0:7)/8*2*pi; a=zeros(1,8); b = zeros(1,8);
for k=0:3
 a(k+1) = 2/8*sum(cos(k*w).*f); b(k+1) = 2/8*sum(sin(k*w).*f);
end



Unterabschnitte
next up previous contents
Nächste Seite: Lösungshinweise zum Kapitel 6 Aufwärts: Lösungshinweise Vorherige Seite: Lösungshinweise zum Kapitel 4   Inhalt
Stefan Adam 2006-03-07