将这段代码改成生成一个三角波
时间: 2024-04-08 20:31:01 浏览: 19
以下是修改后的代码,用于生成一个三角波的时域和频域描述:
```matlab
clear all; % 清除所有变量
clc; % 清屏
n = 306; % n为叠加的谐波数目
T0 = 2; % TO为三角波的周期
A = 2; % A 为三角波的幅值
NofT0 = 2; % 所画的时域波形的周期数
% 周期信号时域描述
tn_i = 1;
for tn = 0:0.01:NofT0*T0
if (rem(tn, T0) <= T0/2)
y_t(tn_i) = (4*A/ T0) * tn; % 信号前半周期的表达式
else
y_t(tn_i) = -(4*A/ T0) * (tn - T0/2); % 信号后半周期的表达式
end
t_t(tn_i) = tn;
tn_i = tn_i + 1;
end
% 周期信号的频域描述
t = 0:0.01:NofT0*T0; % 时域波形的长度
x = 0; % 合成的信号值,初始化为0
pi = 3.1415926;
w0 = 2*pi/T0; % 基波的频率
for i = 1:n
fw(i) = (2*i-1)*w0; % 第i次谐波的频率
a(i) = (8*A/(pi^2*(2*i-1)^2)); % 第i次谐波的幅值
fai(i) = 0; % 第i次谐波的相位
y(i, :) = a(i)*cos(fw(i)*t); % 第i次谐波的值
x = x + y(i, :); % 0-i次谐波之和
end
% subplot将画图区分成2行2列的四个小画图区
subplot(2, 2, 1); % 选择第1个画图区
plot(t_t, [y_t; x]); % 画信号的时域及合成后的图形
subplot(2, 2, 2); % 选择第2个画图区
plot(t, [x; y]); % 画0-n次谐波及合成后的图
subplot(2, 2, 3); % 选择第3个画图区
stem(fw, a); % 画0-n次谐波的幅值 频率图
subplot(2, 2, 4); % 选择第4个画图区
stem(fw, fai); % 画0-n次谐波的相位 频率图
```
这段修改后的代码会生成一个三角波的时域和频域描述,并将结果绘制在四个小画图区中。