single sided amplitude fourier spectrum
12 ビュー (過去 30 日間)
古いコメントを表示
Hello all, I am new user that trying to learn coding. I have an acceleration-time history with a time-step of 0.01 sec. The total duration is 14 sec. I would like to get a single-sided fourier spectrum of it. Is there any packed code for it? Any kind of help is appreciated. The attached file contains the data. Thank you.
Muhsin
0 件のコメント
採用された回答
Star Strider
2017 年 10 月 12 日
編集済み: Star Strider
2017 年 10 月 12 日
The Code —
D = dlmread('Muhsin A00.txt', '\t', 1,0);
t = D(:,1); % Time (s)
a = D(:,2); % Acceleration (g)
L = length(t);
Ts = t(2)-t(1); % Sampling Interval (sec)
Fs = 1/Ts; % Sampling Frequency (Hz)
Fn = Fs/2; % Nyquist Frequency (Hz)
FTa = fft(a)/L; % Fourier Transform (Scaled)
Fv = linspace(0, 1, fix(L/2)+1)*Fn; % Frequency Vector
Iv = 1:length(Fv); % Index Vector
figure(1)
plot(Fv, abs(FTa(Iv))*2) % One-Sided Amplitude Plot
xlabel('Frequency (Hz)')
ylabel('Amplitude (g)')
grid
EDIT — Changed ‘Ts’ calculation to accommodate ‘t(1)=0.01’ and ‘t(end)=0’.
19 件のコメント
Star Strider
2017 年 10 月 18 日
The smoothdata function would likely work. (It was introduced in R2017a, and since I do not know what version you have, I did not suggest it.)
You would use it on the absolute value of your single-sided Fourier transformed data.
その他の回答 (1 件)
Image Analyst
2017 年 10 月 12 日
Isn't that what pwelch() does? (Signal Processing Toolbox required for pwelch).
1 件のコメント
Image Analyst
2017 年 10 月 12 日
You might also like spectrogram() function.
Or the Signal Analyzer app on the Apps tab of the tool ribbon.
参考
カテゴリ
Help Center および File Exchange で Spectral Measurements についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!