Plot fft result on linear period scale?

I need to plot the results of an fft on a linear period scale. The output is on a linear frequency scale. Is there an easy way to do this or will I have to interpolate?

回答(1 个)

If you really want to see the periods, then no you just have to plot by period.
Fs = 1000;
t = 0:1/Fs:1-1/Fs;
x = cos(2*pi*100*t)+randn(size(t));
xdft = fft(x);
xdft = xdft(1:length(xdft)/2+1);
df = Fs/length(x);
freqvec = 0:df:Fs/2;
Periods = 1./freqvec;
plot(Periods(2:end),abs(xdft(2:end)))
set(gca,'xlim',[1/500 1/50]);
xlabel('Seconds');

2 个评论

Thank you for your help, I'm confused though. Is freqvec not linear, making Period non-linear since it's the reciprocal? My aim is to have periods 10 20 30 40 seconds etc to 100.
yes, Period is definitely nonlinear.

请先登录,再进行评论。

类别

在 帮助中心 和 File Exchange 中查找有关 Fourier Analysis and Filtering 的更多信息

标签

提问:

Cl
2013-12-10

评论:

2013-12-10

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by