利用matlab输入信号频率为2KHz的方波信号,得到至少五次谐波,并计算谐波失真度和谐波的归一化振幅
时间: 2024-03-18 10:39:07 浏览: 72
matlab_神经网络处理信号,能提取出谐波频率和幅值
好的,以下是利用MATLAB生成2kHz方波信号,并计算至少5次谐波的代码实现:
```matlab
% 生成2kHz方波信号
fs = 100000; % 采样率
t = 0:1/fs:0.01; % 时间序列
f = 2000; % 方波频率
duty = 50; % 占空比
x = square(2*pi*f*t, duty);
% 计算至少5次谐波
harmonics = 5; % 谐波次数
y = zeros(size(x)); % 初始化合成波
for n = 1:harmonics
y = y + sin(2*pi*(2*n-1)*f*t)/(2*n-1);
end
y = (4/pi)*y;
% 绘制合成波和原始方波信号
figure;
subplot(2,1,1);
plot(t, x);
title('原始方波信号');
xlabel('时间(秒)');
ylabel('幅度');
subplot(2,1,2);
plot(t, y);
title('合成波信号');
xlabel('时间(秒)');
ylabel('幅度');
% 计算谐波失真度和谐波归一化振幅
THD = 100*sqrt(sum(abs(y-x).^2)/sum(abs(x).^2)); % 谐波失真度
norm_amp = abs(y(1))/max(abs(y)); % 谐波归一化振幅
% 显示结果
fprintf('谐波失真度为:%.2f%%\n', THD);
fprintf('第一个谐波的归一化振幅为:%.2f\n', norm_amp);
```
运行该代码会生成原始方波信号和合成波信号,并计算出谐波失真度和第一个谐波的归一化振幅。您可以根据需要修改代码中的采样率、方波频率、占空比和谐波次数等参数。
阅读全文