matlab滤除某一频率的信号,设计一个matlab带通滤波器代码采样频率10Hz,滤除除0.9-1.1Hz之外的其他信号,信号输入为x1,输出为x2,不明白的问我可以追加条件,运行好使的追加分...

7d14a2b81882cfe4494b096a84150b2a.png 优质解答

% 用切比雪夫最佳一致逼近设计线性相位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为带阻\x09

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值