www.mikrocontroller.net

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

Autor: M & m & m (hanno85)
Datum: 28.10.2008 12:24
Dateianhang: verkr_ppelter_s_gezahn.fig (66,9 KB, 88 Downloads)

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: 28.10.2008 13:36

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: 04.11.2008 13:58

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
Datum: 04.11.2008 15:50

Du hast das Gibbssche Phänomen entdeckt:
http://de.wikipedia.org/wiki/Gibbssches_Ph%C3%A4nomen
Autor: M & m & m (hanno85)
Datum: 10.11.2008 22:10

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 Email-Adresse ist freiwillig. Wenn Sie automatisch per Email ü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
  • JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
  • Schaltpläne, Screenshots usw. als PNG oder GIF anhängen

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel





Mit dem Abschicken erkennst du die Nutzungsbedingungen an.
- Amazon.de Anzeige -
amazon.de

webmaster@mikrocontroller.netImpressumWerbung auf Mikrocontroller.net