周期信号傅里叶级数用matlab画图
时间: 2023-07-20 14:06:55 浏览: 214
假设我们有一个周期为 $T$ 的信号 $f(t)$,则可以将其表示为傅里叶级数的形式:
$$f(t) = \frac{a_0}{2} + \sum_{n=1}^{\infty}\left(a_n\cos\left(\frac{2\pi nt}{T}\right) + b_n\sin\left(\frac{2\pi nt}{T}\right)\right)$$
其中,系数 $a_0$、$a_n$ 和 $b_n$ 可以通过如下公式计算:
$$a_0 = \frac{1}{T}\int_{-\frac{T}{2}}^{\frac{T}{2}}f(t)dt$$
$$a_n = \frac{2}{T}\int_{-\frac{T}{2}}^{\frac{T}{2}}f(t)\cos\left(\frac{2\pi nt}{T}\right)dt$$
$$b_n = \frac{2}{T}\int_{-\frac{T}{2}}^{\frac{T}{2}}f(t)\sin\left(\frac{2\pi nt}{T}\right)dt$$
现在,我们可以使用 MATLAB 来绘制周期信号的傅里叶级数图像,具体步骤如下:
1. 定义周期信号 $f(t)$ 的表达式;
2. 定义傅里叶级数的级数上限 $N$;
3. 计算 $a_0$、$a_n$ 和 $b_n$ 系数;
4. 构建傅里叶级数表达式;
5. 绘制傅里叶级数图像。
下面是一个 MATLAB 示例代码,用于绘制周期为 $2\pi$ 的方波信号的傅里叶级数图像:
```matlab
% 定义周期为 2*pi 的方波信号
T = 2*pi; % 周期
t = linspace(-2*pi, 2*pi, 1000); % 时间范围
f = square(t);
% 定义级数上限
N = 50;
% 计算系数
a0 = 1/2;
an = zeros(1, N);
bn = zeros(1, N);
for n = 1:N
an(n) = (2/T) * trapz(t, f.*cos(n*t));
bn(n) = (2/T) * trapz(t, f.*sin(n*t));
end
% 构建傅里叶级数表达式
F = a0/2;
for n = 1:N
F = F + an(n)*cos(n*t) + bn(n)*sin(n*t);
end
% 绘制图像
figure;
plot(t, f, 'k', 'LineWidth', 2);
hold on;
plot(t, F, 'r--', 'LineWidth', 2);
xlabel('时间');
ylabel('幅度');
title('方波信号的傅里叶级数');
legend('原始信号', '傅里叶级数');
```
运行上述代码,即可得到方波信号的傅里叶级数图像。
阅读全文
相关推荐



















