MATLAB中THD计算的错误结果

MATLAB中THD计算的错误结果,matlab,Matlab,我已经测量了信号(50Hz下的电网电压和电流),我想在MATLAB中计算THD。但是,使用thd(信号矢量、采样频率、谐波数)会给出完全错误的结果。 请参阅所附屏幕截图:测量信号位于左侧,中间的图显示FFT,右侧是FFT的特写图。如您所见,THD的计算值太高,为86%: 查看thd()本身,它显然与FFT不匹配: 我在MATLAB示例中同时使用了fft()和thd()。 对于FFT我使用: NFFT = 2^nextpow2(L); Y = fft(signal_vector,NFFT)/(

我已经测量了信号(50Hz下的电网电压和电流),我想在MATLAB中计算THD。但是,使用thd(信号矢量、采样频率、谐波数)会给出完全错误的结果。 请参阅所附屏幕截图:测量信号位于左侧,中间的图显示FFT,右侧是FFT的特写图。如您所见,THD的计算值太高,为86%:

查看
thd()
本身,它显然与FFT不匹配:

我在MATLAB示例中同时使用了
fft()
thd()
。 对于
FFT
我使用:

NFFT = 2^nextpow2(L);
Y = fft(signal_vector,NFFT)/(samples_vector);
f = sampling_frequency/2*linspace(0,1,NFFT/2+1);
y_fft = 2*abs(Y(1:NFFT/2+1));
plot(f,y_fft)
对于
THD
至40。我只是简单地使用:

thd(signal_vector,sampling_frequency,40)
其中采样频率为40kHz

我想我做错了什么。缺陷在哪里? 你需要更多的信息吗?感谢您的帮助(我希望这是回答我问题的正确地方)


编辑:使用a我得到1.78%的总谐波失真,但我不知道这是否正确,但似乎是现实的

@howlger:谢谢你把这些图片嵌入进来!