MATLAB How can I calculate THD using MATLAB?

AI Thread Summary
The discussion centers on calculating Total Harmonic Distortion (THD) using MATLAB with a dataset containing 10,001 data points sampled at 100 kHz, with a fundamental frequency of 50 Hz. The provided MATLAB code utilizes the Fast Fourier Transform (FFT) to analyze the frequency components of the data. Key steps include importing the data, performing the FFT, extracting harmonic components, squaring them, and finally calculating THD based on the harmonics and the fundamental frequency. A suggestion is made to create Excel files with known THD values for testing the algorithm's accuracy. This includes generating pure 50 Hz signals and combinations with harmonics to validate the THD calculations and ensure the algorithm's reliability across a range of conditions.
EE86
Messages
1
Reaction score
0
Hello,

I'm a novice in using MATLAB. I want to calculate THD value from my experimental data using MATLAB. I have 10,001 data points, sampling frequency is 100kHz and fundamental frequency is 50 Hz (I'm not in USA). Below is my code. Could you please check that my code is correct or not ?


>> data = importdata('sample_1.xlsx');
% 10,001 data points, sampling rate = 100kHz

>> spect = fft(data)/10001;
% frequency of each element = 0, 10, 20, 30,...Hz (100kHz/10,001 data)

>> harmonic = abs(spect(11:5:201));
% here, fundamental = 50 Hz so, frequency 100, 150, 200,...,2000 Hz correspond to 11th, 16th, 21st,...,201st element of spect
% now, harmonic has 39 elements

>> harmonic_sqr = harmonic.^2;
% square each element

>> THD = sqrt(sum(harmonic_sqr(1:39)))/abs(spect(6))*100
% 50 Hz corresponds to 6th element of spect
 
Physics news on Phys.org
Greetings,

I would create xls files with known THD to test the algorithm.

Pure 50Hz and pure 50Hz plus a single harmonic would only take a minute to write and give you a quick sanity check.

You could spend a little more time and create an xls that added predetermined power at each harmonic, and even have the amount of THD as a parameter so that you could verify the dynamic range.
 

Similar threads

Replies
8
Views
2K
Replies
10
Views
3K
Replies
16
Views
14K
Replies
1
Views
10K
Replies
1
Views
431
Back
Top