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


von M & m &. (hanno85)


Angehängte Dateien:

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:
1
function [y,t] = fourier(ua,N,f,ap)
2
3
T=1/f;
4
y=0;
5
y2=0;
6
t=0:1/(f*f):T*ap;
7
8
for n = 1:N
9
    y = y + [(2*ua / (pi)) * (1/n) * sin(2*pi*f*n*t)/n ];
10
end    
11
y2=(-2*ua .*rem(t,T) ./T) + ua;
12
13
figure(1)
14
plot(t,y)
15
grid on
16
xlabel('t in s')
17
ylabel('A in V')
18
title('\it{Fouriertransformierte}','FontSize',16)
19
figure(2)
20
plot(t,y2)
21
grid on
22
xlabel('t in s')
23
ylabel('A in V')
24
title('\it{Sägezahnsignal}','FontSize',16)

von joep (Gast)


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?

von M & m &. (hanno85)


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 : /

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

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

von M & m &. (hanno85)


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.
1
function [y,t] = fourier(ua,N,f,ap)
2
3
T=1/f;
4
w=2*pi*f;
5
n=1:N;
6
t=0:1/(f*f):T*ap;
7
y=0;
8
y2=0;
9
y3=0;
10
11
y = (2*ua / (pi)) * (1./n) * sin(w*n'*t); 
12
13
for n = 1:N
14
    y3 = y3 + [(2*ua / (pi)) * (1/n) * sin(2*pi*f*n*t)];
15
    figure(3)
16
    plot(t,y3)
17
    grid on
18
    hold on
19
    xlabel('t in s')
20
    ylabel('A in V')
21
    title('\it{harmonische Sinusschwingungen}','FontSize',16)
22
23
end  
24
25
y2=(-2*ua .*rem(t,T) ./T) + ua;
26
figure(1)
27
plot(t,y)
28
grid on
29
xlabel('t in s')
30
ylabel('A in V')
31
title('\it{Fouriertransformierte}','FontSize',16)
32
figure(2)
33
plot(t,y2)
34
grid on
35
xlabel('t in s')
36
ylabel('A in V')
37
title('\it{Sägezahnsignal}','FontSize',16)

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.