Single sided spectrum of vector y obtained using fft

8 ビュー (過去 30 日間)
Diya Samanta
Diya Samanta 2020 年 9 月 1 日
編集済み: Star Strider 2020 年 9 月 1 日
how to plot a single sided spectrum of vector y obtained using fft?

採用された回答

Star Strider
Star Strider 2020 年 9 月 1 日
The way I usually calculate and plot it:
t = linspace(0, 1, 1E+4);
s = sum(sin([0; 100; 200; 300]*2*pi*t*10)) .* randn*10;
Ts = mean(diff(t)); % Sampling Interval
Fs = 1/Ts; % Sampling Frequency
Fn = Fs/2; % Nyquist Frequency
L1 = numel(t);
FTs1 = fft(s)/L1; % FFT Of Original Signal
Fv1 = linspace(0, 1, fix(L1/2)+1)*Fn; % Frequency Vector
Iv1 = 1:numel(Fv1); % Index Vector
L2 = 2^nextpow2(L1);
FTs2 = fft(s,L2)/L1; % FFT Of Zero-Padded Signal
Fv2 = linspace(0, 1, fix(L2/2)+1)*Fn; % Frequency Vector
Iv2 = 1:numel(Fv2); % Index Vector
figure
subplot(2,1,1)
plot(Fv1, abs(FTs1(Iv1))*2)
title('FFT of Original Signal')
xlabel('Frequency (Hz)')
ylabel('Amplitude')
grid
subplot(2,1,2)
plot(Fv2, abs(FTs2(Iv2))*2)
title('FFT of Zero-Padded Signal')
xlabel('Frequency (Hz)')
ylabel('Amplitude')
grid
This also demonstrates a way to increase the frequency resolution of the fft result by zero-padding it.
.
  1 件のコメント
Star Strider
Star Strider 2020 年 9 月 1 日
編集済み: Star Strider 2020 年 9 月 1 日
As always, my pleasure!

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

その他の回答 (1 件)

Deepak Gupta
Deepak Gupta 2020 年 9 月 1 日
編集済み: Deepak Gupta 2020 年 9 月 1 日
You can refer FFT Documentation. There are multiple examples to obtain this.

カテゴリ

Help Center および File ExchangeSpectral Measurements についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by