%% Parameter Interface
Frequence0 = 50; %单位:Hz
Frequence1 = 150; %单位:Hz
Frequence2 = 220; %单位:Hz
SampleFre = 2e3; %单位:Hz
SampleLen = SampleFre; %采样点数
%% Main
n1 = 0:1/SampleLen:1-1/SampleLen;
xnoise = x + 2.5*randn(size(n1)); %噪声
x = sin(2*pi*Frequence0*n1) + sin(2*pi*Frequence1*n1) + sin(2*pi*Frequence2*n1);
%x_real = sin(2*pi*50*n1);
%原信号做FFT
y1 = fft(x);
f = (0:length(y1)-1)*2000/length(y1);
subplot(2,1,1)
plot(f(1:250),abs(y1(1:250)))
title('Magnitude')
%Hamming_bp 为带通滤波器 滤波范围为130-180Hz
%使用filter内置函数,生成与x长度一致的数据(其实是取了卷积后取前n项(原信号长度),这会丢失一部分结果,最好还是将卷积没有对上的部分给丢弃比较合理)
%卷积多出来的长度本身就是信号与滤波器函数没有一一对上的部分
LPF_Data = filter(Hamming_bp,1,x);
%滤波
y2 = conv(x,Hamming_bp); %使用卷积函数,生成结果为 (滤波器长度+原信号长度)
y_f = fft(y2);
f = (0:length(y_f)-1)*2000/length(y_f);
subplot(2,1,2)
plot(f(1:250),abs(y_f(1:250)))
title('Magnitude')
%%
%原信号
subplot(3,1,1)
plot(n1,x)
title('原始信号波形图')
%使用内置filter函数
n2 = 0:1/length(LPF_Data):1-1/length(LPF_Data);
subplot(3,1,2)
plot(n2,LPF_Data)
title('filter函数滤波后波形图')
%使用conv卷积函数
n3 = 0:1/length(y2):1-1/length(y2);
subplot(3,1,3)
plot(n3,y2)
title('conv函数滤波后波形图')
没有合适的资源?快使用搜索试试~ 我知道了~
matlab带通数字滤波器
共2个文件
mat:1个
m:1个
需积分: 20 94 下载量 76 浏览量
2021-08-07
15:48:54
上传
评论 6
收藏 2KB ZIP 举报
温馨提示
matlab带通数字滤波器
资源详情
资源评论
资源推荐
收起资源包目录
Filter.zip (2个子文件)
DSP.m 1KB
BPF_130Hz_180Hz.mat 1KB
共 2 条
- 1
班克o
- 粉丝: 38
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0