Hallo zusammen!
Ich habe eine ziemlich grundlegende Frage bzgl. FFT/IFFT in Matlab. Hab
dazu schon sämtlich Foren durchsucht, werde aber einfach nicht schlau
draus, vielleicht könnt ihr mir helfen.
Mein Ziel ist es eine wave-Datei in Matlab einzulesen, mit einer FFT zu
transformieren, darauf einen Brickwall-Filter anzuwenden (also alle
nicht gewünschten Frequenzen=0 zu setzen) und mittels IFFT wieder das
Zeitsignal zu erhalten.
Dazu hab ich mir erstmal mit einem einfachen Sinus rangetastet und stoß
da leider schon an meine Grenzen...
1 | Nfft = 1024; % Anzahl Abtastwerte
|
2 | fa=20000; % Abtastfrequenz
|
3 | t=(0:(Nfft-1))/fa; % Zeitachse
|
4 |
|
5 | % Sinus erzeugen
|
6 | f =1000; % Sinus-Frequenz
|
7 | y=sin(2*pi*f*t); % Sinus
|
8 | subplot(3,1,1)
|
9 | plot(t,y)
|
10 | title('orginal Sinus')
|
11 |
|
12 | % FFT anwenden
|
13 | freq=abs(fft(y));
|
14 | subplot(3,1,2)
|
15 | plot(fa*(0:(Nfft/2-1))/Nfft,freq(1:Nfft/2))
|
16 | title('FFT vom Sinus')
|
17 |
|
18 | % IFFT anwenden
|
19 | N = [freq(1:513) conj(fliplr(freq(2:512)))];
|
20 | x = ifft(N);
|
21 | subplot(3,1,3)
|
22 | plot(x)
|
23 | title('orginal Sinus rücktransformiert')
|
Unklar ist mir, wieso
1) Der Dirac nicht sauber bei 1000Hz erscheint
2) Die Amplitude beim zurücktransformierten Signal schwankt (hängt ja
evtl. mit dem "unsauberen" Dirac zusammen?)
Wahrscheinlich wird der Beitrag bei vielen Experten für Kopfschütteln
sorgen, aber ich bin über jede Hilfestelle froh :)
Gruß, Frederik