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 件)

Wayne King
Wayne King 2013 年 12 月 10 日

0 投票

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 件のコメント

Cl
Cl 2013 年 12 月 10 日
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.
Wayne King
Wayne King 2013 年 12 月 10 日
yes, Period is definitely nonlinear.

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeFourier 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