|
Hoize |

Forum-Newbie
|
 |
Beiträge: 1
|
 |
|
 |
Anmeldedatum: 21.12.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.12.2011, 15:24
Titel: DFT Berechnung
|
 |
hallo,
kann mir irgendwer diese Aufgabe lösen?
muss es für die fh machen,komm jedoch gar nicht klar damit...:
Aufgabe:
Bestimmen Sie aus dem verrauschten Signal die DFT ohne Verwendung der vordefinierten FFT-Funktion in Matlab.
Erzeugung des verrauschten Signals:
X=0:0.01:2*pi*10;
Y=10*sin(x)+5*sin(3.*x)+3sin(5.*x)+sin(7.*x)+sin(11.*x)
Mathematische Beschreibung:
siehe Bild...
(e hoch 2*pi*i*j*k/N)
mfg und danke
Beschreibung: |
|
 Download |
Dateiname: |
2011-12-21 14.20.55.jpg |
Dateigröße: |
1.46 MB |
Heruntergeladen: |
2137 mal |
|
|
|
|
|
sepp123 |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.12.2011, 15:40
Titel:
|
 |
tut mir leid ich kann dir nicht helfen ich glaube diese aufgabe ist generell unlösbar!
|
|
|
Noy |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.12.2011, 16:53
Titel:
|
 |
Das ist die DFT wobei AbtWe() ein Array ist wo diene abgetasteten Werte deines Signals drin stehen k ist die Anzahl deiner Abtastwerte. Y() ist dein Array wo die Komplexen DFT Ergebnisse drin stehen.
Mit Y=zeros(k,1); wird einfach ein leerer Vektor mit 0 en erstellt.
Für die X Achse musst du
Delta_F ist eine Abtasttzeit (1/Abtastfrequenz).
Zum Plotten dann einfach
schrieben.
Bitte code-Umgebung verwenden - Danke, Jan S
|
|
|
Grave |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.01.2012, 14:32
Titel:
|
 |
Hallo,
ich müsste mich hier auch mal einmischen. hab das jetzt mal so versucht zu "programmieren", wie es oben beschrieben ist, aber irgendwie komm ich da auf keinen grünen zweig. bekomme vollkommen unrealistische werte und das unten stehende diagramm.
Könnte mir da jemand vllt bissl auf die Sprünge helfen, ist wahrscheinlich nur wieder nen dummer fehler....
Beschreibung: |
|
 Download |
Dateiname: |
Unbenannt.jpg |
Dateigröße: |
153.68 KB |
Heruntergeladen: |
2018 mal |
|
|
|
DSP |

Forum-Meister
|
 |
Beiträge: 2.117
|
 |
|
 |
Anmeldedatum: 28.02.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2014b
|
 |
|
|
 |
|
Verfasst am: 06.01.2012, 15:11
Titel:
|
 |
Es muss ja auch heißen...
Du solltest dir auch bewusst machen, dass hier ein beidseitiges Spektrum berechnet wird (negative und positive Frequenzen). Daher muss man auch vor der Darstellung noch fftshift(Y) verwenden, oder sich die Funktion selber schreiben. Da aber i.d.R. nur der positive Frequenzbereich interessiert, können in Y alle Werte nach k/2+1 abgeschnitten werden. Dann wird nur von 0...Fa/2 [Hz] dargestellt. Ob das andere richtig ist, habe ich allerdings nicht kontrolliert.
|
|
|
DSP |

Forum-Meister
|
 |
Beiträge: 2.117
|
 |
|
 |
Anmeldedatum: 28.02.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2014b
|
 |
|
|
 |
|
Verfasst am: 06.01.2012, 15:14
Titel:
|
 |
Leider kann man nicht mehr editieren
Es fehlt auch noch die Skalierung von Y...ansonsten wird ein Sinus mit 10V Amplitude falsch dargestellt.
Ich kann euch nur das umfassende FFT Bsp. hier aus der Skriptecke empfehlen. Die DFT ist ohnehin viel zu langsam...
|
|
|
DSP |

Forum-Meister
|
 |
Beiträge: 2.117
|
 |
|
 |
Anmeldedatum: 28.02.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2014b
|
 |
|
|
 |
|
Verfasst am: 06.01.2012, 15:20
Titel:
|
 |
Das man nicht editieren kann, nervt...
Es geht auch mit dem Frequenzvektor F nicht, ein beidseitiges Spektrum darzustellen. Dazu müsste er auch die negativen Freq. entahlten und nur bis zur halben Abtastfrequenz gehen.
Versuch mal folgendes...
|
|
|
Grave |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.01.2012, 16:43
Titel:
|
 |
Erstmal vielen Dank für deien Hilfe.
Für ein Projekt müssen wir in Matlab das DFT mit der mathematischen Formel berechnen ohne einer vorgefertigten Matlab Funktion. Nur leider komme ich da nicht wirklich weiter.
Habe jetzt mal deine Lösung in das Programm eingefügt, aber leider kommt noch nicht das raus, was raus kommen müsste. Habe mal ein Bild mit dem Graphen, ebenso das was raus kommen müsste angehängt.
Ich hoffe und freue mich auf weitere Hilfe.
Beschreibung: |
|
 Download |
Dateiname: |
Unbenannt.jpg |
Dateigröße: |
68.91 KB |
Heruntergeladen: |
2067 mal |
|
|
|
DSP |

Forum-Meister
|
 |
Beiträge: 2.117
|
 |
|
 |
Anmeldedatum: 28.02.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2014b
|
 |
|
|
 |
|
Verfasst am: 06.01.2012, 17:23
Titel:
|
 |
In der Skizze ist wohl keine dB Skalierung verwendet worden und nur der niederfreq. Bereich dargestellt. Versuch es mal so...
|
|
|
Grave |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.01.2012, 18:18
Titel:
|
 |
Also einen kleinen Ausschlag hab ich jetzt, aber leider noch immer nicht, wie auf der skizze....
ich krieg noch die kriese.......
Ich mein, ich will doch keine doktor arbeit schreiben, noch studier ich informatik. ^^
|
|
|
DSP |

Forum-Meister
|
 |
Beiträge: 2.117
|
 |
|
 |
Anmeldedatum: 28.02.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2014b
|
 |
|
|
 |
|
Verfasst am: 06.01.2012, 19:02
Titel:
|
 |
Sorry...so ist das, wenn man Sachen ändert und löscht und alte Werte noch im Workspace hat und nicht merkt, dass sie dennoch verwendet werden.
Es fehlt außerdem bei dem Testsignal y das 2*pi...es heißt nämlich
sin(2*pi*f * t)
Hier ist nun aber kein Leckage-Effekt aufgetreten, da die Frequenzauflösung df der DFT ein ganzzahliges Verhältnis zu den einzelnen Frequenzen des Testsignals (1,3,5,7 und 11 Hz) hat. In dem Bild sieht das etwas anders aus. In deinem Bsp. mit N = 6284 Werten hat df kein vielfaches Verhältnis zu y.
|
|
|
Scriptor |

Forum-Century
|
 |
Beiträge: 217
|
 |
|
 |
Anmeldedatum: 22.02.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.01.2012, 20:23
Titel:
|
 |
Servus!!
Dürfte ein wenig schneller gehen.
Grüße!
|
|
|
Grave |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.01.2012, 21:50
Titel:
|
 |
Vielen Dank!
ihr seids die größten
|
|
|
FloG |

Forum-Newbie
|
 |
Beiträge: 8
|
 |
|
 |
Anmeldedatum: 05.06.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 14.06.2012, 11:52
Titel:
|
 |
Hallo zusammen
Ich habe eine Frage zu folgender Code-Zeile:
Dass der Eintrag amp(1) nur durch N geteilt wird und der Rest durch 2/N ist mir klar. Warum wird aber hier der letzte Wert amp(k) wieder nur durch N geteilt? welcher Frequenz entspricht der wert amp(k)? 0Hz oder fa/2?
Damit nur das Einseitige (positive) Amplitudenspektrum angezeigt wird nutzt man:
Das habe ich verstanden. Nur wie ist es wenn ich eine ungerade Anzahl von N habe? (Ja ich weiss es wird der langsamere DFT Algorithmus verwendet wenn N keine Zweierpotenz ist)
N=1000 -> Frequenzachse von 1:1000/2+1 = 501
N=1001 -> Frequenzachse von 1:abs(1001/2) = 501 ??? oder abs(1001/2+1) = 502 ??? (=points)
Ich möchte ja meine Frequenzachse erstellen und normieren:
Warum habe ich überhaupt ungerade Werte von N? -> Anpassung an Signalfrequenz um Leck-Effekt zu minimieren.
|
|
|
DSP |

Forum-Meister
|
 |
Beiträge: 2.117
|
 |
|
 |
Anmeldedatum: 28.02.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2014b
|
 |
|
|
 |
|
Verfasst am: 14.06.2012, 12:20
Titel:
|
 |
|
 |
|
Wenn k = N/2+1 dann ist amp(k) die Amplitude bei der Nyquistfreq. = fa/2. Wenn N = gerade, dann ist der Gleichsignalanteil, wie auch die Nyquistfreq. nur einmal in Y = fft(signal) enthalten. Alle Freq.-anteile dazwischen kommen doppelt vor, für den positiven und negativen Freq.-bereich. Die Energie ist hier auf beide verteilt. Daher darf man zur Darstellung des pos. Spektrums diese Freq.teile auch nur mit N/2 skalieren. Ist N ungerade, liegt die Nyquistfreq. jedoch zwei mal vor und darf deshlab nicht mit N skaliert werden. Da der Wert bei der Nyquistfreq. ohnehin oft fehlerbehaftet ist, wird er in der Darstellung oft weggelassen...also nur bis N/2.
Für die Erstellung der Freq.achse würde ich dir folgende Art empfehlen. Das df ist nämlich entscheidend, da ja hieraus erschlossen werden kann, ob Leakage vorliegt (ist ja hier auch weiter oben beschrieben).
Warum N gerade oder ungerade ist, hängt doch mal in erster Linie mit der Aufnahmezeit zusammen . Für die FFT/DFT ist das erstmal nicht relevant. Du kannst dann, um die FFT nutzen zu können, durch Zeropadding auf die nächste 2er Potenz verlängern oder aber etwas vom Signal abschneiden.
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|