Forum: Digitale Signalverarbeitung / DSP / Machine Learning Hilfestellung zur DFT Aufgabe


von Rainer (Gast)


Lesenswert?

Hallo ich bin gerade dabei folgende Aufgabe zu lösen:

Von dem reellen Signal x(k) liegen die folgenden Werte der 10-Punkte DFT 
vor:

i X(i)
0 1
1 2-j
2 -1+j
3 -2-j
4 2+j
5 1

Berechnen Sie x(k) für k = 0, ... , 9 und zeichnen Sie den Verlauf des 
Signals in das nebenstehende Diagramm.

Da das Signal reell ist, ist doch mein Signal symmetrisch oder?
Welche Werte muss ich jetzt exakt für die DFt Formel verwenden?

von Rainer (Gast)


Lesenswert?

Betrag:

|X(0)| = 1
|X(1)| = Wurzel(5)
|X(2)| = Wurzel(2)
|X(3)| = Wurzel(5)
|X(4)| = Wurzel(5)
|X(5)| = 1

Wenn das Signal reell sein soll, wie sehen dann die Koeffizienten
von |X(6)| bis |X(9)| aus?

|X(6)| = Wurzel(5)
|X(7)| = Wurzel(5)
|X(8)| = Wurzel(2)
|X(9)| = Wurzel(5)

Müsste doch so sein oder?

von Rainer (Gast)


Lesenswert?

Stimmen meine Überlegungen?

von Rainer (Gast)


Angehängte Dateien:

Lesenswert?

Ich hab das ganze jetzt mal mit Matlab berechnet.
Weiss allerdings nicht, ob die Berechnung so richtig ist.

von Rainer (Gast)


Lesenswert?

Zu dieser Aufgabe kann mir echt keiner helfen?
Kann mir wenigstens jemand einen Tip geben ob mein Verfahren so korrekt 
ist?

von Rainer (Gast)


Angehängte Dateien:

Lesenswert?

Ich hab nun mal den Screenshot von Matlab hier anghängt.

von Unit* (Gast)


Lesenswert?

Da ist was faul:

Fall 1: x(k) ist nicht reell
Fall 2: du hast dich vertippt

Begründung:

X(k) ungerade => x(k) hat imaginäre Komponente

von Mike van Dyke (Gast)


Lesenswert?

Ist das Signal reell, so ist der Realteil gerade und der Imaginäteil 
ungerade:

X = [1,2-i,-1+i,-2-j,2+j,1,2-j,-2+j,-1-i,2+i]

ifft(X) = 0.4, 0.0618, 1.0779, -0.1618, -0.0171, 0.2, -1.2482, -0.1618, 
0.7873, 0.0618

von Rainer (Gast)


Angehängte Dateien:

Lesenswert?

Ich hab jetzt die Matlab Datei abgeändert.
Das mit dem reellen Signal hab ich noch nicht so ganz kappiert.
Warum müssen die anderen Imaginären Koeeffizienten umgekehrt sein?
1
% Lösung IDFT
2
3
fs = 1000;
4
k  = 0:1:9;
5
X  = [1,2-i,-1+i,-2-j,2+j,1,2-j,-2+j,-1-i,2+i];
6
N  = length(X);
7
8
subplot(2,1,1);
9
stem(k, X);
10
xlabel('k'); ylabel('Ymag(k)'); grid on;
11
12
yk = zeros(1,10);
13
ykabs  = zeros(1,10);
14
15
for m=0:1:9
16
    for k=0:1:9
17
        
18
        yk(m+1) =  yk(m+1) + X(k+1) * (cos(2*pi*k*m/N) + i*sin(2*pi*k*m/N));
19
        end
20
    
21
    ykabs(m+1) = yk(m+1)/N;
22
end
23
24
k = (0:1:(N-1));
25
26
subplot(2,1,2);
27
stem(k, ykabs);
28
xlabel('k'); ylabel('y(k)'); grid on;

Müsste dann, das Ergebnis so stimmen?

von Rainer (Gast)


Lesenswert?

... der X Vector hat ja komplexe Anteile. Wie kann man in Matlab die 
grafisch Darstellen?

von Rainer (Gast)


Lesenswert?

Hi Mike, ich hab dein Ergebnis nun auch herausbekommen.
Ist dies definitiv die korrekte Lösung bzw. Matlabprogramm?

von Rainer (Gast)


Lesenswert?

Ist das Ergebnis jetzt so richtig?

ifft(X) = 0.4, 0.0618, 1.0779, -0.1618, -0.0171, 0.2, -1.2482, -0.1618,
          0.7873, 0.0618

von Rainer (Gast)


Lesenswert?

X(i) ist ja von i=0 bis i=5 gegeben. Laut Aufgabe soll ja eine IDFT mit 
N=10 Punkten durchgeführt werden. Da das Signal reell ist sehen die 
Koeffizienten so aus: X = [1,2-i,-1+i,-2-j,2+j,1,2-j,-2+j,-1-i,2+i]
Jetzt verstehe ich da nicht warum die Vorzeichen der Imaginäranteile ab 
dem 6. Wert bis 10. Wert verdreht werden müssen.

von Unit* (Gast)


Lesenswert?

Wenn das Signal reell ist, dann der reelle Teil der 
Fouriertransformierte gerade, und der imaginäre Teil ungerade sein soll.
Ein Vektor ist
gerade, wenn v(-i mod N) = v(i),
ungerade, wenn v(-i mod N) = -v(i),
wo N die Länge des Vektors und i=0..N-1 ist.

von Mike van Dyke (Gast)


Lesenswert?

>Jetzt verstehe ich da nicht warum die Vorzeichen der Imaginäranteile
>ab dem 6. Wert bis 10. Wert verdreht werden müssen.

Bevor du dich der Materie mit trial-and-error näherst, ziehe doch einmal 
ein/dein Skript zu Rate. Auch google liefert viele Treffer, z.B. den 
hier
ftp://ftp.tnt.uni-hannover.de/pub/edu/DigSig1/Edler/digsig-08.pdf

von Rainer (Gast)


Lesenswert?

Ein Skript hab ich auch. Leider ist da kein Beispiel aufgeführt wie ein 
reelles Signal aussehen soll.

von Rainer (Gast)


Lesenswert?

.... wie kann man in Matlab eigentlich den Realteil sowie Imaginaanteil 
plotten?

von Holger (Gast)


Lesenswert?

Hi Rainer!

Soweit ich weiss kann man das einfach in die Plotanweisung schreiben!
Wenn man sich zum Beispiel den Real -und Imaginäranteil eines Sinus 
ansehen will, kann man das z.B. folgendermaßen machen:

plot(real(y))
plot(imag(y))


mit y= A * sin(2*pi*f*t)



Gruß

von Rainer (Gast)


Lesenswert?

Ich nochmals über die Aufgabe und deren Ergebnis nachgedacht. 
Prinzipiell ist die Aufgabe nicht schwer, man muss halt nur wissen wie 
ein reelles Signal aussieht. Und das Ergebnis ist jetzt nach meiner 
Meinung korrekt.

von Daniel K. (Firma: southpark SOP) (eric2000)


Lesenswert?


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.