FFT of signal from text file
15 次查看(过去 30 天)
显示 更早的评论
Hi, I am trying to plot an FFT for an EMG signal which is saved in a text file. I did manage to plot the actual signal, but when I plotted the FFT, the window remained blank. Can someone please highlight what I am doing wrong. Also, How to determine the sampling frequency value (Fs)?
Attached please find the text file containing the EMG signal data. Thanks in advance.
Ts = mean(diff(t)); % Sampling Time
Fs = 1/Ts; % Sampling Frequency
Fn = Fs/2; % Nyquist Frequency
FEMG = fft(EMG)*2/L; % Fourier Transform (Normalised)
Fv = linspace(0, 1, fix(L/2)+1)*Fn; % Frequency Vector
Iv = 1:length(Fv); % Index Vector
figure(1)
plot(Fv, abs(FEMG(Iv)))
grid
0 个评论
采纳的回答
Star Strider
2015-11-20
I don’t see the error in your code, but the code here I wrote (plotting half of the fft) works:
fidi = fopen('John Smith emg.txt', 'rt');
T_EMG = textscan(fidi, '%f%f', 'Delimiter',' ');
t = T_EMG{1};
EMG = T_EMG{2};
L = length(t);
Ts = mean(diff(t)); % Sampling Time
Fs = 1/Ts; % Sampling Frequency
Fn = Fs/2; % Nyquist Frequency
FEMG = fft(EMG)*2/L; % Fourier Transform (Normalised)
Fv = linspace(0, 1, fix(L/2)+1)*Fn; % Frequency Vector
Iv = 1:length(Fv); % Index Vector
figure(1)
plot(Fv, abs(FEMG(Iv)))
grid
7 个评论
krn99
2017-6-5
sir i have used 10hz cutt of freq(fc) high pass and 1000hz fc for low pass FIR filter(4th order). i have used filtfilt function to avoid zero lag. But my doubt is do i want to do divide my cut off frequency with 0.802 for fourth order which is mentioned in Winters and Robertson book. i dont understand their concept. if you know please tell me. Thanks in advance
更多回答(0 个)
另请参阅
类别
在 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!