求matlab设计滤波器的大神解答?

作者&投稿:诸浩 (若有异议请与网页底部的电邮联系)
用matlab设计滤波器~

这个信号的频率分量分别为30、150和600Hz,因此可分别设计一个低通、带通和高通的滤波器来提取。以FIR滤波器为例,程序如下:

clear;fs=2000;t=(1:1000)/fs;
x=10*cos(2*pi*30*t)+cos(2*pi*150*t)+5*cos(2*pi*600*t);
L=length(x);N=2^(nextpow2(L));Hw=fft(x,N);
figure(1);subplot(2,1,1);plot(t,x);
grid on;title('滤波前信号x');xlabel('时间/s');% 原始信号
subplot(2,1,2);plot((0:N-1)*fs/L,abs(Hw));% 查看信号频谱
grid on;title('滤波前信号频谱图');xlabel('频率/Hz');ylabel('振幅|H(e^jw)|');

%% x_1=10*cos(2*pi*30*t)
Ap=1;As=60;% 定义通带及阻带衰减
dev=[(10^(Ap/20)-1)/(10^(Ap/20)+1),10^(-As/20)];% 计算偏移量
mags=[1,0];% 低通
fcuts=[60,100];% 边界频率
[N,Wn,beta,ftype]=kaiserord(fcuts,mags,dev,fs);% 估算FIR滤波器阶数
hh1=fir1(N,Wn,ftype,kaiser(N+1,beta));% FIR滤波器设计
x_1=filter(hh1,1,x);% 滤波
x_1(1:ceil(N/2))=[];% 群延时N/2,删除无用信号部分
L=length(x_1);N=2^(nextpow2(L));Hw_1=fft(x_1,N);
figure(2);subplot(2,1,1);plot(t(1:L),x_1);
grid on;title('x_1=10*cos(2*pi*30*t)');xlabel('时间/s');
subplot(2,1,2);plot((0:N-1)*fs/L,abs(Hw_1));% 查看信号频谱
grid on;title('滤波后信号x_1频谱图');xlabel('频率/Hz');ylabel('振幅|H(e^jw)|');

%% x_2=cos(2*pi*150*t)
Ap=1;As=60;% 定义通带及阻带衰减
dev=[10^(-As/20),(10^(Ap/20)-1)/(10^(Ap/20)+1),10^(-As/20)];% 计算偏移量
mags=[0,1,0];% 带通
fcuts=[80,120,180,220];% 边界频率
[N,Wn,beta,ftype]=kaiserord(fcuts,mags,dev,fs);% 估算FIR滤波器阶数
hh2=fir1(N,Wn,ftype,kaiser(N+1,beta));% FIR滤波器设计
x_2=filter(hh2,1,x);% 滤波
x_2(1:ceil(N/2))=[];% 群延时N/2,删除无用信号部分
L=length(x_2);N=2^(nextpow2(L));Hw_2=fft(x_2,N);
figure(3);subplot(2,1,1);plot(t(1:L),x_2);
grid on;title('x_2=cos(2*pi*150*t)');xlabel('时间/s');
subplot(2,1,2);plot((0:N-1)*fs/L,abs(Hw_2));% 查看信号频谱
grid on;title('滤波后信号x_2频谱图');xlabel('频率/Hz');ylabel('振幅|H(e^jw)|');

%% x_3=5*cos(2*pi*600*t)
Ap=1;As=60;% 定义通带及阻带衰减
dev=[10^(-As/20),(10^(Ap/20)-1)/(10^(Ap/20)+1)];% 计算偏移量
mags=[0,1];% 高通
fcuts=[500,550];% 边界频率
[N,Wn,beta,ftype]=kaiserord(fcuts,mags,dev,fs);% 估算FIR滤波器阶数
hh2=fir1(N,Wn,ftype,kaiser(N+1,beta));% FIR滤波器设计
x_3=filter(hh2,1,x);% 滤波
x_3(1:ceil(N/2))=[];% 群延时N/2,删除无用信号部分
L=length(x_3);N=2^(nextpow2(L));Hw_3=fft(x_3,N);
figure(4);subplot(2,1,1);plot(t(1:L),x_3);
grid on;title('x_3=5*cos(2*pi*600*t)');xlabel('时间/s');
subplot(2,1,2);plot((0:N-1)*fs/L,abs(Hw_3));% 查看信号频谱
grid on;title('滤波后信号x_3频谱图');xlabel('频率/Hz');ylabel('振幅|H(e^jw)|');

Fs = ??;

%滤波器设计
fc = 4500;
%fc为截止频率,高通滤波器比截止频率高的部分保留;低通滤波器比截止频率低的部分保留
Wn = (2/Fs)*fc;
Fs是采样频率,需要你自己预先赋值
%Wn是归一化截止频率,fir滤波器设计要使用归一化频率
b = fir1(20,Wn,kaiser(21,3)); %kaiser是用凯塞窗 20是阶数

g = filter(b,1,x);

wp和ws分别代表通带截止频率和阻带截止频率。

为什么不用乘以π?

A:[b,a]=ellip(n,Rp,Rs,Wp,'high')设计出的是归一化的滤波器,要求The cutoff frequencies must be within the interval of (0,1),是除以π后的结果

执行完[H,w]=freqz(b,a,512);后

执行plot(w/pi*Fs/2,abs(H))验证

求设计MATLAB一款处理一维离散信号的带通滤波器完整代码,上限频率2HZ...
答:ws=[wsl wsh];设计切比雪夫滤波器;[n,wn]=cheb1ord(ws/pi,wp/pi,rp,rs);[bz1,az1]=cheby1(n,rp,wp/pi);查看设计滤波器的曲线 [h,w]=freqz(bz1,az1,256,Fs);h=20*log10(abs(h));y=filter(bz1,az1,x);

matlab设计低通滤波器
答:采样率大于2倍最高频率 需要大于600Hz,这里取1000Hz 打开matlab的滤波器设计工具包 设定滤波器类型为你说的低通滤波器,FIR类型,设定f pass=300Hz,f stop=350Hz。阻带衰减60dB 自动完成滤波器设计 得到一个40阶的滤波器,权系数为 const real64_T B[40] = { -0.009989618909284, -0.0202907...

用MATLAB设计!
答:利用MATLAB提供的remez函数可算得滤波器的H参数。为了达到设计要求,参数选取时留有一定余地。这里选取αp=0.9dB,αs=31dB。取样频率则选择260MHz。2,MATLAB程序设计 源程序如下:TF=[105000000,130000000]; %过度带频率 m=[1,0];d=[(1-10^(-0.9/20)),10^(-31/20)]; %δp与δs Fs=...

求一个matlab程序设计,双线性变换法的低通滤波器的设计
答:fs=1000; %采样频率 1KHzfp=100; %通带截止频率 fst=300; %阻带截止频率 %归一化频率wp=2*pi*fp/fs;ws=2*pi*fst/fs;Rp=3; %通带最大衰减系数 Rs=20; %阻带最大衰减系数 Ts=1/fs; %采样周期 m=256; %采样点数 Wp=2/Ts*tan(wp/2); %模拟通带截止频率 ...

高分求高人用matlab设计一款滤波器(类型自选,程序代码不能少于15行...
答:频率取样FIR滤波器设计 H1=0.4;N=40;alpha=(N-1)/2;m=0:N-1;w1=(2*pi/N)*m;Hrs=[ones(1,5),H1,zeros(1,30),ones(1,4)];Hdr=[1,1,0,0];wd1=[0,0.25,0.25,1];k1=0:floor((N-1)/2);k2=floor((N-1)/2)+1:N-1;angH=[-alpha*(2*pi)/N*k1,alpha*(2*...

用matlab设计滤波器
答:这个信号的频率分量分别为30、150和600Hz,因此可分别设计一个低通、带通和高通的滤波器来提取。以FIR滤波器为例,程序如下:clear;fs=2000;t=(1:1000)/fs;x=10*cos(2*pi*30*t)+cos(2*pi*150*t)+5*cos(2*pi*600*t);L=length(x);N=2^(nextpow2(L));Hw=fft(x,N);figure(1)...

用matlab设计数字滤波器
答:产品名称:K&L可调带阻滤波器3TNF-200/400-N/N 频率范围(MHz):200-400 3dB带宽范围(MHz):3-7 40dB带宽(Min KHz):300 切槽深度:50 dB 长度(Inch/mm):6.56/167 宽度(Inch/mm):5.38/137 高度(Inch/mm):2.75/70 驻波比:1.5:1 插入损耗:< 0.5 dB 阻抗:50 ...

MATLAB中FIR滤波器如何设计
答:MATLAB程序如下:wp=500*2/5000;% 频率归一化 ws=800*2/5000;wdel=ws-wp;% 过渡带宽 wn=0.5*(wp+ws);% 近似计算截止频率 N=ceil(6.6*pi/wdel);% 根据过渡带宽度求滤波器阶数 window=hamming(N+1);% 海明窗 b=fir1(N,wn,window);% FIR滤波器设计 freqz(b,1,512);% 查看滤波器...

求大神用matlab设计一款滤波器……要急死了都/(ㄒoㄒ)/~~
答:load Hd;%滤波器特性freqz(Hd);figure;fs=8000;f1=50;f2=1000;n=0:499;t = n/fs;xw = sin(2*pi*f1*t)+2*sin(2*pi*f2*t);subplot(211);plot(t,xw);yw=filter(Hd,xw);subplot(212);plot(yw)

...已知频响,即FIR滤波器综合自适应模拟。请问用MATLAB怎么设计...
答:设计的带通滤波器 b =fir1(38,[0.30 0.60]) ;%改变滤波器阶数38 [h,f] =freqz(b,1,512) ;axes('position' , [0.1 0.76 0.5 .23] )subplot(412),plot( f*100/pi ,20*log10(abs(h)))axis( [0 100 -100 0] )xlabel ('frequency/ Hz','fontsize',8)ylabel('mag...