How to increase amplitude of a peak in fft in MATLAB?
1 回表示 (過去 30 日間)
古いコメントを表示
Hello Everybody,
I am writing following code to plot fft in matlab from the ascii values. But i am getting less amplitude of the peak(as i get from the other software). How can i increase the amplitude? or is it a problem of windowing in fft? please suggest..am i doing right or wrong?
the code is following..
I = load('data1.asc');
for i = 1:2048
x = I(:,2);
end
plot(x)
Fs = 40000;
T = 1/Fs;
L = 2000;
NFFT = 2^nextpow2(L);
Y = abs(fft(x,NFFT))/L;
f = Fs/2*linspace(0,1,NFFT/2+1);
figure, plot(f,2*abs(Y(1:NFFT/2+1)))
xlabel('Frequency (Hz)')
ylabel('Magnitude')
0 件のコメント
回答 (1 件)
Dishant Arora
2013 年 7 月 23 日
編集済み: Dishant Arora
2013 年 7 月 24 日
In the other software you might be plotting fft against indices and here you are doing it differently i.e fft vs frequency samples. you can try below mentioned code to get the desired result.
Y = abs(fft(x));
plot(y)
1 件のコメント
Dishant Arora
2013 年 7 月 24 日
Also you can omit the for loop, simply use:
x = I(:,2);
and there's no need for NFFT as your data length is already in powers of 2.
参考
カテゴリ
Help Center および 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!