I did make an code of fast fourier transform. But there's an error on the code when I run it. There's anyone who more about and can assist or guide me to make the code running
2 views (last 30 days)
Show older comments
Mukendi Alonso
on 14 Mar 2024
Commented: Walter Roberson
on 15 Mar 2024
I did make a code of FFT(fast fourier transform) using excel dataset (2049*7) as first column is taken as time and 2.3 and 4 as voltage A, B and C' and the 5,6 and 7 columns as currents A,B,C. When I run the code it give me error.
" Unrecognized function or variable 'Window_Nh'.
Error in fft_analyser(line 17)
Window_data = repmat(Window_Nh, 1, 7); % Replicate the window for 7 columns"
Below is half of the code that are note working
data = readtable('sadieldata.xlsx'); % load data
fs = 1000; % Sampling frequency
T = 1/fs; % Sampling period
N = 2049; % Number of samples
t = (0:N-1)*T; % Time Vector
U1 = data(:,1); % read phase 1 voltage
U2 = data(:,2); % read phase 2 voltage
U3 = data(:,3); % read phase 3 voltage
i1 = data(:,4); % read phase 1 current
i2 = data(:,5); % read phase 2 current
i3 = data(:,6); % read phase 3 current
%w = hann(N); % apply window function
Nh = 1:N; % number of windows for Hann Window
Nhr = rot90(Nh); % rotated window vector
data = rand(N, 7); % data of size N x 7; % Create a Hanniing window for each column
Window_Nhr = hann(N); % create a hanning window of length N
Window_data = repmat(Window_Nh, 1, 7); % Replicate the window for 7 columns
Window_rot = zeros(N, 7); % rotate Window vector to perform multiplication
for i = 1:size(Window_data, 2) % Iterate over columns
% Rotate the column by 90 degrees counterclockwise
Window_rot(:, i) = rot90(Window_data(:, i));
end
0 Comments
Accepted Answer
Walter Roberson
on 14 Mar 2024
You define a variable Window_Nhr but then you try to repmat Window_Nh
3 Comments
Walter Roberson
on 15 Mar 2024
N = 2049; % Number of samples
That is a constant size
U1 = data(:,1); % read phase 1 voltage
That depends on the size of the input
Window_rot = zeros(N, 7); % rotate Window vector to perform multiplication
That is the constant size, by 7
U1_hann = U1.*Window_rot;
That attempts to multiply the variable-length data, by 2049 x 7 array. That will fail if the input data does not happen to be 2049 long.
Walter Roberson
on 15 Mar 2024
What you probably need to do is
U1 = data{:,1};
Overlap_size = 64; %NEEDS TO BE ADJUSTED
buffered_U1 = buffer(U1, N, Overlap_size);
Window_Nhr = hann(N);
hanned_U1 = Window_Nhr .* buffered_U1;
More Answers (0)
See Also
Categories
Find more on Spectral Measurements 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!