www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Matlab - einfache Fouriertransformation eines Sägezahns


Autor: M & m & m (hanno85)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich habe ein kleines Problem mit meinem Matlab Programm, es zeigt mir 
andeutungsweise einen Sägezahn, wenn ich die harmonischen Schwingen 
gemäß der Fourierformel für fallende Sägezahmsignale anwende.

hier mein Programm:
function [y,t] = fourier(ua,N,f,ap)

T=1/f;
y=0;
y2=0;
t=0:1/(f*f):T*ap;

for n = 1:N
    y = y + [(2*ua / (pi)) * (1/n) * sin(2*pi*f*n*t)/n ];
end    
y2=(-2*ua .*rem(t,T) ./T) + ua;

figure(1)
plot(t,y)
grid on
xlabel('t in s')
ylabel('A in V')
title('\it{Fouriertransformierte}','FontSize',16)
figure(2)
plot(t,y2)
grid on
xlabel('t in s')
ylabel('A in V')
title('\it{Sägezahnsignal}','FontSize',16)

Autor: joep (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab leider gerad kein Matlab da, kann mir  also dein Ergebnis nicht 
anschaun.
Aber da du ja meinst, dass er andeutungsweise einen Sägezahn anzeigt: 
hast du N groß genug gewählt?

Autor: M & m & m (hanno85)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja es ist leider kein richtiger Sägezahn, der ist an den stellen, wo er 
gerade nach oben gehen soll noch ein sinus zu erkennen und egal wie hoch 
ich die Fourier-Reihe berechne es ändert sich nichts daran : /

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast das Gibbssche Phänomen entdeckt: 
http://de.wikipedia.org/wiki/Gibbssches_Ph%C3%A4nomen

Autor: M & m & m (hanno85)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ah Fehler behoben hatte ein 1/n zuviel in der Funktion! Typischer 
Anfängerfehler : /

Hier nochma die richtige Funktion, diesma hab ich die mit Vektoren 
berechnet, um die For-Schleife zu umgehen. Jedoch habe ich noch keine 
Idee, wie ich die einzelnen harmonischen Schwingungen ohne For-Schleife 
darstellen kann? Hat jmd eine Idee, am besten auch mit Vektor und 
Matrizenrechnung.
function [y,t] = fourier(ua,N,f,ap)

T=1/f;
w=2*pi*f;
n=1:N;
t=0:1/(f*f):T*ap;
y=0;
y2=0;
y3=0;

y = (2*ua / (pi)) * (1./n) * sin(w*n'*t); 

for n = 1:N
    y3 = y3 + [(2*ua / (pi)) * (1/n) * sin(2*pi*f*n*t)];
    figure(3)
    plot(t,y3)
    grid on
    hold on
    xlabel('t in s')
    ylabel('A in V')
    title('\it{harmonische Sinusschwingungen}','FontSize',16)

end  

y2=(-2*ua .*rem(t,T) ./T) + ua;
figure(1)
plot(t,y)
grid on
xlabel('t in s')
ylabel('A in V')
title('\it{Fouriertransformierte}','FontSize',16)
figure(2)
plot(t,y2)
grid on
xlabel('t in s')
ylabel('A in V')
title('\it{Sägezahnsignal}','FontSize',16)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.