您的位置:首页>科技 >内容

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

2022-07-04 22:32:35来源:
导读想必现在有很多小伙伴对于设计一个matlab带通滤波器代码方面的知识都比较想要了解,那么今天小好小编就为大家收集了一些关于设计一个matla

想必现在有很多小伙伴对于设计一个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;%归一化角频率,用于下面的f1

f1=[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');%处理后频谱

本文到此结束,希望对大家有所帮助。

免责声明:本文由用户上传,如有侵权请联系删除!

猜你喜欢

最新文章