对用15mhz调制后的方波,三角波,正弦波用系数为[1,1,1,1,1,1,1,1]的FIR滤波器进行滤波,分析滤波前后的波形以及频谱变化
时间: 2025-02-28 20:36:06 浏览: 77
### 不同波形通过FIR滤波器后的变化
对于15 MHz调制的不同波形(方波、三角波、正弦波),当这些信号通过具有特定系数的FIR滤波器时,其时间和频率特性会发生显著改变。下面将具体探讨这三种波形在应用系数为\[1, 1, 1, 1, 1, 1, 1, 1\]的FIR滤波器前后的表现。
#### 方波的变化
原始方波含有丰富的高次谐波分量,在理想情况下呈现快速上升沿和平坦顶部的特点。然而,由于所使用的FIR滤波器本质上是一个简单的移动平均滤波器,它会对方波造成平滑效果,使得输出更接近于带有圆角的矩形脉冲形状[^1]。这种类型的滤波器主要影响的是较高频率部分,因此可以预期到方波的陡峭边缘会被削弱,而基频及其较低次数谐波则相对保留得较好。
```matlab
% MATLAB代码用于生成并绘制方波以及经过FIR滤波之后的结果
fs = 1e9; % 假设采样率为1GHz
t = linspace(0, 40e-6, fs*40e-6);
f_carrier = 15e6;
square_wave = square(2*pi*f_carrier*t);
b = ones(1,8)/8; % FIR滤波器系数
filtered_square_wave = filter(b, 1, square_wave);
figure;
subplot(2,1,1); plot(t,square_wave); title('Original Square Wave');
xlabel('Time (s)'); ylabel('Amplitude');
subplot(2,1,2); plot(t, filtered_square_wave); title('Filtered Square Wave with FIR Filter Coefficients [1,1,...,1]');
xlabel('Time (s)'); ylabel('Amplitude');
```
#### 三角波的变化
与方波相似,未经处理的三角波同样具备一定的高频成分,尤其是在转折点附近。施加相同的FIR滤波操作后,预计三角波也会经历一定程度上的平滑化过程,即边界的锐度降低,整体形态趋向更加柔和的曲线形式。值得注意的是,尽管如此,相比于方波而言,三角波本身的过渡更为渐进,故此受到的影响可能不会像前者那样剧烈。
```matlab
triangle_wave = sawtooth(2*pi*f_carrier*t, 0.5); % 创建一个周期性的锯齿波作为近似三角波
filtered_triangle_wave = filter(b, 1, triangle_wave);
figure;
subplot(2,1,1); plot(t, triangle_wave); title('Original Triangle Wave');
xlabel('Time (s)'); ylabel('Amplitude');
subplot(2,1,2); plot(t, filtered_triangle_wave); title('Filtered Triangle Wave with FIR Filter Coefficients [1,1,...,1]');
xlabel('Time (s)'); ylabel('Amplitude');
```
#### 正弦波的变化
考虑到正弦波本身已经是最基本的形式之一,并且几乎不含任何高于基频的显着谐波能量,所以在大多数情形下,即使经历了上述提到的那种简单线性相位响应特性的FIR滤波器作用,也不会对其原有结构构成明显干扰——除非该滤波器引入了额外的时间延迟或其他失真效应。
```matlab
sinusoidal_wave = sin(2*pi*f_carrier*t);
filtered_sinusoidal_wave = filter(b, 1, sinusoidal_wave);
figure;
subplot(2,1,1); plot(t, sinusoidal_wave); title('Original Sinusoidal Wave');
xlabel('Time (s)'); ylabel('Amplitude');
subplot(2,1,2); plot(t, filtered_sinusoidal_wave); title('Filtered Sinusoidal Wave with FIR Filter Coefficients [1,1,...,1]');
xlabel('Time (s)'); ylabel('Amplitude');
```
#### 频谱分析
为了更好地理解各波形经由FIR滤波器转换过程中发生的变换情况,可以通过傅里叶变换来观察它们各自的频域特征:
```matlab
Fs = length(square_wave)/(max(t)-min(t)); % 计算实际采样率
[freq_sq, Pxx_sq] = pwelch(square_wave,[],[],[], Fs);
[freq_fsq, Pxx_fsq] = pwelch(filtered_square_wave,[],[],[], Fs);
figure;
semilogy(freq_sq/(2*pi), abs(Pxx_sq)); hold on; semilogy(freq_fsq/(2*pi), abs(Pxx_fsq));
title('Power Spectral Density of Original and Filtered Square Waves');
legend({'Original', 'Filtered'});
xlabel('Frequency (Hz)');
ylabel('Magnitude');
% 对其他两种波形重复相同的操作...
```
阅读全文
相关推荐












