matlab 对矩形脉冲进行低通滤波

Posted 胡刚2016

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab 对矩形脉冲进行低通滤波相关的知识,希望对你有一定的参考价值。

之前写了 matlab heaviside函数生成矩形脉冲,以及如何用傅里叶级数如何近似:表示矩形脉冲 matlab 模拟吉布斯效应
现在我们滤除周期的矩形脉冲信号的高频部分,也就是做一个低通滤波器。

这一节我们处理的周期的矩形脉冲信号与前几节不同,它的均值为0,也就是前几节的信号沿着Y轴向下移动1个单位,这样它的傅里叶级数表示就没有了直流分量1,也就是没有了 Ω = 0 \\Omega = 0 Ω=0 的分量。

下面是题目表述

代码和运行结果

clf;
w0 = 2 * pi;
M = 1000000;
k=0:M-1;
w1=k .* w0;
H=1 ./ (1 + j *w1 /100);
Hm=abs(H);
Ha=angle(H);

subplot(211);
stem(w1, Hm, 'filled');
grid;
ylabel('|H(j\\Omega)|');
axis([0 max(w1) 0 1.3]);

subplot(212);
stem(w1, Ha, 'filled');
grid;

axis([0  max(w1) -1  0]);
ylabel('<H(j \\omega)');
xlabel('w(rad/s)');

%================== 以上是计算滤波器在谐波频率出的响应 =======================
%================== 以下是计算由脉冲序列x(t)引起的响应,输出的滤波信号为y(t)

figure(2);
X(1)=0;
for k = 2:M-1,
    X(k)=sin((k-1)*pi / 2)/((k-1)*pi/2);
end

Ts=0.001;
t1=0:Ts:1-Ts;
L=length(t1);
x1=[ones(1, L/4) zeros(1, L/2) ones(1, L/4)];
x1=x1 -0.5;
x=[x1 x1];

t=0:Ts:2-Ts;
y=X(1)*ones(1, length(t)) * Ha(1);
plot(t, y);
axis([0  max(t)  -.6  .6]);
for k = 2:M-1,
    y = y+X(k)*Hm(k)*cos(w0*(k-1).*t+Ha(k));
end

plot(t, y);
axis([0  max(t)  -.6 .6]);
hold on;

plot(t, x, 'r');
axis([0  max(t)  -0.6 0.6]);
grid;
ylabel('x(t),y(t)');
xlabel('t(s)');
hold off;
pause(0.1);

以上是关于matlab 对矩形脉冲进行低通滤波的主要内容,如果未能解决你的问题,请参考以下文章

pulse shaping脉冲整形原因

怎样写数字滤波程序?

matlab 求矩形脉冲的傅里叶级数

怎样用matlab实现加入高斯噪声、椒盐噪声、脉冲噪声和乘性噪声,然后采取合适的滤波器进行去噪处理~~~~

如何用matlab画出周期矩形脉冲信号及频谱图

怎样利用MATLAB 完成周期矩形脉冲信号的频谱图??