% Beispiel zur Berechnung von Fourierkoeffizienten mit matlab. % Dieses Skript sollte man anpassen, sonst machst wenig sinn. % Wir erstellen y(x), die eingabefunktion: N=2^10; x=linspace(0,2*pi,N); y = cos(x) + 10*cos(2*x) + 5*sin(3*x); % jetzt rechnen wir die DFT aus: f=fft(y,N); f = f/N; % das 1/N ist die Normierungskonstante; die wird von matlab nicht automatisch angewandt. % ok, jetzt moechte ich nur betragsgrosse Frequenzen sehen: k=find(abs(f) > 1e-3 * max(abs(f))); % fuer kosinusse: eigentlich A_k = f_k + f_{N-k}. % In Matlab: f_k = f(k+1) --> f_{N-k} = f(N-(k-1) +1), wobei die letzte 1 wieder von matlab indizes kommt. % nur der Fall A_0 = 0.5 * f_0 macht probleme: f_{N-0} = f_N ist kein % zugelassener Datenpunkt mehr (man hat ja nur N). Also aufpassen! I = find(k>1); k = k(I); frequenzen=k-1; basise = f(k); kosinusse = f(k) + f(N-k+2); sinusse = i *( f(k) - f(N-k+2)); alleszusammen = [ frequenzen ; kosinusse; sinusse ]; disp( [ ... sprintf( 'freq\tA_k\tB_k\n' ) ... sprintf( '%g\t%.2g\t%.2g\n', alleszusammen) ] ); % noch interessant: %plot(abs(f))