给出课程第二章的程序示例,供大家学习。
%%%%% 信号滤波前后频谱特性比较程序 %%%%%%%
%%%%% File: signal_fliter_sim2.m %%%%%
%%% date: 2016-10-24 author: 算法工匠 %%%
%%% 程序说明
% 本程序完成多种滤波器设计以及滤波的等效实现过程。
% 比较滤波器的两种设计方法的差异。
clear all;
close all;
%%************ 程序主体 *****************%%
format long;
%************* Preparation part *******************
fs = 2000; % frequency sample
fre1 = 10; % Hz
fre2 = 500; % Hz
time = [1:1000];
%%%%%% 信号的产生 %%%%%%%%%%
%***************** Filter initialization ************************
sin_signal1 = sin(2*pi*fre1.*time/fs);
% 产生正弦信号1
sin_signal2 = sin(2*pi*fre2.*time/fs);
% 产生正弦信号2
sin_signal = sin_signal1 + sin_signal2;
figure(1)
plot((sin_signal),'-*');
figure(2)
plot(abs(fft(sin_signal)),'-*');
aaa = 1; % 断点调试
%%%%% 滤波器设计 %%%%%
% 设计一个低通的FIR滤波器,能够滤除900hz信号。
fir_order = 128;
fir_low_filter = fir1(fir_order,0.2); % 窗函数法
% fir_low_filter = fir1(fir_order, 0.2);
fir_low_filter1 = fir1(fir_order,0.2,'low',chebwin(129,100));
% 窗函数法 使用切比雪夫窗 100为带外抑制dB值
fre = [0 0.2 0.3 1];
amp = [1 1 0 0];
fir_low_filter2 = firpm(fir_order,fre,amp);
% 最佳逼近法
figure(3)
freqz(fir_low_filter );
figure(4)
freqz(fir_low_filter1 );
title('使用切比雪夫窗函数');
figure(5)
freqz(fir_low_filter2 );
title('使用最佳逼近法设计');
aaa = 1; % 断点调试
% 实现滤波
% filter signal
filter_sin_signal = filter(fir_low_filter,1,sin_signal); % 实现滤波
for i = 5:length(sin_signal)
filter_sin_signal1(i) = sin_signal(i)*fir_low_filter(1) + sin_signal(i-1)*fir_low_filter(2) +sin_signal(i-2)*fir_low_filter(3) +sin_signal(i-3)*fir_low_filter(4) +sin_signal(i-4)*fir_low_filter(5) ;
end
figure(6)
plot(abs(fft(filter_sin_signal)),'-*');
figure(7)
plot(filter_sin_signal1,'-*');
figure(8)
plot(filter_sin_signal,'-*');
aaa = 1; % 断点调试
%**************** end of file **********************
%%% 结论
% 使用不同的窗来设计滤波器进行性能比较。
% 比较不同的滤波器设计方法带来的差异。
% 了解滤波的等效过程,分解为乘累加的过程。
休息一下!
201801记录:
本来已经写完了本篇系列文章,但公众号里面显示的格式不正确。虽然后台显示程序格式很工整,所以还是决定用图片的方式来再次展示程序!
因此,将程序转换为图片后,同学们就能在电脑或者手机上看到工整的程序了。
程序中的断点调试语句很有用,能够帮助大家查找和定位程序的问题。
此时,
同学们还掌握了窗函数法吗?
最佳逼近法呢?
如果还不清楚,
请即刻去百度问问!
仿真课程目的就是为了将学到的知识用于实际,用仿真的方式能够强化知识点的消化。希望大家能够自己动手写一遍程序。
请谨记!
动手写一遍,
调试一下!
全部0条评论
快来发表一下你的评论吧 !