高通、低通、带通、带阻四种滤波器在MATLAB中仿真

高手指点下,我该仿真些什么还有程序杂写啊跪求啊我不太清楚仿真滤波器的那些参数,还有那些滤波器程序杂写... 高手指点下,我该仿真些什么 还有程序杂写啊
跪求啊
我不太清楚仿真滤波器的那些参数,还有那些滤波器程序杂写
展开
 我来答
枯木葳蕤
推荐于2018-03-21 · TA获得超过912个赞
知道小有建树答主
回答量:420
采纳率:0%
帮助的人:419万
展开全部
我当时改写的课程设计程序,希望对你有帮助
%%%%%%%%%%%%% 低通滤波 %%%%%%%%%%%%%%%%
clear;
clear clf;
%%% 对连续时间信号进行采样
f1=2;f2=5;f3=8;
fs=20;Ts=1/fs;
M=200;
k=0:M-1;
fk=cos(2*pi*f1*k*Ts)+cos(2*pi*f2*k*Ts)+cos(2*pi*f3*k*Ts);
%figure(1)
subplot(411)
plot(k,fk)%stem(k,fk)
xlabel ' '
title '滤波前的波形图';

N = M;
F = fft(fk, N);
subplot(412)
plot(2*pi*(0:N/2-1)/N/pi, 2*abs(F(1:N/2))/N);
xlabel ' '
title '滤波前的频谱曲线';

h=[0.00111829516864 -0.00389476479172 -0.01603491745519 -0.02036377118215 0.02095180705130 0.12449781344246...
0.24450683184615 0.29843741184102 0.24450683184615 0.12449781344246 0.02095180705130 -0.02036377118215...
-0.01603491745519 -0.00389476479172 0.00111829516864];
yk = conv(fk,h);

%figure(2)
subplot(413)
plot(0:M+15-2,yk,'g')%stem(0:M+15-2,yk)
xlabel ' '
title '低通滤波后的波形图';
axis([0 M -1 1])
Y = fft(yk, N);
subplot(414)
plot(2*pi*(0:N/2-1)/N/pi, 2*abs(Y(1:N/2))/N,'g');
title '低通滤波后的频谱曲线';
%===================注:与高通滤波不同之处在于h的取值
%%%%%%%%%%%%% 课程设计(2) %%%%%%%%%%%%%
%%%%%%%%%%%%% 高通滤波 %%%%%%%%%%%%%%%%
clear;
clear clf;
%%% 对连续时间信号进行采样
f1=2;f2=5;f3=8;
fs=20;Ts=1/fs;
M=200;
k=0:M-1;
fk=cos(2*pi*f1*k*Ts)+cos(2*pi*f2*k*Ts)+cos(2*pi*f3*k*Ts);
%figure(1)
subplot(411)
plot(k,fk)
xlabel ' '
title '滤波前的波形图';

N = M;
F = fft(fk, N);
subplot(412)
plot(2*pi*(0:N/2-1)/N/pi, 2*abs(F(1:N/2))/N);
xlabel ' '
title '滤波前的频谱曲线';

h=[-0.00111829516864 -0.00389476479172 0.01603491745519 -0.02036377118215 -0.02095180705130 0.12449781344246...
-0.24450683184615 0.29843741184102 -0.24450683184615 0.12449781344246 -0.02095180705130 -0.02036377118215...
0.01603491745519 -0.00389476479172 -0.00111829516864];
yk = conv(fk,h);

%figure(2)
subplot(413)
plot(0:M+15-2,yk)
xlabel ' '
title '滤波后的波形图';
axis([0 M -1 1])
Y = fft(yk, N);
subplot(414)
plot(2*pi*(0:N/2-1)/N/pi, 2*abs(Y(1:N/2))/N);
title '滤波前的频谱曲线';
%%%%%%%%%%%%% 课程设计(4) %%%%%%%%%%%%%
%%%%%%%%%%%%% 带通滤波 %%%%%%%%%%%%%%%%
clear;
clear clf;
%%% 对连续时间信号进行采样
f1=2;f2=5;f3=8;
fs=20;Ts=1/fs;
M=200;
k=0:M-1;
fk=cos(2*pi*f1*k*Ts)+cos(2*pi*f2*k*Ts)+cos(2*pi*f3*k*Ts);
subplot(411)
plot(k,fk)
xlabel ' '
title '滤波前的波形图'

N = M;
F = fft(fk, N);
subplot(412)
plot(2*pi*(0:N/2-1)/N/pi, 2*abs(F(1:N/2))/N);
xlabel ' '
title '滤波前的频谱曲线'

h=[ 0 0.00809904403983 0 0.04234583818052 0 -0.25888938815435 0 0.41372763540994 0 -0.25888938815435 0 0.04234583818052 0 0.00809904403983 0];
yk = conv(fk,h);

figure(2)
subplot(413)
plot(0:M+15-2,yk)
axis([0 M -1 1])
Y = fft(yk, N);
subplot(414)
plot(2*pi*(0:N/2-1)/N/pi, 2*abs(Y(1:N/2))/N);
title '滤波前的频谱曲线'
%%%%%%%%%%%%% 课程设计(4) %%%%%%%%%%%%%
%%%%%%%%%%%%% 带阻滤波 %%%%%%%%%%%%%%%%
clear;
clear clf;
%%% 对连续时间信号进行采样
f1=2;f2=5;f3=8;
fs=20;Ts=1/fs;
M=200;
k=0:M-1;
fk=cos(2*pi*f1*k*Ts)+cos(2*pi*f2*k*Ts)+cos(2*pi*f3*k*Ts);

subplot(411)
plot(k,fk)
xlabel ' '
title '滤波前的波形图'
N = M;
F = fft(fk, N);
subplot(412)
plot(2*pi*(0:N/2-1)/N/pi, 2*abs(F(1:N/2))/N);
xlabel ' '
title '滤波前的频谱曲线'

h=[ 0 -0.00780645449547 0 -0.04081603423850 0 0.24953663889817 0 0.59817169967160...
0 0.24953663889817 0 -0.04081603423850 0 -0.00780645449547 0];
yk = conv(fk,h);

subplot(413)
plot(0:M+15-2,yk,'r')
xlabel ' '
title '带阻滤波后前的波形图'
axis([0 M -1 1])
Y = fft(yk, N);
subplot(414)
plot(2*pi*(0:N/2-1)/N/pi, 2*abs(Y(1:N/2))/N,'r');
title '带阻滤波前的频谱曲线'

2025-03-21 广告
上恒电子-电源滤波器专家-上恒电子采用先进变频器专用滤波器技术,变频器专用滤波器供应种类齐全,品质保证!国内知名变频器专用滤波器制造商,以质优价廉,品质保证,赢得了良好的市场!... 点击进入详情页
本回答由提供
创旧黄
2010-04-05 · TA获得超过1269个赞
知道小有建树答主
回答量:213
采纳率:0%
帮助的人:443万
展开全部
matlab处理的滤波器都是数字滤波器,也就是对应的离散时间信号处理中的滤波器,其形式为
B0+B1*z^(-1)+B2*z^(-2)+...+Bm*z^(-m)
H(z)=----------------------------------------------
1+A1*z^(-1)+A2*z^(-2)+...+An*z^(-n)
通常使得分母是首一多项式,其中max(m,n)为该滤波器的阶数.
对于上式如果有疑问,那只能这么理解:
假设输入信号为x[k],输出信号为y[k],那么y[k]满足一下式子:
y[k]=B0*x[k]+B1*x[k-1]+...+Bm*x[k-m]-A1*y[k-1]-...-An*y[k-n].
根据一定的通带要求生成滤波器,matlab是有算法的,具体算法不清,可能是双线性变换法,也可能是冲击响应不变法.
调用算法的方法如下(以butterworth为例):

[B,A]=butter(4,0.5,'low')
表示一个四阶的butterworth低通滤波器,截止频率为0.5pi,对应模拟频率为采样频率的1/4.
其中B,A分别为表达式的分子和分母多项式系数.

[B,A]=butter(4,[0.1,0.5])
表示一个四阶的butterworth带通滤波器,通带为[0.1pi,0.5pi].

[B,A]=butter(4,0.5,'high')
表示一个四阶的butterworth高通滤波器,截止频率为0.5pi.

[B,A]=butter(4,[0.1,0.5],'stop')
表示一个四阶的butterworth带阻滤波器,阻带为[0.1pi,0.5pi].

获得参数之后,可以使用freqz(B,A)来观察该滤波器的频域响应,看通带阻带条件是否满足.
也可以使用impz(B,A)来观察该滤波器的冲击响应.
滤波函数则为y=filter(B,A,x).

还有一种更直观的设计方法,在命令行输入fdatool,弹出图形用户界面,在其中设置,生成滤波器系数之后,file->export到workspace,一样能用.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2010-04-10
展开全部
用simulink,看波形,并且使用FFT分析。参数根据你要滤波的频率。具体可以看一些书,有很多关于谐波滤波的书。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式