getting X domain as Frequency when applying FFT
古いコメントを表示
hi everyone,
i have data of Volt Vs Second of some measurment i did. i plotted this data and made dft(fft) on this data in order to get into the frequency domain and to filter some noise by a bandstop filter.
the problem is that when i make fft, the x axis is not Frequency. how can i invert it to Frequency so i can know in what Hz i have nosie.
tnanks a lot
回答 (2 件)
Wayne King
2013 年 12 月 31 日
編集済み: Wayne King
2013 年 12 月 31 日
You have to know the sampling frequency, which is the reciprocal of the difference between your time increments. I'm assuming that your time instants are evenly spaced. I'll assume you know your sampling frequency, but you can get if from your time vector if you do not.
Here is how to create a frequency vector.
t = 0:1/1000:1-1/1000;
x = cos(2*pi*100*t);
xdft = fft(x);
xdft = xdft(1:length(x)/2+1); % even length signal
Fs = 1000;
df = Fs/length(x);
freqvec = 0:df:Fs/2;
plot(freqvec,abs(xdft))
If you have the Signal Processing Toolbox, use periodogram() that will output a meaningful frequency vector for you.
1 件のコメント
HS Kim
2016 年 11 月 21 日
I think you uesd "xdft(1:length(x)/2+1)" for deleting mirror image that will be happended by 'abs(xdft)' in plot, right?? I learned that plot(freq, abs(dtft)) then mirror image is happened if do plot without dtft/2. Please let me know exactly. Thank you :D
kobi
2013 年 12 月 31 日
0 投票
1 件のコメント
Wayne King
2013 年 12 月 31 日
You are not wrong. If you want to filter your signal, then do it that way -- using filter()
カテゴリ
ヘルプ センター および File Exchange で Fourier Analysis and Filtering についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!