MatLab中滤波器(filterDesigner)的设计和使用(附代码)

本文介绍了如何在MATLAB中使用filterDesigner工具设计滤波器。通过两种方式启动该工具,然后演示了如何创建一个50Hz+70Hz+100Hz的叠加信号,并设计低通滤波器去除70Hz以上的高频成分。滤波器设计完成后,可以通过导出到工作区并利用filter函数进行信号处理。文章还提供了FFT处理信号的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文章只作为本人学习笔记使用

matlab具有非常使用的滤波器设计工具,关于如何找到这个小工具有两种方法。

1、我们可以在命令行输入filterDesigner(不同版本命令可能会有所不同)

 

2、在APP页面中找到filterDesigner

 两者都可以打开同样的滤波器调整页面。

在之前的内容中我们分析了信号的频谱,在这里我们再生成一个叠加信号。

 可以看到我们这里生成了一个50hz+70hz+100hz的叠加信号,如果我们要将70以上的高频成分滤掉应该怎么设计呢(fft函数的代码会放在下面)?

 选择低通就可以点设计滤波器了,需要注意的是采样频率fs跟外面的信号要一致

点设计滤波器之后在响应图中就可以看到了,那么我们如何才能在设计中使用呢,在文件里点击导出到工作区,导出为对象。

 

可以看到变量区已经有Hd这个对象,简单的利用filter这个函数就可以调用了;

 

 可以看到高频成分已经滤掉。

还有一种导出方法是导出为系数只需要利用filter(Num,1,c)就可以了。

function   fft_deal(fs,t,f)
%%函数需要传入三个参数 1是fs采样频率 t时间轴 f需要变换的信号
subplot(311);
plot(t,f);

%%fft部分
f_fft=fft(f);
L=length(f_fft);%获取序列长度;


%%绘制双边谱
y_d=fftshift(f_fft); %搬移fft结果到双边%双边谱时 L/2+1点算是负值的最后一点例0 1 2 3 4 5 = 3 4 5 0 1 2 3
y_d_amp=abs(y_d)/L;
df_d=fs/L;
f_d=(-L/2:L/2-1)*df_d;
subplot(312);
plot(f_d,y_d_amp);

%%绘制单边谱

y_s=f_fft(1:L/2+1)%%单边谱时501点算正
y_s(2:end-1)=y_s(2:end-1)*2;%除了0点也就是直流和501点其余点两倍
y_s_amp=abs(y_s)/L;%获取幅度
df_s=fs/L;
f_s=(0:1:L/2)*df_s;%绘制频率轴

subplot(313)
plot(f_s,y_s_amp);



end

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值