毕业设计(论文)
样数据的滤波则是必不可少的,未来的滤波方式肯定是越来越丰富。
从滤波发展历程讲,数字滤波经历了几个重要阶段,20世纪60年代数字滤波刚刚兴起。当时主要采用计算机模拟的方式进行数字滤波研究。70年代,开始将微处理器应用于数字滤波。但是由于处理器性能不高,在很多场合都难以实现实时处理。80年代,由于VLSI技术的发展,通用DSP处理器大量涌现并逐渐趋于成熟,使得音频范围内数字滤波技术得到广泛应用。目前,不仅通用DSP芯片的速度和功能不断提高,还出现了专用DSP芯片能适应要求信号处理速度极快的特殊场合,总之,目前数字滤波领域的研究十分热门、未来发展方向众多、前景光明。
就本系统的滤波而言,还有许多值得改进和提高的地方:
1、采用的许多滤波算法较为简单,难以适应更高的滤波要求,限于时间和知识的有限,还有许多复杂的现代滤波算法没有讨论。
2、对滤波结果分析得不够透彻,由于对滤波算法研究不够深入,许多分析都十分浅显,难以分析到问题的本质。
3、课题中许多算法的滤波效果仍然不够精细,比如中位值平均的滤波效果仍有一些提高的空间,有待进一步改进。
4、仅仅基于MATLAB环境进行设计,没有更全面的设计和测试,与实际的滤波效果肯定有一定的差异。
35
毕业设计(论文)
致 谢
本文是在导师的悉心指导下完成的。从毕设的选题、相关知识的学习、程序的编写到论文的写作,王老师都给予了足够的帮助与指导,使我受益匪浅。同时感谢同组同学的帮助,使我在融洽的环境中完成毕业设计。最后感谢父母的鼓励与支持,使我能够顺利完成学业。
再次向所有关心帮助我的老师、亲人和朋友表示感谢!
36
毕业设计(论文)
参考文献
[1] 严洪燕,武桦.动态信号分析仪自动检定系统设计[J].自动化与仪表,2010,3(02): 16-17.
[2]张令弥, 张春林.多通道动态测试分析系统研制与应用[J]. 振动与冲击, 1995, 14(3): 1-3.
[3]刘晋浩.冲击响应谱的应用方法研究[J]. 包装工程, 2006, 27(4): 29-30. [4]邓重一.滤波技术的发展现状[J].传感器世界,2010,03:1-2.
[5]邹彦.DSP原理及应用[M].北京:电子工业出版社,2005.169-170.
[6]张玉春,杨成峰.基于小波变换的数字滤波[J].天津电力技术, 2008, 03(1): 6-7.
[7]罗文忠. 动态信号分析仪软件分析[D].上海:上海大学, 2013. 1-2. [8]史慧. 实时动态信号分析仪的研制[D].吉林:吉林大学, 2006. 1-3.
[9]姜建国.信号与系统分析基础[M].北京:清华大学出版社,2006.218-219. [10]阮锐. 数字滤波技术的探讨[J]. 海洋测绘, 1998, 02(4): 28-29.
[11] 杨峰,苏玉萍,余冬菊. 用MATLAB模拟实现数字信号的调制与频谱分析[J]. 电脑学习, 2008, (04).
[12] 王占丽.频谱分析技术在实际中的应用[J].黑龙江科技信息, 2009, (27) .
[13] 赵淑敏.基于MATLAB实现对语音信号频谱分析[J].信息通信,2010, (04) .
[14] 李媛媛,徐岩,王靖岳.对MATLAB实现数字信号的频谱分析[J].通信技术, 2008, (01) .
[15] 张玉珊,崔金玲.数据采集系统中的数字滤波方法研究[J].通信技术, 2007, (15)3.23-25.
[16]丁玉美.数字信号处理(第二版)[M].西安:西安电子科技大学出版社,2000.12.
[17]王世一.数字信号处理[M].北京:北京理工大学出版社,2005. [18]洪乃刚.电力电子、电机控制系统的建模和仿真[M].北京:机械工业出版社 , 2010.1-3.
[19]陈杰. MATLAB宝典[M].北京:电子工业出版社,2007.
[20] 尹则明,丁春利,等.精通MATLAB6[M].北京:清华大学出版社,2002.
37
毕业设计(论文)
附录:程序代码清单
1、模拟噪声信号的产生的MATLAB实现代码 close all; clc; clear;
load data0.mat x=b(:,1); y=b(:,2);
fs=25000;% 对应于离散数字信号的采样速率 n=length(y);% 做fft的点数 f=fs*[-n/2:n/2-1]/n
Y=fftshift(abs(fft(y,n))); figure(1);
subplot(2,1,1); plot(x,y);
xlabel('t/s');ylabel('电压幅值/v'); title('时域图形'); grid on;
subplot(2,1,2); plot(f,Y,'r');
xlabel('f/Hz');ylabel('幅值'); axis([-3000,3000,0,400]); title('频域特性局部放大'); grid on;
2、中值滤波的MATLAB实现代码(函数调用实现) function y = calc_median(input,len)
% OUT = CALC_MEDIAN(INPUT,LEN)
% calculate the median value by each length LEN of the INPUT; % INPUT is the input series or matrix need to be filtered;
% LEN is the average filter length, and LEN must be smaller than the input size; % return OUT is the same size series or matrix of input. [m,n] = size(input);
input = reshape(input,m*n,1); if len>=m*n
return error('the filter length is too large!'); else
input = [input;input(1:len-1)]; out = [];
for i=1:m*n
out(i) = median(input(i:i+len-1));
end
38
毕业设计(论文)
y = reshape(out,m,n); end
3、算术平均滤波的MATLAB实现代码(函数调用实现) function y = calc_avg(input,len)
% OUT = CALC_AVG(INPUT,LEN)
% calculate the average value by each length LEN of the INPUT; % INPUT is the input series or matrix need to be filtered;
% LEN is the average filter length, and LEN must be smaller than the input size; % return OUT is the same size series or matrix of input. [m,n] = size(input);
input = reshape(input,m*n,1); if len>=m*n
return error('the filter length is too large!'); else
input = [input;input(1:len-1)]; out = [];
for i=1:m*n
out(i) = mean(input(i:i+len-1));
end
y = reshape(out,m,n); end
4、中位值平均滤波的MATLAB实现代码clear; close all; clc; load data0.mat x=b(:,1); y=b(:,2);
n1=15; %中值平均滤波窗口 n2=13 ;%中值滤波窗口 y1 =[y;y(1:n1)]; for i=1:length(y) s=y1(i:i+n1-1); sort(s);
out(i)=mean(s(2:n1-2)); end y2=out;
y3=calc_avg(y2,n2); subplot(3,1,1); plot(x,y);
xlabel('t/s');ylabel('电压幅值/v'); title('滤波前波形');
axis([-0.05 0.05,2.2,3.2]); grid on;
subplot(3,1,2);
39