Aufstellen einer Fourier-Reihe < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) überfällig | Datum: | 23:25 Mo 18.05.2009 | Autor: | mb588 |
Aufgabe | Gegeben ist ein Diskretes Signal mit dem Abtastvektor a der länge N. Implementieren Sie ein Programm, dass ihn die Reelle Fourier-Reihe berechnet und Plotten Sie anschließen das Signal und die Fourier-Reihe in einen Koordinatensystem. |
Hey.
Ich hab folgndes im Internet gefunden
http://www.scribd.com/doc/15600511/Fourierreihen
und hab es auch schon probiert zu Programmieren, aber beim Plotten kommt es ganz und garnicht hin! Ich glaube der Fehler liegt bei der Indizierung, weil bei den Fourier-Reihen ja als Indizes Null steht, aber in Matlab darf das ja nicht genommen werden. Hab da schon lange rumprobiert komm aber nicht drauf :(.
Kann mir einer weiterhelfen?
clear
%%
%Es wird ein Sägezahnsiganal eingelesen wobei die Länge abgefragt wird
K=input('Geben Sie die halbe Länge einer Periode des Sägezahnsignals ein: ');
%Eingabe des Vektors
N=input('Geben Sie die Länge des abtastenden Vektors ein: ');
for k=1:N-1
b(k)=(k-1)*1/(N-2);
end;
b(N)=0.5;
plot([0 2*K 2*K 4*K],[0 1 0 1],'g',0:2*K/(N-1):2*K,b,'ko');
for l=1:N
for k=1:N
W(k,l)=exp(-i*((k-1)*(l-1)*2*pi)/N);
end;
end;
A=0;
B=0;
C=0;
%Zeichnen
for k=1:N/2+1
A(k)=0;
B(k)=0;
C(1)=0;
for l=1:N
A(k)=A(k)+(1/N)*b(l)*cos((k*l*2*pi)/N);
B(k)=B(k)+(1/N)*b(l)*sin((k*l*2*pi)/N);
C(1)=(1/N)*b(l);
end;
end;
y=0;
x=linspace(0,4,1001);
for m=2:N/2
y=0;
y=C(1)+2*(y+A(m)*cos(((m-1)*2*pi*x)/(2*K))+B(m)*sin(((m-1)*2*pi*x)/(2*K)))+A(N/2)*cos((N*pi*x)/(2*K));
end;
hold on,plot(x,y);
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 00:20 Do 21.05.2009 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|