Perform FFT from imported excel data. Help please

조회 수: 2 (최근 30일)
Jmv
Jmv 2020년 2월 25일
댓글: Jmv 2020년 2월 26일
Hi, I have the attached time in first column and current in second column. i am trying to perform FFT and plot magnitude vs Frequency. My code is showing an empty plot.
could you please tell me where i am going wrong and kindly provide correction. I will be grateful. Thanks.
Sampling frequency is 20KHZ
[D,S,R] = xlsread('test data.csv');
RD = str2double(R);
Signal = RD(:,2); % Sampling Interval (milliseconds)
Ts = 0.00005; % Sampling Interval (seconds)
Fs = 1/Ts; % Sampling Frequency (Hz)
Fn = Fs/2; % Nyquist Frequency (Hz)
N = length(Signal);
meanSignal = mean(Signal); % ‘Signal’ Mean
FTSignal = fft(Signal-meanSignal)/N; % Normalised Fourier Transform Of Baseline-Corrected ‘Signal’
Fv = linspace(0, 1, fix(numel(FTSignal)/2)+1)*Fn; % Frequency Vector
Iv = 1:numel(Fv); % Index Vector
[pks,locs] = findpeaks(abs(FTSignal(Iv))*2, 'MinPeakHeight',0.044);
figure
plot(Fv, abs(FTSignal(Iv))*2)
grid
xlabel('Frequency (Hz)')
ylabel('Amplitude')
plotIdx = 1:Iv(max(locs));
figure
plot(Fv(plotIdx), abs(FTSignal(Iv(plotIdx)))*2)
hold on
plot(Fv(plotIdx(locs)), pks, '^r', 'MarkerFaceColor','r')
hold off
xlabel('Frequency (Hz)')
ylabel('Amplitude')
text(0.005, 0.08, 'Choose a peak and frequency')
  댓글 수: 2
Walter Roberson
Walter Roberson 2020년 2월 25일
"Sampling frequency is 20KHZ"
No it is not. If you examine the times in the first column, the difference is 0.0005 which is 2kHz. Your Ts is not correct for the data file.
Jmv
Jmv 2020년 2월 26일
Hi Walter. I appreiciate your comment, thanks
yes you are right, the sampling frequency i was meant to use is actally 20KHZ and Ts 0.00005. the times in data files are not correct.
I have now re-uploaded file attached with correct time data.
I am still getting an empty graph. where do you think i am going wrong?
Thanks

댓글을 달려면 로그인하십시오.

답변 (1개)

Ridwan Alam
Ridwan Alam 2020년 2월 26일
편집: Ridwan Alam 2020년 2월 26일
Signal = D(:,2);
RD = str2double(R) is making a matrix of NaNs. So, you can use D instead of R.
  댓글 수: 1
Jmv
Jmv 2020년 2월 26일
Thanks very much for the reply.
i can now plot after the changes you suggested.
however to be able determine frequencies at 60 HZ as my fundamental frequency and determine its multiples ( i.e 2x60hz, 3x60hz, ect up to multiple of 50). Could you kindly guide me on how to do that. if you could share a code, i would really apreciate it. Thanks very much

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Measurements and Feature Extraction에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by