编写一段计算THD的程序
时间: 2024-10-15 20:23:47 浏览: 21
matlab 仅考虑整数倍的谐波THD计算代码
5星 · 资源好评率100%
总失真度(Total Harmonic Distortion,THD)通常是评估音频信号质量的一个指标,它测量了信号中除了基本频率之外的其他频率成分(即谐波)对原始信号的比例。下面是一段简单的Python代码示例,用于计算信号的THD,假设我们已经有了信号的基频分量(如正弦波)和其他频率成分(谐波):
```python
import numpy as np
def calculate_THD(base_frequency, harmonics):
# 基频部分(理想信号)
ideal_signal = np.sin(2 * np.pi * base_frequency)
# 计算所有谐波和总信号
total_signal = ideal_signal + sum(harmonics)
# 使用numpy的linalg.norm求得各部分的模长
norm_ideal = np.linalg.norm(ideal_signal)
norm_total = np.linalg.norm(total_signal)
# 计算THD(归一化后的百分比)
THD = (norm_total - norm_ideal) / norm_ideal * 100
return THD
# 示例:假设基频是500Hz,第一到第三阶谐波分别是0.1, 0.05, 0.02
base_frequency = 500
harmonics = [0.1, 0.05, 0.02]
THD = calculate_THD(base_frequency, harmonics)
print(f"总失真度:{THD:.2f}%")
阅读全文