您的位置首页生活百科

设计一个matlab带通滤波器代码

设计一个matlab带通滤波器代码

的有关信息介绍如下:

设计一个matlab带通滤波器代码

% 用切比雪夫最佳一致逼近设计线性相位FIR带通滤波器;%信号为0.5hz, 0.9hz, 1.1hz和1.5hz的正统信号叠加组成%通带为[0.9,1.1]%频谱分辨率与信号实际长度N成正比clear all;f1=0.5;f2=0.9;f3=1.1;f4=1.5;t=0:1203;N=length(t);fs=10;M=512;x1=sin(2*pi*(f1/fs)*t)+sin(2*pi*(f2/fs)*t)+sin(2*pi*(f3/fs)*t)+sin(2*pi*(f4/fs)*t);figure(1);subplot(211);plot(t,x1);title('原信号');y=fft(x1);f=(0:1/N:1/2-1/N)*fs;subplot(212);plot(f,abs(y(1:N/2)));grid;xlabel('hz');%处理前频谱wc1=2*f2/fs;wc2=2*f3/fs;wc3=2*f4/fs;%归一化角频率,用于下面的f1f1=[0 wc1-0.05 wc1 wc2 wc2+0.05 1];A=[0 0 1 1 0 0];%设置带通或带阻,1为带通,0为亮裂带阻 weigh=[1 1 1 ];%设置通带和阻带的权重b=remez(60,f1,A,weigh);%传世键键函分子h1=freqz(b,1,M);%幅搜巧频特性figure(2)f=(0:1/M:1-1/M)*fs/2;subplot(211);plot(f,abs(h1));grid;title('带通');x2=filter(b,1,x1);S1=fft(x2);f=(0:1/N:1/2-1/N)*fs;subplot(212);plot(f,abs(S1(1:N/2)));grid;xlabel('hz');%处理后频谱