single sided amplitude fourier spectrum
9 次查看(过去 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!