已知周期三角波的周期为2,幅值为1,时间向量为-2~2。用 MATLAB 编程实现该周期三角波的分解与合成。
时间: 2024-03-03 17:52:07 浏览: 83
MATLAB——三角波的实现
好的,你可以使用以下代码实现周期三角波的分解与合成:
```
% 分解
t = -2:0.01:2; % 时间向量
N = 20; % 分解级数
x = 0; % 分解结果
for n = 1:N
Cn = (-1)^n/(n*pi); % 计算傅里叶系数
xn = Cn*exp(1j*2*pi*n*t); % 计算傅里叶项
x = x+xn; % 累加傅里叶项
end
subplot(2,1,1); % 绘制分解结果
plot(t,real(x));
xlabel('时间');
ylabel('幅值');
title(['周期三角波分解,N = ',num2str(N)]);
% 合成
y = zeros(size(t)); % 合成结果
for n = 1:N
Cn = (-1)^n/(n*pi); % 计算傅里叶系数
yn = Cn*exp(1j*2*pi*n*t); % 计算傅里叶项
y = y+yn; % 累加傅里叶项
end
subplot(2,1,2); % 绘制合成结果
plot(t,sawtooth(pi*t));
hold on;
plot(t,real(y),'r');
xlabel('时间');
ylabel('幅值');
title(['周期三角波合成,N = ',num2str(N)]);
legend('原始信号','合成信号');
```
在这个代码中,我们首先使用`for`循环进行周期三角波的分解,计算出前`N`个傅里叶系数和傅里叶项,然后将这些傅里叶项累加起来得到分解结果。接着,我们使用`sawtooth`函数产生原始的周期三角波信号,并与合成结果一起绘制在图像中,以比较两者的差异。最后,我们在图像中添加了图例以便更好地说明绘制结果。
阅读全文