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

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

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

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

MatLab中滤波器(filterDesigner)的设计和使用(附代码)_第1张图片

 

2、在APP页面中找到filterDesigner

MatLab中滤波器(filterDesigner)的设计和使用(附代码)_第2张图片

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

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

MatLab中滤波器(filterDesigner)的设计和使用(附代码)_第3张图片

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

MatLab中滤波器(filterDesigner)的设计和使用(附代码)_第4张图片

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

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

MatLab中滤波器(filterDesigner)的设计和使用(附代码)_第5张图片

 

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

MatLab中滤波器(filterDesigner)的设计和使用(附代码)_第6张图片

MatLab中滤波器(filterDesigner)的设计和使用(附代码)_第7张图片 

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

还有一种导出方法是导出为系数只需要利用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

你可能感兴趣的:(MatLab使用笔记,matlab,开发语言,算法)