logo资料库

北工大 MATLAB期末大作业 95分.pdf

第1页 / 共22页
第2页 / 共22页
第3页 / 共22页
第4页 / 共22页
第5页 / 共22页
第6页 / 共22页
第7页 / 共22页
第8页 / 共22页
资料共22页,剩余部分请下载后查看
- 1 - 信号处理与MATLAB大作业 课程名称:信号处理与MATLAB(自学) 题目选择: 1. 用FFT进行谱分析 2. 噪声数据的抑制 3. Lienard方程建模与仿真 姓名: 曹振翔 学号: 13020013 完成日期: 2015年12月5日
信号处理与MATLAB大作业 曹振翔 13020013 - 2 - 【摘要】 MATLAB是美国MathWorks公司出品的商业数学软件,主要包括MATLAB和Simulink两大部分,可以被运用于数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多应用领域,为科学研究、工程设计提供了科学便捷的解决方案。 本文旨在针对MATLAB的信号处理应用领域进行研究,分别对三个题目进行频谱分析、时域信号噪声抑制以及非线性方程建模,并给出相应的Simulink仿真框图结构。此外为了能够清晰地反映利用MATLAB进行信号处理的便利之处,笔者在前两个题目中对相同信号分别使用MATLAB内嵌函数和笔者自编写函数进行处理,并将处理结果、运算时间等指标进行对比;而针对第三个题目则分别调用不同的算法处理,并比较其处理差异。由此加深对MATLAB内嵌函数、算法的理解。 【关键词】: MATLAB信号处理,Simulink仿真,频谱分析,噪声抑制,非线性方程建模
信号处理与MATLAB大作业 曹振翔 13020013 - 3 - 目录 【摘要】 ...........................................................................................................- 2 - 【关键词】:......................................................................................................- 2 - 选题一 用FFT进行谱分析 ..............................................................................- 4 - 一、问题描述............................................................................................- 4 - 二、方法综述............................................................................................- 4 - 1、模型构建......................................................................................- 4 - 2、处理方法 .....................................................................................- 4 - 三、算法分析............................................................................................- 6 - 1、利用函数FFT进行频谱分析时的结果分析 ..............................- 6 - 2、利用自编写函数DFT进行频谱分析时的结果分析 .................- 7 - 3、利用Simulink仿真进行系统仿真的结果分析 ..........................- 8 - 选题二 噪声数据的抑制..................................................................................- 9 - 一、 问题描述........................................................................................- 9 - 二、 方法综述........................................................................................- 9 - 1、问题分析 .....................................................................................- 9 - 2、处理方法 .....................................................................................- 9 - 三、算法分析......................................................................................... - 10 - 1、L点移动平均滤波器(MA)滤波结果分析 ........................... - 10 - 2、Kalman滤波结果分析 ............................................................. - 12 - 选题三 Lienard方程建模与仿真................................................................ - 13 - 一、问题描述......................................................................................... - 13 - 二、方法综述......................................................................................... - 13 - 三、算法分析......................................................................................... - 14 - 心得体会......................................................................................................... - 15 - 附录................................................................................................................. - 16 - 选题一 附加程序................................................................................... - 16 - 选题二 附加程序................................................................................... - 20 - 参考文献......................................................................................................... - 22 -
信号处理与MATLAB大作业 曹振翔 13020013 - 4 - 选题一 用FFT进行谱分析 一、问题描述 在实际的科学研究和工程设计中,经常需要找出隐藏或淹没在噪声中的信号,显然单纯地对问题进行时域分析并不能够使问题简单化。相反如果假设淹没的信号由固定频率的周期信号叠加而成,而混入的加性噪声为一随机信号,则可以利用傅里叶变换求出信号的频域特性,找到信号数据包含的频率成份,从而达到将信号与噪声分离的目的。 二、方法综述 1、模型构建 生成一个包含两个频率(50Hz和120Hz)成分的试验信号x,对这个信号加入随机噪声n(噪声的标准偏差为2),形成一个加噪信号xn。(其余数据参数限定:数据采样频率为1000Hz,时间区间从t=0到t=0.25,步长0.001秒)。 最终生成加噪信号模型如下: xn = sin(2*pi*50*t) + sin(2*pi*120*t) + 2*randn(size(t)); 2、处理方法 2.1 利用函数FFT进行频谱分析 由数字信号处理课程知识可知,离散快速傅里叶变换FFT可以对时域离散序列进行频域分析,从而得到其中包含的频率成分[1]。 此方法利用MATLAB自带函数FFT对构建的加噪信号模型进行256点FFT变换,并求出信号的功率谱密度(不同频率所含能量的度量),绘制功率谱图。
信号处理与MATLAB大作业 曹振翔 13020013 - 5 - 2.2 利用自编写函数DFT进行频谱分析 离散快速傅里叶变换FFT是基于离散傅里叶变换DFT的快速算法[1],而由DFT的定义式可以很简便地完成DFT函数的编写。并且对构建的加噪信号模型分别进行N点(N为xn长度)DFT变换和FFT变换可以对比出两种算法的性能与所需计算时间的差异。因此分别调用自编写函数DFT和N点FFT函数对加噪信号进行频域分析,并求出信号的功率谱密度(不同频率所含能量的度量),绘制功率谱图。 2.3 利用Simulink仿真进行系统框图搭建 Simulink是MathWorks公司于1990年推出的产品,是用于MATLAB下建立系统框图和仿真的环境,可以对动态系统进行模拟、仿真和分析。这样的系统可以是线性的、也可以是非线性的,可以是连续的、离散的,或者是混合的系统。用Simulink还可以对多速率系统进行有效的模拟、仿真和分析[2]。 利用Simulink环境下的DSP工具箱中的Spectrum Analyzer(功率谱分析仪)模块能够十分便捷地分析出施加信号的功率谱密度,省去了中间的FFT及DFT环节。具体搭建仿真图如图1所示(各模块参数设置同前面两种代码实现方法)。 (a)功率谱分析simulink仿真图 (b)子系统“函数发生”simulink仿真图 图1 FFT谱分析Simulink仿真图
信号处理与MATLAB大作业 曹振翔 13020013 - 6 - 三、算法分析 1、利用函数FFT进行频谱分析时的结果分析 经过MATLAB自带FFT函数进行频谱分析并计算得出的功率谱结果图如图2所示。对图2中结果进行分析可以发现构建的加噪信号模型时域图像无法反映信号本身的周期性性质(信号已经完全淹没在随机噪声之中)。而经过FFT变换后计算得出的功率谱则很好地反映了信号中包含的频率成分,很好地完成了信号与噪声分离的目的。 图2 FFT谱分析结果图
信号处理与MATLAB大作业 曹振翔 13020013 - 7 - 2、利用自编写函数DFT进行频谱分析时的结果分析 经过自编写DFT函数进行频谱分析并计算得出的功率谱结果图如图3所示。对比图2和图3中信息发现利用自编写DFT函数分析得出的功率谱的峰值频率相较于自带FFT函数有轻微的左移,后经实验验证发现是由于自编写DFT的取点数N相较于FFT中设定的256较小的缘故导致,当取N点FFT分析时也会发现出现微小的左移现象,说明N点的取值不同对于分析结果会产生相应的影响。 之后利用MATLAB自带的计时功能比较两种算法的计算时间差异,结果如图4所示。 分析对比图4(a),图4(b)中信息发现N点DFT谱分析耗时明显多于N点FFT谱分析耗时,由此证明FFT的确很大程度上简化了DFT的计算难度,减小图3 自编写DFT谱分析结果图 (b)N点DFT谱分析耗时结果图 (a)N点FFT谱分析耗时结果图 图4 N点FFTN点DFT和谱分析计算时间差异
信号处理与MATLAB大作业 曹振翔 13020013 - 8 - 计算量。 3、利用Simulink仿真进行系统仿真的结果分析 经过Simulink仿真得出的功率谱结果图如图5所示,可见该Simulink仿真结构能够很好地完成信号频率的提取,误差相较于前面两种单纯的代码实现方法也更加精确。 图5 Simulink仿真结果图
分享到:
收藏