FFT Transform on vectors

1 view (last 30 days)
Cyriac Jose
Cyriac Jose on 5 Sep 2018
Edited: Cyriac Jose on 10 Sep 2018
I have a set of 50Hz Voltage and Current values stored as arrays under variable name 'Volt' and 'Cur' sampled at 1000 Hz
Things to be obtained:
1. Extract the 50 Hz component out of the whole load data in turn. Require a sliding window of 20 ms taking the 50 Hz component of the vector for that sliding window and do the fft of that vector and store it in a separate array.
2. Simliary take 50 Hz component of every 20 ms window and store the same to the array.
Can anyone lend a helping hand regarding the same?

Answers (1)

Naman Chaturvedi
Naman Chaturvedi on 10 Sep 2018
This should help.
For sliding window;
% x=signal
% A=output array
% shift=shift of sliding window
% windowlen=window length
% L=size of signal
A=[];
for i=1:shift:L-windowlen+1
A=[A;abs(fft(x(i:i+windowlen,1)))];
end
For fixed window:
% x=signal
% A=output array
% windowlen=window length
% L=size of signal
A=[];
for i=1:windowlen:L-windowlen+1
A=[A;abs(fft(x(i:i+windowlen,1)))];
end
  1 Comment
Cyriac Jose
Cyriac Jose on 10 Sep 2018
Edited: Cyriac Jose on 10 Sep 2018
Thanks for the help Naman! But for each of those sliding window function lets say a sliding window of size 20, we have 20 values to be stored in the array 'A' after each loop iteration. What I want is to have just the 50Hz component out of the 20 fft values in each cycle to be stored in the array 'A'. i.e if the loop is iterated 7 times, the number of elements in my array 'A' should be 7 and not 7*20 elements. Any useful info on the same?

Sign in to comment.

Categories

Find more on Fourier Analysis and Filtering in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!