用 MATLAB 求如图所表示的周期单位矩形脉冲信号进行傅里叶级数展开,绘制离散频 谱,其中 τ=2 ,E=2 ,T0=4 ,并绘制傅里叶级数展开 15 次时的逼近波形。
时间: 2024-12-18 13:18:59 浏览: 42
在 MATLAB 中,处理周期单位矩形脉冲信号的傅里叶级数展开需要按照一定的步骤进行。首先,我们需要创建该脉冲信号,然后计算它的离散频谱以及傅里叶级数的前几个项,最后绘制逼近波形。
1. **定义信号**:
使用 `periodic_rectpulse` 函数来创建周期单位矩形脉冲,参数 `tau` 代表脉冲宽度,`E` 代表周期长度,`T0` 是信号的基周期。在这个例子中,τ=2,E=2,T0=4。
```matlab
tau = 2; % 脉冲宽度
E = 2; % 周期长度
T0 = 4; % 基周期
n_samples = T0; % 采样点数
time = 0:1/T0:T0 - 1/T0; % 时间向量
rect_pulse = periodic_rectpulse(time, tau, E, T0);
```
2. **离散傅里叶变换**:
使用 `fft` 函数对信号进行离散傅立叶变换,得到离散频谱。
```matlab
DFT = fft(rect_pulse);
freqs = (-length(DFT)/2:length(DFT)/2-1) / T0; % 计算频率间隔
```
3. **傅里叶级数展开和逼近波形**:
我们可以选择将前 n 项(例如 n=15)的三角多项式加起来,形成傅里叶级数的近似。然后绘制原信号和第15次逼近波形。
```matlab
% 傅里叶系数(忽略偶数项,因为矩形脉冲是奇函数)
coeffs = DFT(1:2:end) / length(rect_pulse);
approximated_signal = sum(coeffs .* cos(2*pi*freqs.*time));
% 绘制原始信号和第15次逼近
figure;
subplot(2,1,1);
plot(time, rect_pulse, time, approximated_signal, 'LineWidth', 2);
legend('Original Signal', '15-term Approximation');
title('Rectangular Pulse and its Fourier Series Approximation');
subplot(2,1,2);
stem(freqs, abs(DFT), 'k.');
xlim([-0.5, 0.5]);
title('Discrete Spectrum of the Rectangular Pulse');
```
阅读全文