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

5 次查看(过去 30 天)
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

采纳的回答

Walter Roberson
Walter Roberson 2024-3-14
You define a variable Window_Nhr but then you try to repmat Window_Nh
  3 个评论
Walter Roberson
Walter Roberson 2024-3-15
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
Walter Roberson 2024-3-15
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;

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Spectral Measurements 的更多信息

标签

产品


版本

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by