matlab 生成THD代码
时间: 2023-08-21 17:05:13 浏览: 145
matlab产生dsp代码
以下是一个生成THD的MATLAB代码示例:
```matlab
% 生成测试信号
fs = 1000; % 采样率1000Hz
f1 = 50; % 基波频率50Hz
f2 = 150; % 第二谐波频率150Hz
f3 = 250; % 第三谐波频率250Hz
t = 0:1/fs:1-1/fs; % 生成1秒的时间序列
s1 = sin(2*pi*f1*t); % 生成基波信号
s2 = sin(2*pi*f2*t); % 生成第二谐波信号
s3 = sin(2*pi*f3*t); % 生成第三谐波信号
x = s1 + s2 + s3; % 信号为基波和前三个谐波的叠加
% 计算THD
N = length(x);
X = fft(x);
X(1) = 0; % 去除直流分量
f_bins = 1:floor(N/2); % 只考虑正频率部分
f_harm = f_bins * f1; % 计算每个谐波的频率
pow_harm = abs(X(f_bins)).^2; % 计算每个谐波的幅值平方
pow_total = abs(X(1))^2; % 计算总幅值平方
THD = 100 * sqrt(sum(pow_harm(2:end))/pow_total); % 计算THD
% 输出THD结果
fprintf('THD = %.3f%%\n', THD);
```
这段代码生成一个测试信号,包含基波和前三个谐波,然后对信号进行FFT变换,计算THD值,并输出THD结果。需要注意的是,THD的计算需要去除信号的直流分量,并且只考虑信号的谐波分量。
阅读全文