北京理工大学高级数字信号处理实验报告
北京理工大学信号与系统实验报告
实验1 信号的时域描述与运算一、实验目的1、掌握信号的MATLAB表示及其可视化方法。
2、掌握信号基本时域运算的MATLAB实现方法。
3、利用MATLAB分析常用信号,加深对信号时域的理解。
二、实验原理1、连续时间的MATLAB表示连续时间信号指的是在连续时间范围内有定义的信号,即除若干个不连续点外,在任何信号都有意义。
在MATLAB中,连续时间信号可以用两种方法来表示,即向量表示法和符号对象表示法。
向量表示法:严格意义上来说,MATLAB并不能处理连续时间信号,都必须是用信号等时间间隔采样后的采样值来近似表示的,采样时间间隔足够小的时候,这些采样值就可以近似地表示出连续时间信号。
例如:>>t=0:0.01:10;>>x=sin(t);此时利用plot(t,x)命令即可绘制上述信号的时域波形。
符号对象表示法:连续时间信号先用表达式表示出来,然后采用符号表达式来表示信号。
例如:>>sym t;>>x=xin(t);此时利用ezplot(x)命令即可绘制上述信号的时域波形。
常用的信号产生函数:2、连续时间信号的时域运算对连续时间信号的运算包括量信号想家、相乘、微分、积分以及位移反转、尺度变换(尺度伸缩)等1)相加和相乘信号的相加和相乘指两个信号对应时刻的值相加和相乘,对于两个采用向量表示的可以直接使用算术运算的运算符“+”和“•”来计算,此时要求表示两信号的向量时间范围和采样间隔相同,采用符号对象表示的两个信号,可以直接根据符号对象的运算规则运算。
2)微分和积分对于向量表示发表示的连续时间信号,可以用过数值计算的方法计算信号的微分和积分。
这里由时间向量[t1,t2,…,t N]和采样值向量[x1,x2,…,x N]表示的连续信号的微分是利用差分来近似求取的。
MATLAB里用diff来计算差分x(k+1)-x(k)。
连续信号的定积分可以由MATLAB的quad函数实现,调用格式为quad(‘functions_name’,a,b)其中,functions_name为被积函数名,a、b为积分区间。
北京理工大学信号与系统实验报告材料3信号的频域分析报告.doc
标准实验 3 信号的频域分析(综合型实验)一、实验目的1)深入理解信号频谱的概念,掌握信号的频域分析方法。
2)观察典型周期信号和非周期信号的频谱,掌握其频谱特性。
二、实验原理与方法 1.连续周期信号的频谱分析如果周期信号满足Dirichlet 条件,就可展开为傅里叶级数的形式,即x(t)c k e jk 0 t ( 1)c k 1x(t)ejk 0tdt(2)kT 0 T其中 T 0 表示基波周期,2/ T 0 为基波频率,(...) 表示任一个基波周期内的积分。
T 0上面两式为周期信号复指数形式的傅里叶级数,系数 c k 成为 x(t)的傅里叶系数。
周期信号的傅里叶级数还可由三角函数的线性组合来表示,即x(t) a 0a k cosktb k sin k0t(3)k 1k 1其中 a 012 x(t)cosk0tdt ,b k 2x(t)sink 0tdt (4)x(t)dt, a kT0 TT 0 TT0 T( 3)式中同频率的正弦、余弦项合并可以得到三角函数形式的傅里叶级数,即x(t) A 0A k cos(k0 tk )( 5)k 1其中 A 0a 0 , A k a k 2b k 2, karctan b k(6)a k任何满足 Dirichlet 条件的周期信号都可以表示成一组谐波关系的复指数函数或三角函数 的叠加。
周期信号表示为傅里叶级数时需要无限多项才能完全逼近原信号, 但在实际应用中常采用有限项级数代替,所选级数项越多就越接近原信号。
2.连续非周期信号的频谱分析对于非周期连续时间信号,信号的傅里叶变换和傅里叶逆变换定义为X ( )x(t)e j t dt (7)x(t)1 X ( )e j t d( 8)2以上两式把信号的时频特性联系起来,确立了非周期信号 x(t) 和频谱 X ( ) 之间的关系。
利用 MATLAB 可以方便地求出非周期连续时间信号的傅里叶变换,几种常见方法如下: 1)符号运算法MATLAB 的符号数学工具箱提供了直接求解傅里叶变换和反变换的函数,fourier 函数和 ifourier 函数,基本调用格式为X fourier (x)x ifourier (X)默认的时域变量为t,频域变量为。
北京理工大学高级数字信号处理实验报告
高级数字信号处理实验报告实验名称:基于小波变换的信号去噪实验实验时间:2013/5/17姓名:学号:班级:05111003原信号SNR = 9SNR = 25SNR = 49实验二 基于小波变换的信号去噪实验实验内容:利用函数wnoise ,产生2 种不加噪声的信号,分别是 'blocks' 和'doppler' ,观察这 两个信号的特点,对每一个信号,进行如下处理:一、产生信号的长度为512点,给信号加上不同信噪比的噪声,即把wnoise 中的SQRT_SNR 参数值分别设为3、5和7,观察在不同信噪比情况下,有噪信号的特点。
1.实验结果2.分析:单独地,对于blocks 信号而言,信噪比很低时“平台”部分受到噪声的污染很严重,原本十分平坦的部分变得起伏很明显;对doppler 信号的波形而言,高的信噪比尤其能使信号的高频部分可分辨程度提高。
总而言之,从blocks 和doppler 函数的原信号与三种信噪比信号对比图中看出,信噪比越高,含噪信号的波形就与原波形越接近,换句话说噪声对于信号的影响就越小。
二、当SQRT_SNR 参数值设为5 时,对加噪后的信号进行3 级的小波分解,对小原信号SNR = 9SNR = 25SNR = 49波系数进行硬阈值和软阈值处理,比较软硬阈值处理的结果。
1.实验结果表格 1 blocks 信号硬阈值和软阈值处理的比较注:标准差从MATLAB 中figure 界面数据分析工具中直接读取;标准误差为编程计算所得 (后同)。
1020signal of snr=25signal of hard-threshold-5051015signal of soft-thresholdsignal of snr=25-505signal of hard-threshold50100150200250300350400450500-505signal of soft-threshold表格 2 doppler信号硬阈值与软阈值处理的比较2.分析首先明确硬阈值处理与软阈值处理各自的特点。
数字信号实验报告二,北京理工大学,实验报告
实验三利用FFT计算线性卷积一、实验目的1.掌握利用FFT计算线性卷积的原理及具体实现方法。
2.加深理解重叠相加法和重叠保留法。
3.考察利用FFT计算线性卷积各种方法的适用范围。
二、实验设备与环境计算机、MATLAB软件环境三、实验基础理论1.线性卷积与圆周卷积设为L点序列,为M点序列,和的线性卷积为的长度为L+M-1。
和的N点圆周卷积为圆周卷积与线性卷积相等而不产生交叠的必要条件为圆周卷积定理:根据DFT的性质,和的N点圆周卷积的DFT等于它们DFT的乘积2.快速卷积快速卷积算法用圆周卷积实现线性卷积,根据圆周卷积定理利用FFT算法实现圆周卷积。
可以将快速卷积的步骤归纳如下:(1)为了使线性卷积可以利用圆周卷积来计算,必须选择;同时为了能使用基2-FFT 完成卷积运算,要求N =。
采用补零的办法是和的长度均为N 。
(2)计算和的N 点FFTFFT −−−→(3)组成卷积(4)利用IFFT 计算IDFT ,得到线性卷积(k)()IFFT Y y n −−−→3.分段卷积我们考察单位取样响应为的线性系统,输入为,输出为,则当输入序列时再开始进行卷积,会使输出相对输入有较大的延时,再者如果序列太长,需要大量的存储单元。
为此,我们把,分别求出每段的卷积,合在一起其到最后的总输出。
这种方法称为分段卷积。
分段卷积可细分为重叠相加法和重叠保留法。
重叠保留法:设的长度为,的长度为M 。
我们把序列分成多段N 点序列,每段与前一段重叠M-1个样本。
由于第一段没有前一段保留信号,为了修正,我们在第一个输入段前面填充M-1个零。
计算每一段的圆周卷积,则其每段卷积结果的前M-1个样本不等于线性卷积值,不是正确的样本值。
所以我们将每段卷积结果的前M-1个样本舍去,只保留后面的N-M+1个正确输出样本,把这些输出样本合起来得到总的输出。
利用FFT 实现重叠保留法的步骤如下:(1)在前面填充M-1个零,扩大以后的序列为1ˆ(){0,0,0,()}M x n x n -=个(2)将分为若干N 点子段,设L=N-M+1为每一段的有效数据长度,则第i 段〖ˆ(m)x1,0,01iL m iL N i n N ≤≤+-≥≤≤- (3)计算每一段与的N 点圆周卷积,利用FFT 计算圆周卷积:FFT−−−→(k)()IFFT i i Y y n −−−→(4)舍去每一段卷积结果的前M-1个样本,连接剩下样本,得到卷积结果。
北京理工大学信号与系统实验报告2-LTI系统的时域分析
实验2 LTI 系统的时域分析(基础型实验)一.实验目的1. 掌握利用MATLAB 对系统进行时域分析的方法。
2. 掌握连续时间系统零状态响应、冲击响应和阶跃响应的求解方法。
3. 掌握求解离散时间系统响应、单位抽样响应的方法。
4.加深对卷积积分和卷积和的理解。
掌握利用计算机进行卷积积分和卷积和计算的方法。
二. 实验原理与方法1. 连续时间系统时域分析的MATLAB 实现1) 连续时间系统的MATLAB 表示LTI 连续系统通常可以由系统微分方程描述,设描述系统的微分方程为:(N)(N 1)(M)(M 1)1010(t)(t)...(t)b (t)b (t)...b (t)N N M M a y a y a y x x x ----++=++则在MATLAB 中可以建立系统模型如下:1010[b ,b ,...,b ];a [a ,a ,...,a ];sys tf(b,a);M M N N b --=== 其中,tf 是用于创建系统模型的函数,向量a 和b 的元素是以微分方程求导的降幂次序来排列的,如果有缺项,应用0补齐,例如由微分方程2''(t)y'(t)3y(t)x(t)y ++=描述的系统可以表示为: >> b=[1]; >> a=[2 1 3]; >> sys=tf(b,a); 而微分方程由''(t)y'(t)y(t)x''(t)x(t)y ++=-描述的系统则要表示成 >> b=[1 0 -1]; >> a=[1 1 1]; >> sys=tf(b,a);2) 连续时间系统的零状态响应零状态响应指系统的初始状态为零,仅由初始信号所引起的响应。
MATLAB 提供了一个用于求解零状态响应的函数lism ,其调用格式如下:lism (sys,x,t )绘出输入信号及响应的波形,x 和t 表示输入信号数值向量及其时间向量。
数字信号处理实验报告完整版[5篇模版]
数字信号处理实验报告完整版[5篇模版]第一篇:数字信号处理实验报告完整版实验 1利用 T DFT 分析信号频谱一、实验目的1.加深对 DFT 原理的理解。
2.应用 DFT 分析信号的频谱。
3.深刻理解利用DFT 分析信号频谱的原理,分析实现过程中出现的现象及解决方法。
二、实验设备与环境计算机、MATLAB 软件环境三、实验基础理论T 1.DFT 与与 T DTFT 的关系有限长序列的离散时间傅里叶变换在频率区间的N 个等间隔分布的点上的 N 个取样值可以由下式表示:212 /0()|()()0 1Nj knjNk NkX e x n e X k k Nπωωπ--====≤≤-∑由上式可知,序列的 N 点 DFT ,实际上就是序列的 DTFT 在 N 个等间隔频率点上样本。
2.利用 T DFT 求求 DTFT方法 1 1:由恢复出的方法如下:由图 2.1 所示流程可知:101()()()Nj j n kn j nNn n kX e x n e X k W eNωωω∞∞----=-∞=-∞=⎡⎤==⎢⎥⎣⎦∑∑∑由上式可以得到:IDFT DTFT第二篇:数字信号处理实验报告JIANGSUUNIVERSITY OF TECHNOLOGY数字信号处理实验报告学院名称:电气信息工程学院专业:班级:姓名:学号:指导老师:张维玺(教授)2013年12月20日实验一离散时间信号的产生一、实验目的数字信号处理系统中的信号都是以离散时间形态存在的,所以对离散时间信号的研究是数字信号的基本所在。
而要研究离散时间信号,首先需要产生出各种离散时间信号。
使用MATLAB软件可以很方便地产生各种常见的离散时间信号,而且它还具有强大绘图功能,便于用户直观地处理输出结果。
通过本实验,学生将学习如何用MATLAB产生一些常见的离散时间信号,实现信号的卷积运算,并通过MATLAB中的绘图工具对产生的信号进行观察,加深对常用离散信号和信号卷积和运算的理解。
北京理工大学信号与系统实验报告8 调制与解调
实验8 调制与解调(设计型实验)一、实验目的1) 加深理解信号调制和解调的基本原理2) 从时域和频域分析信号幅度调制和解调的过程 3) 掌握幅度调制和解调的实现方法 二、实验原理与方法 1. 调制与解调在通信系统中,信号传输之前通常需要在发送端将信号进行调制,转换成为适合传输的信号,在接收端则需要进行解调,将信号还原成原来的信息。
在实际应用中,有多种调制方法,最常用的模拟调制方式是用正弦波作为载波的幅度调制、频率调制和相位调制3种方式,其中幅度调制(AM )属于线性调制,这里重点介绍AM 调制的基本原理。
正弦幅度调制和解调的原理框图如下:x(t)为调制信号,cos(w 0t)为载波,g(t)为已调信号。
调制信号与载波信号相乘可以得到已调信号,即g(t)=x(t)* cos(w 0t) 载波频谱为00()()()P ωπδωωπδωω=-++ 有频域卷积定理g(t)=x(t)* cos(w 0t)的频谱为0011G()[X()P()][X()()]22X ωωωωωωωπ=*=-++ 在调制过程中信号的所有信息X(w)均被保留了下来,,只是被移到了较高的频率上。
为使G()ω中两个非零部分不重叠,应满足0m ωω>。
解调过程中,将g(t)乘以本振信号cos(w 0t)得r(t),本振信号的频率与调制过程中载波信号频率相同,这种方法称为同步解调。
200011(t)g(t)cos(t)(t)cos (t)(t)(t)cos(2t)22r x x x ωωω=*==+ 从频域上看,根据频域卷积定理可以求出(t)g(t)p(t)r =的频谱为00()[X(2)]/4X()/2[X(2)]/4R ωωωωωω=-+++将r(t)通过一定的低通滤波器滤除频率为02ω的分量,则可恢复出原始信号。
已调信号g(t)=x(t)* cos(w 0t)的频谱只含上下边带成分,抑制了载波分量,称为抑制载波双边带(DSB-SC )调幅;而具有s(t)=[A+x(t)]cos(w 0t)形式的已调信号频谱中包含载波和上下边带,称为双边带(DSB )调幅2. 低通滤波器的MATLAB 实现解调过程中需要使用低通滤波器恢复原始信号,MATLAB 和Simulink 都提供了强大功能用于滤波器的设计。
数字信号处理实验报告
数字信号处理实验报告
数字信号处理是指利用数字技术对模拟信号进行采样、量化、编码等处理后,再通过数字信号处理器进行数字化处理的技术。
在数字信号处理实验中,我们通过对数字信号进行滤波、变换、解调等处理,来实现信号的处理和分析。
在实验中,我们首先进行了数字信号采集和处理的基础实验,采集了包括正弦信号、方波信号、三角波信号等在内的多种信号,并进行了采样、量化、编码等处理。
通过这些处理,我们可以将模拟信号转换为数字信号,并对其进行后续处理。
接着,我们进行了数字信号滤波的实验。
滤波是指通过滤波器对数字信号进行处理,去除其中的噪声、干扰信号等不需要的部分,使其更加纯净、准确。
在实验中,我们使用了低通滤波器、高通滤波器、带通滤波器等多种滤波器进行数字信号滤波处理,得到了更加干净、准确的信号。
除了滤波,我们还进行了数字信号变换的实验。
数字信号变换是指将数字信号转换为另一种表示形式的技术,可以将信号从时域转换到频域,或者从离散域转换到连续域。
在实验中,我们使用了傅里叶变换、离散傅里叶变换等多种变换方式,对数字信号进行了变换处理,得到了信号的频谱信息和其他相关参数。
我们进行了数字信号解调的实验。
数字信号解调是指将数字信号转换为模拟信号的技术,可以将数字信号还原为原始信号,并进行后续处理。
在实验中,我们使用了频率解调、相干解调等多种解调方式,将数字信号转换为模拟信号,并对其进行了分析和处理。
总的来说,数字信号处理实验是一项非常重要的实验,可以帮助我们更好地理解数字信号处理的原理和方法,为我们今后从事相关领域的研究和工作打下坚实的基础。
数字信号处理实验报告11-12-10
《数字信号处理》实验报告专业学号姓名实验一 利用FFT 实现快速卷积一、实验目的1.加深理解FFT 在实现数字滤波(或快速卷积)中的重要作用,更好的利用FFT 进行数字信号处理。
2.掌握循环卷积和线性卷积两者之间的关系。
二、实验原理用FFT 来快速计算有限长度序列的线性卷积。
这种方法就是先将输入信号x(n)通过FFT 变换为它的频谱采样值()x k ,然后再和FIR 滤波器的频响采样值H(k)相乘,H(k)可事先存放在存储器中,最后再将乘积H(k)X(k)通过快速傅里叶变换(简称IFFT )还原为时域序列,即得到输出y(n)。
现以FFT 求有限长序列的卷积及求有限长度序列与较长序列间的卷积为例来讨论FFT 的快速卷积方法。
序列x(n)和h(n)的长差不多。
设x(n)的长为N 1,h(n)的长为N 2,要求∑-=-=⊗=1)()()()()(N m m n x m h n y n x n y用FFT 完成这一卷积的具体步骤如下:①为使两有限长序列的线性卷积可用其循环卷积代替而不发生混叠,必须选择循环卷积长度121-+≥N N N ,若采用基2-FFT 完成卷积运算,要求m N 2=(m 为整数)。
②用补零方法使x(n)和h(n)变成列长为N 的序列。
1122()01()01()01()01x n n N x n N n N h n n N h n N n N ≤≤-⎧=⎨≤≤-⎩≤≤-⎧=⎨≤≤-⎩③用FFT 计算x(n)和h(n)的N 点离散傅里叶变换。
④完成X(k)和H(k)乘积,)()()(k H k x k Y = ⑤用FFT 计算 ()Y k 的离散傅里叶反变换得*10*10)(1)(1)(⎭⎬⎫⎩⎨⎧⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡=∑∑-=--=N k nk N nk N N k W k Y N W k Y N n y三、主要实验仪器及材料微型计算机、Matlab6.5教学版。
四、实验内容1.数字滤波器的脉冲响应为()22()1/2(),8nN h n R n N ==。
北京理工大学 数字信号处理 实验报告 程序
数字信号处理实验报告1.深入掌握应用DFT分析信号的频谱的理论方法,针对该问题进行一次全面综合练习,完成一个完整的信号分析软件实现方法和流程,这种全面完整的综合练习可以帮助学生深入理解和消化基本理论,锻炼学生独立解决问题的能力,培养学生的创新意识,为今后的科研和工作打下良好的实践基础。
2.综合利用数字信号处理的理论知识完成数字滤波器的设计与实现,完成一个完整的数字滤波器设计软件的实现方法和流程。
这种全面完整的综合练习可以帮助学生深入理解和消化基本理论,锻炼学生独立解决问题的能力,培养学生的创新意识,为今后的科研和工作打下良好的实践基础。
二、实验设备与环境计算机、MATLAB软件环境三、实验内容1.基于Matlab GUI的离散傅里叶变换分析2.基于Matlab GUI的数字滤波器分析设计1.基于Matlab GUI的离散傅里叶变换分析信号: t=1:100;x=2*sin(t/25*2*pi)+5*sin(t/5*2*pi);说明:输入信号从Matlab Command Windows中生成,通过变量名导入本软件,并可输出DFT变换后的结果,默认名为DFT_输入变量名。
2.基于Matlab GUI的数字滤波器分析设计IIR 低通:(巴特沃兹)IIR高通:(切比雪夫I)IIR带通:(切比雪夫II)IIR带阻:(椭圆滤波器)FIR低通:(矩形窗)FIR高通:(汉宁窗)FIR带通:(布莱克曼窗)FIR带阻:(凯瑟窗)五、程序界面设计及程序源代码1.基于Matlab GUI的离散傅里叶变换分析界面设计:程序代码:function varargout =SignalDFTSoftware(varargin)% SIGNALDFTSOFTWARE MATLAB code for SignalDFTSoftware.fig% SIGNALDFTSOFTWARE, by itself, creates a new SIGNALDFTSOFTWARE or raises the existing% singleton*.%% H = SIGNALDFTSOFTWARE returns the handle to a new SIGNALDFTSOFTWARE or the handle to% the existing singleton*.%%SIGNALDFTSOFTWARE('CALLBACK',hObject,even tData,handles,...) calls the local% function named CALLBACK in SIGNALDFTSOFTWARE.M with the given input arguments.%%SIGNALDFTSOFTWARE('Property','Value',...) creates a new SIGNALDFTSOFTWARE or raises the% existing singleton*. Starting from the left, property value pairs are% applied to the GUI before SignalDFTSoftware_OpeningFcn gets called.An% unrecognized property name or invalid value makes property application% stop. All inputs are passed to SignalDFTSoftware_OpeningFcn via varargin. %% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one% instance to run (singleton)".%% See also: GUIDE, GUIDATA, GUIHANDLES% Edit the above text to modify the response to help SignalDFTSoftware% Last Modified by GUIDE v2.5 26-Nov-2011 12:55:11% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name',mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn',@SignalDFTSoftware_OpeningFcn, ...'gui_OutputFcn',@SignalDFTSoftware_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []);if nargin&&ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1}); endif nargout[varargout{1:nargout}] =gui_mainfcn(gui_State, varargin{:});elsegui_mainfcn(gui_State, varargin{:});end% End initialization code - DO NOT EDIT% --- Executes just before SignalDFTSoftware is made visible.function SignalDFTSoftware_OpeningFcn(hObjec t, eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% varargin command line arguments to SignalDFTSoftware (see VARARGIN)% Choose default command line output for SignalDFTSoftwarehandles.output = hObject;% Update handles structure guidata(hObject, handles);% UIWAIT makes SignalDFTSoftware wait for user response (see UIRESUME)% uiwait(handles.figure1);% --- Outputs from this function are returned to the command line.function varargout =SignalDFTSoftware_OutputFcn(hObject, eventdata, handles)% varargout cell array for returning output args (see VARARGOUT);% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% Get default command line output from handles structurevarargout{1} = handles.output;% --- If Enable == 'on', executes on mouse press in 5 pixel border.% --- Otherwise, executes on mouse press in 5 pixel border or over random.function random_ButtonDownFcn(hObject, eventdata, handles)% hObject handle to random (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% --- Executes on button press in random. function random_Callback(hObject, eventdata, handles)% hObject handle to random (see GCBO)% eventdata reserved - to be defined in a future version of MATLABglobal x;global x_flag;x=rand(1,50)*20-10;x_flag=1;if(x_flag)plot(handles.TD,0:(length(x)-1),x);end% --- Executes on button press in Delete.function Delete_Callback(hObject, eventdata, handles)% hObject handle to Delete (see GCBO)% eventdata reserved - to be defined in a future version of MATLABglobal x;global X;global x_flag;global X_flag;x=0;X=0;x_flag=0;X_flag=0;plot(handles.TD,0,0);plot(handles.FD,0,0);% --- If Enable == 'on', executes on mouse press in 5 pixel border.% --- Otherwise, executes on mouse press in 5 pixel border or over Delete.function Delete_ButtonDownFcn(hObject, eventdata, handles)% hObject handle to Delete (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% --- If Enable == 'on', executes on mouse press in 5 pixel border.% --- Otherwise, executes on mouse press in 5 pixel border or over Analyse.function Analyse_ButtonDownFcn(hObject, eventdata, handles)% hObject handle to Analyse (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% --- Executes on button press in Analyse. function Analyse_Callback(hObject, eventdata, handles)% hObject handle to Analyse (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB global x;global X;global x_flag;global X_flag;if(x_flag)X=fft(x);X_flag=1;endif(X_flag)stem(handles.FD,linspace(0,2*pi,length(X)),abs( X));xlim(handles.FD,[0,2*pi])end% --- Executes on button press in Export. function Export_Callback(hObject, eventdata, handles)% hObject handle to Export (see GCBO)% eventdata reserved - to be defined in a future version of MATLABglobal X;global X_flag;if(X_flag)assignin('base',get(handles.edit4,'String'),X); end% --- Executes during object creation, after setting all properties.function text1_CreateFcn(hObject, eventdata, handles)% hObject handle to text1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns calledglobal x_flag;global X_flag;global x;global X;x_flag=0;X_flag=0;x=0;X=0;function name_Callback(hObject, eventdata, handles)% hObject handle to name (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% Hints: get(hObject,'String') returns contents of name as text% str2double(get(hObject,'String')) returns contents of name as a double% --- Executes during object creation, after setting all properties.function name_CreateFcn(hObject, eventdata, handles)if ispc&&isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end% --- Executes on button press in import. function import_Callback(hObject, eventdata, handles)global x;global x_flag;global signal_name;signal_name=get(,'String');x='empty';set(,'String','Notexist,Retry!');x=evalin('base',signal_name);set(,'String','Succeed');x_flag=1;if(x_flag)plot(handles.TD,0:(length(x)-1),x);endset(handles.edit4,'String',strcat('DFT_',signal_na me));function edit4_Callback(hObject, eventdata, handles)function edit4_CreateFcn(hObject, eventdata, handles)if ispc&&isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); endglobal signal_name;2.基于Matlab GUI的数字滤波器分析设计界面设计:程序设计:function varargout = filter(varargin)%EDIT By Yu Yizhe%V1.0%2011/11/20%all right reserve% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @filter_OpeningFcn, ...'gui_OutputFcn', @filter_OutputFcn, ...'gui_LayoutFcn', [], ...'gui_Callback', []);if nargin&&ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1}); endif nargout[varargout{1:nargout}] =gui_mainfcn(gui_State, varargin{:});elsegui_mainfcn(gui_State, varargin{:});end% End initialization code - DO NOT EDIT% --- Executes just before filter is made visible. function filter_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% varargin unrecognizedPropertyName/PropertyValue pairs from the% command line (see VARARGIN)% Choose default command line output for filter handles.output = hObject;% Update handles structureguidata(hObject, handles);% UIWAIT makes filter wait for user response (see UIRESUME)% uiwait(handles.figure1);% --- Outputs from this function are returned tothe command line.function varargout = filter_OutputFcn(hObject, eventdata, handles)% varargout cell array for returning output args (see VARARGOUT);% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% Get default command line output from handles structurevarargout{1} = handles.output;function text1_CreateFcn(hObject, eventdata, handles)global ch1;global ch2;global ch31;global ch32;ch1=1;ch2=1;ch31=1;ch32=1;function IIRtype_Callback(hObject, eventdata, handles)global ch1;global ch2;global ch31;global ch32;ch31=get(hObject,'Value');function IIRtype_CreateFcn(hObject, eventdata, handles)if ispc&&isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction e11_Callback(hObject, eventdata, handles)function e11_CreateFcn(hObject, eventdata, handles)if ispc&&isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); endfunction e12_Callback(hObject, eventdata, handles)function e12_CreateFcn(hObject, eventdata, handles)if ispc&&isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); endfunction e21_Callback(hObject, eventdata, handles)function e21_CreateFcn(hObject, eventdata, handles)if ispc&&isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); endfunction e22_Callback(hObject, eventdata, handles)function e22_CreateFcn(hObject, eventdata, handles)if ispc&&isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); endfunction e31_Callback(hObject, eventdata, handles)function e31_CreateFcn(hObject, eventdata, handles)if ispc&&isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); endfunction e32_Callback(hObject, eventdata, handles)function e32_CreateFcn(hObject, eventdata, handles)if ispc&&isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); endfunction e41_Callback(hObject, eventdata, handles)function e41_CreateFcn(hObject, eventdata, handles)if ispc&&isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); endfunction e42_Callback(hObject, eventdata, handles)function e42_CreateFcn(hObject, eventdata, handles)if ispc&&isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); endfunction generate_Callback(hObject, eventdata, handles)global ch1;global ch2;global ch31;global ch32;global typech;global w1p;global w1s;global w2p;global w2s;global rp;global rs;if ch1==1typech=ch1*100+ch2*10+ch31;elseif ch2==2typech=ch1*100+ch2*10+ch32;endw1p=str2num(get(handles.e11,'String'));w1s=str2num(get(handles.e12,'String'));w2p=str2num(get(handles.e21,'String'));w2s=str2num(get(handles.e22,'String'));rp=str2num(get(handles.e41,'String'));rs=str2num(get(handles.e42,'String')); Generate(handles);function FIRtype_Callback(hObject, eventdata, handles)global ch1;global ch2;global ch31;global ch32;ch32=get(hObject,'Value');function FIRtype_CreateFcn(hObject, eventdata, handles)if ispc&&isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); endfunction poptype_Callback(hObject, eventdata, handles)global ch1;global ch2;global ch31;global ch32;ch2=get(hObject,'Value');reprint(handles);function poptype_CreateFcn(hObject, eventdata, handles)if ispc&&isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); endfunction iirchoose_ButtonDownFcn(hObject, eventdata, handles)function firchoose_Callback(hObject, eventdata, handles)global ch1;global ch2;global ch31;global ch32;if(get(handles.firchoose,'Value')==0)set(handles.iirchoose,'Value',1);set(handles.FIRtype,'Visible','off');set(handles.IIRtype,'Visible','on');ch1=1;endif(get(handles.firchoose,'Value')==1)set(handles.iirchoose,'Value',0);set(handles.FIRtype,'Visible','on');set(handles.IIRtype,'Visible','off');ch1=2;endreprint(handles);function firchoose_ButtonDownFcn(hObject, eventdata, handles)function iirchoose_Callback(hObject, eventdata, handles)global ch1;global ch2;global ch31;global ch32;if(get(handles.iirchoose,'Value')==0)set(handles.firchoose,'Value',1);set(handles.FIRtype,'Visible','on');set(handles.IIRtype,'Visible','off');ch1=2;endif(get(handles.iirchoose,'Value')==1)set(handles.firchoose,'Value',0);set(handles.FIRtype,'Visible','off');set(handles.IIRtype,'Visible','on');ch1=1;endreprint(handles);function reprint(handles)global ch1;global ch2;global ch31;global ch32;temp=ch1*10+ch2;tempswitch tempcase {11,12}set(handles.add1,'Visible','off');set(handles.add2,'Visible','off');set(handles.e21,'Visible','off');set(handles.e22,'Visible','off');set(handles.pr,'Visible','on'); case{13,14}set(handles.add1,'Visible','on');set(handles.add2,'Visible','on');set(handles.e21,'Visible','on');set(handles.e22,'Visible','on');set(handles.pr,'Visible','on'); case{21,22},set(handles.add1,'Visible','off');set(handles.add2,'Visible','off');set(handles.e21,'Visible','off');set(handles.e22,'Visible','off');case{23,24},set(handles.add1,'Visible','on');set(handles.add2,'Visible','on');set(handles.e21,'Visible','on');set(handles.e22,'Visible','on');otherwisefprintf('switch error\n');endfunction Generate(handles)global ch1;global ch2;global ch31;global ch32;global typech;global w1p;global w1s;global w2p;global w2s;global rp;global rs;N=0;Wn=0;Wp=0;Wst=0;Rp=0;As=0;ftype='a';b=0;a=0;switch ch2case 1,ftype='low';case 2,ftype='high';case 3,ftype='bandpass';case 4,ftype='stop';endswitch ch2case {1,2}Wp=w1p;Wst=w1s;Rp=rp;As=rs;case {3,4}Wp=[w2p w1p];Wst=[w2s w1s];Rp=rp;As=rs;endswitch ch1 %IIR case 1,switch ch31case 1,[N,Wn]=buttord(Wp,Wst,Rp,As);[b,a]=butter(N,Wn,ftype); case 2,[N,Wn]=cheb1ord(Wp,Wst,Rp,As);[b,a]=cheby1(N,Rp,Wn,ftype);case 3,[N,Wn]=cheb2ord(Wp,Wst,Rp,As);[b,a]=cheby2(N,As,Wn,ftype); case 4,[N,Wn]=ellipord(Wp,Wst,Rp,As);[b,a]=ellip(N,Rp,As,Wn,ftype);endprint4(a,b,handles);case 2 %FIR tranbw=0;N=0;hw=0;Wn=(Wp+Wst)/2;switch ch32case 1, %Rectangular tranbw=1.8;N=ceil(tranbw/abs(w1s-w1p))+1;hw=boxcar(N);case 2, %Hanning tranbw=6.2;N=ceil(tranbw/abs(w1s-w1p))+1;hw=hanning(N);case 3, %Hamming tranbw=6.6;N=ceil(tranbw/abs(w1s-w1p))+1;hw=hamming(N);case 4, %Blackman tranbw=11;N=ceil(tranbw/abs(w1s-w1p))+1;hw=blackman(N);case 5, %KaiserN=(rs-7.95)/2.285/abs(w1s-w1p)+1;N=ceil(N);if (rs>=50)BTA=0.1102*(rs-8.7); elseif(rs>21)BTA=0.5842*(rs-21)^0.4+0.07886*(rs-21);elseBTA=0.5;endhw=kaiser(N,BTA);endh=fir1(N-1,Wn,ftype,hw');print4(h,N,handles);endfunction print4(a,b,handles)global ch1;if(ch1==1) %IIRw=[0:500]*pi/500;axes(handles.axes1);H=freqz(b,a,w);plot(handles.axes1,w/pi,abs(H)); xlabel('\Omega(\pi)');ylabel('|H(j\Omega)|');%axis ([0,0.5,0,1]);axes(handles.axes2);plot(handles.axes2,w/pi,20*log10((abs(H))/max(a bs(H))));xlabel('\Omega(\pi)');ylabel('|H(j\Omega)|,dB');% axis([0,0.5,-30,0]);axes(handles.axes3);plot(handles.axes3,w/pi,angle(H)/pi); xlabel('\Omega(\pi)');ylabel('Phase of H(j\Omega)(\pi)');%axis([0,0.5,-1,1]);t=0:30;axes(handles.axes4);h=impulse(b,a,t);stem(handles.axes4,t,h);xlabel('n');ylabel('Impulse Response');elseif(ch1==2) %FI RN=b;h=a;[H,w]=freqz(h,1);axes(handles.axes1);plot(handles.axes1,w/pi,abs(H)); xlabel('\Omega(\pi)');ylabel('|H(j\Omega)|');%axis ([0,0.5,0,1]);axes(handles.axes2);plot(handles.axes2,w/pi,20*log10((abs(H))/max(a bs(H))));xlabel('\Omega(\pi)');ylabel('|H(j\Omega)|,dB');% axis([0,0.5,-30,0]);axes(handles.axes3);plot(handles.axes3,w/pi,angle(H)/pi); xlabel('\Omega(\pi)');ylabel('Phase ofH(j\Omega)(\pi)');%axis([0,0.5,-1,1]);t=0:N-1;axes(handles.axes4);stem(handles.axes4,t,h);xlabel('n');ylabel('Impulse Response');end六、实验总结这次的数字信号处理实验非常有意义,让我学会了用计算机进行数字信号处理,计算各种参数,绘制出信号的波形,频谱。
北理工数字信号处理实验一
实验一基2-FFT算法实现
实验目的
1、掌握基2-FFT的原理及具体实现方法。
2、编程实现基2-FFT算法。
3、加深理解FFT算法的特点。
实验设备与环境
计算机、MATLAB软件环境
实验原理
FFT是一种DFT的高效算法,称为快速傅立叶变换(fast Fourier transform)。
FFT算法可分为按时间抽取算法和按频率抽取算法,先简要介绍FFT的基本原理。
从DFT运算开始,说明FFT的基本原理。
FFT算法基本上可以分为两大类,即按时间抽取法和按频率抽取法。
实验内容
1.编程实现序列长度N=8的按时间抽取的基2-FFT算法。
给定一个8点序列,采用编写的
程序计算其DFT,并与MATLAB中的fft函数计算的结果相比较,以验证结果的正确性。
结果如下:
验证如下:
2.编程实现序列长度为N=8的按频率抽取的基2-FFT算法。
给定一个8点序列,采用编写
的程序计算其DFT,并与MATLAB中fft函数计算的结果相比较,以验证结果的正确性。
心得与体会
通过本次实验,我加深了对课堂上所学的FFT运算的理解,掌握了如何用matlab实现基2-FFT 算法。
过程中在编程上有一些不熟练,经过老师同学的帮助,最终得以完成。
北京理工大学数字信号处理实验报告
本科实验报告实验名称: 数字信号处理实验实验1 利用DFT 分析信号频谱一、实验目的1.加深对DFT 原理的理解。
2.应用DFT 分析信号频谱。
3.深刻理解利用DFT 分析信号频谱的原理,分析现实过程现象及解决办法。
二、实验原理1、DFT 和DTFT 的关系有限长序列()x n 的离散时间傅里叶变换()j X e ω在频率区间(02)ωπ≤≤的N个等分点{(0),(1),(),(1)}x x x k x N-……上的N 个取样值可以由下式表示:2120()|()()01(21)N jkn j Nk k X e x n eX k k N πωωπ--====≤≤--∑由上式可知,序列()x n 的N 点DFT ()X k ,实际上就是()x n 序列的DTFT 在N 个等间隔频率点{(0),(1),(),(1)}X X X k X N -……上样本()X k 。
2、利用DFT 求DTFT方法1:由()X k 恢复出()j X eω的方法如图2.1所示:图 2.1.由 N 点DFT 恢复频谱DTFT 的流程由图2.1所示流程图可知:01()()()(22)j j nkn j n N n n k X e x n eX k W e N ωωω∞∞∞---=-∞=-∞=⎡⎤==-⎢⎥⎣⎦∑∑∑ 由式2-2可以得到12()()()(23)Nj k kx e X k N ωπφω==--∑其中()x φ为内插函数12sin()2()(24)sin()2N j N e N ωωφωω--=•-方法2:然而在实际MATLAB 计算中,上诉插值公式不见得是最好的方法。
由于DFT是DTFT 的取样值,其相邻的两个频率样本点的间距为2Nπ,所以如果我们增加数据的长度N ,使得得到的DFT 谱线就更加精细,其包络就越接近DTFT 的结果,这样可以利用DFT 来近似计算DTFT 。
如果没有更多的数据,可以通过补零来增加数据长度。
北理工信号实验报告
北理工信号实验报告1. 实验目的本实验旨在通过对北理工信号实验的探索与学习,加深对数字信号处理的理解。
具体目标如下:- 了解信号处理的基本概念和基本原理;- 掌握数字信号的模拟与数字转换方法;- 学会使用MATLAB进行信号处理实验。
2. 实验原理信号处理是对信号进行采样、量化和编码等操作,将连续的模拟信号转换成离散的数字信号的过程。
数字信号由一系列的采样值组成,这些采样值是模拟信号在离散时间点上的近似值。
数字信号的采样率和量化位数是决定信号质量的重要因素。
实验中采集的信号是通过模拟方式产生的,通过模拟-数字转换芯片将模拟信号转换为数字信号。
然后使用MATLAB对这些数字信号进行采样、量化、编码和解码等操作。
3. 实验内容本次实验进行了如下几个实验操作和内容:- 使用函数`sin`生成一个频率为1000Hz,振幅为2的正弦信号;- 将生成的信号进行采样操作,并绘制采样后的信号图像;- 对采样信号进行离散傅立叶变换,并绘制频谱图像;- 对频谱进行低通滤波,并绘制滤波后的频谱图像;- 对滤波后的信号进行解码,并绘制解码后的信号图像;4. 实验结果与分析通过实验,我们得到了以下结果和分析:首先,我们生成了频率为1000Hz,振幅为2的正弦信号,并进行了采样操作。
通过绘制采样后的信号图像,可以看到信号的周期性,但呈现离散的特点。
然后,我们对采样信号进行离散傅立叶变换,得到了频谱图像。
通过观察频谱图像,我们可以清晰地看到信号的频率信息。
在频谱图像中,频率为1000Hz的正弦信号对应的频率分量明显。
接下来,我们对频谱进行低通滤波,滤除高频分量。
通过绘制滤波后的频谱图像,可以观察到高频分量被滤除了,只保留了低频分量。
最后,我们对滤波后的信号进行解码,并绘制解码后的信号图像。
通过观察解码后的信号图像,我们可以看到滤波后的信号与原始信号比较接近。
解码过程可以还原数字信号为模拟信号,使得信号能够以连续的形式传输和显示。
北理工信号与系统实验报告
������������ ������ ������������ ������ 0 ������
������������ =
1 ������0
������(������)������ −������������ ������ 0 ������ ������������
������0
上述两式定义为周期信号复指数形式的傅里叶级数,系数 Ck 称为 x(t)的傅 里叶级数。周期信号的傅里叶级数还可以由三角函数的线性组合来表示,即
xlabel('n') title('y[n]') 程序运行结果如下:
x[n] 1 0.5 0 -0.5 -1 1 0.5 0 -0.5 -1 y[n] 4 h[n]
0
5
10 n
15
20
0
5
10 n
15
20
2
0
-2
0
5
10
15
20 n
25
30
35
40
7.已知两个连续时间信号,求两个信号的卷积。 程序如下: w1=2; w2=4; dt=0.01; t1=-2:dt:2; t2=-4:dt:4; x1=2*rectpuls(t1,w1) x2=rectpuls(t2,w2) x=conv(x1,x2); x=x*dt; t0=t1(1)+t2(1); t3=length(x1)+length(x2)-2; t=t0:dt:(t3*dt+t0); plot(t,x); axis([-4 4 -2 6]); xlabel('t'); title('x(t)'); 程序运行结果如下:
an y (n) (t ) an1 y (n1) (t ) a1 y ' (t ) a0 y(t ) bm x (m) (t ) bm1 x (m1) (t ) b1 x ' (t ) b0 x(t )
北京理工大学信号和系统实验报告材料
本科实验报告实验名称:信号与系统实验实验一信号的时域描述与运算一、实验目的①掌握信号的MATLAB表示及其可视化方法。
②掌握信号基本时域运算的MATLAB实现方法。
③利用MATLAB分析常用信号,加深对信号时域特性的理解。
二、实验原理与方法1. 连续时间信号的MATLAB表示连续时间信号指的是在连续时间范围内有定义的信号,即除了若干个不连续点外,在任何时刻信号都有定义。
在MATLAB中连续时间信号可以用两种方法来表示,即向量表示法和符号对象表示法。
从严格意义上来说,MATLAB并不能处理连续时间信号,在MATLAB中连续时间信号是用等时间间隔采样后的采样值来近似表示的,当采样间隔足够小时,这些采样值就可以很好地近似表示出连续时间信号,这种表示方法称为向量表示法。
表示一个连续时间信号需要使用两个向量,其中一个向量用于表示信号的时间范围,另一个向量表示连续时间信号在该时间范围内的采样值。
例如一个正弦信号可以表示如下:>> t=0:0.01:10; >> x=sin(t);利用plot(t,x)命令可以绘制上述信号的时域波形,如图1所示。
如果连续时间信号可以用表达式来描述,则还可以采用符号表达式來表示信号。
例如对于上述正弦信号,可以用符号对象表示如下:>> x=sin(t); >> ezplot(X);利用ezplot(x)命令可以绘制上述信号的时域波形常用的信号产生函数-1-0.8-0.6-0.4-0.200.20.40.60.81Time(seconds)图1 利用向量表示连续时间信号2.连续时间信号的时域运算对连续时间信号的运算包括两信号相加、相乘、微分、积分,以及位移、反转、尺度变换(尺度伸缩)等。
1)相加和相乘信号相加和相乘指两信号对应时刻的值相加和相乘,对于两个采用向量表示的可以直接使用算术运算的运算符“+”和“*”来计算,此时要求表示两信号的向量时间范围和采样间隔相同。
北京理工大学信号与系统实验报告4 LTI系统的频域分析
实验4 LTI 系统的频域分析(综合型实验)一、实验目的1) 加深对LTI 系统频率响应的基本概念的掌握和理解。
2) 学习和掌握LTI 系统频率特性的分析方法。
二、实验原理与方法1. 连续时间系统的频率响应系统的频率响应定义为系统单位冲击响应(t)h 的傅里叶变换,即()()ej H h d ωτωττ+∞--∞=⎰ (1)若LTI 连续时间系统的单位冲激响应为(t)h ,输入信号为(t)x ,根据系统的时域分析可知系统的零状态响应为(t)(t)*h(t)y x = (2)对上式两端分别求傅里叶变换,由时域卷积定理可得Y()X()H()ωωω= (3)因此系统的频率响应还可以由系统的零状态响应和输入的傅里叶变换之比得到:H()Y()/X()ωωω= (4)H()ω反映了LTI 连续时间系统对不同频率信号的响应特性,是系统内在的固有特性,与外部激励无关。
H()ω又可以表示成: ()H()|H()|ej θωωω= (5)其中|H()|ω成为系统的幅度响应,()θω成为系统的相位响应。
当虚指数信号e j tω作用LTI 系统时,系统的零状态响应(t)y 仍然是同频率的虚指数信号,即(t)e ()j t y H ωω= (6)由此还可以推导出正弦信号作用在系统上的响应如下表所示:对于下述微分方程描述的LTI 连续时间系统()(m)0(t)(t)NMn n m n m a yb x ===∑∑ (7)其频率响应(j )H ω可表示为(8)式所示的j ω的有理多项式。
11101110(j )(j )...j ()()()(j )(j )...j M M M M N N N N b b b b Y H X a a a a ωωωωωωωωω----++++==++++ (8) MATLAB 的信号处理工具箱提供了专门的函数freqs ,用来分析连续时间系统的频率响应,该函数有下列几种调用格式:[h,w]freqs(b,a)=计算默认频率范围内200个频率点上的频率响应的取样值,这200个频率点记录在w 中。
北京理工大学信号与系统实验报告1 信号的时域描述与运算
实验1 信号的时域描述与运算(基础型实验)一、实验目的1.掌握信号的MATLAB表示及其可视化方法。
2.掌握信号基本时域运算的MATLAB实现方法。
3.利用MATLAB分析常用信号,加深对信号时域特性的理解。
二、实验原理及方法1.连续时间信号的MATLAB表示连续时间信号在连续时间范围内除若干不连续点外在任何时刻都有定义,在MATLAB中的表示法包括向量表示法和符号对象表示法。
1)向量表示法MATLAB从严格意义上来说并不能处理连续时间信号,但可以通过等时间间隔采样后的采样值来近似表示,如果采样间隔足够小,则采样值就可以很好地近似表示出连续时间信号。
这种方法称为向量表示法。
表示一个连续时间信号需要用到两个向量,一个表示时间范围,另一个表示连续时间信号在相对应时间范围内的采样值。
2)符号对象表示法如果连续时间信号可以用表达式来描述,则可以采用符号对象表达法。
例:对于余弦信号,采用两种方式来表示:>> t=0:0.01:10;>> x=sin(t);>> subplot(121)>> plot(t,x)>> title('向量表示法')>> clear>> syms t>> x=sin(t);>> subplot(122)>> ezplot(x)>> title('符号对象表示法')符号对象表示法向量表示法2. 连续时间信号的时域运算连续时间信号的运算包括两信号相加、相乘、微分、积分,以及移位、反转、尺度变换等。
1) 相加和相乘信号的相加和相乘指两信号对应时刻值相加或相乘。
两个采用向量表示法的信号可以直接使用‘+’和‘*’进行运算,此时要求二者的向量时间范围以及采样间隔相同。
两个采用符号对象表示法的信号,可直接依据符号对象的运算规则运算。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
表格 2 doppler信号硬阈值与软阈值处理的比较
类型 项目
标准差std deviation 标准误差 std error
硬阈值处理
5.001
20.8414
软阈值处理
4.844
25.8745
2.分析 首先明确硬阈值处理与软阈值处理各自的特点。
对于硬阈值,绝对值超出阈值部分的分解系数直接 取其原值,这样的好处是能够较完整的保留原信号 的细节和局部信息,但造成的问题是会产生振铃或 者说是冲激。
附:实验代码及注释
第一题:
[bk,block_snr3]=wnoise(1,9,3);
% 产生
不同信噪比的512点含噪block信号。
[bk,block_snr5]=wnoise(1,9,5);
% 同时
产生原信号,存入bk。
[bk,block_snr7]=wnoise(1,9,7);
[dp,doppler_snr3]=wnoise(4,9,3); 同信噪比的512点含噪doppler信号。 [dp,doppler_snr5]=wnoise(4,9,5);
C_h=C(1:L(1)); 存放概貌系数向量 D_h=D; D_h(abs(D_h)<t)=0; 值处理
% 计算噪
% 硬阈值法 % C_h中
% 硬阈
for i=1:N C_h(num(i)+1:num(i+1))=D_h(Ni+1,1:L(i+1)); % 把各级的 细节系数 向量D(i) 依次存入 C_h向量
其次,分析blocks图形。软阈值处理后的图形确 实看上去更加平滑。具体体现在50~100点、 200~250点、350~400点区间内,硬阈值处理有多 处较为明显的冲激,然而在软阈值处理图形的相应 位置,要么没有冲激,要么冲激幅度显著减小。硬 阈值处理的棱角更加分明。其原因是前面分析过的 硬阈值可以保留更多的细节信息。
当我们进行阈值处理时,随着分解级数的增加, 将会丢失更多的细节分量(高频)中的信息,而最终的 中的概貌分量对应的频率范围也越低。这样的后果
是:虽然得到的信号更加平滑,但我们将损失更多
的细节!
其次,观察波形。对blocks信号而言,明显能看
出5级分解处理后的信号更平滑。对于doppler信号
而言5及分解处理后的波形在高频处明显较模糊,并
对于软阈值处理,绝对值超出阈值的部分要和阈 值相减,相当于让超出阈值不多的分解系数趋于零 值,或者说是对取阈值后的分解系数又进行了一次 处理。这样的优点在于使处理后的分解系数有较好 的连续性,能减弱离散“冲激”的幅度,增加了信 号的平滑程度。但其缺点也很明显:大幅值系数的 处理与小波分解的目的相悖。具体而言就是小波分 解的目的就是吧噪声和有用信号通过幅度的不同区 分开来,并且认为幅度越大,越可能是有用信号(这 也是阈值处理的依据),按照这样的标准,大幅值的 分解系数应当得到完整的保留,而不应该与阈值t做 减法。因此软阈值处理会损失部分有用信号,从而 造成信号的误差增大。
综上,建议在信号幅度变化较大,且小幅度信号 也同样重要时(时小时大),采用硬处理,从而较完整 地保留小幅度部分的信息;而在不太重视小幅度信 号时可以考虑用软处理,以得到更平滑的波形。
三、当SQRT_SNR 参数值分别设为3、5和7时,对加
噪后的信号进行3级的小波分解,采用软阈值处理方法, 比较不同信噪比情况下的去噪效果。 1.实验结果
% 产生不
[dp,doppler_snr7]=wnoise(4,9,7);
subplot(221);plot(bk);title('原信号');axis tight; subplot(222);plot(block_snr3);title('SNR = 9');axis tight; subplot(223);plot(block_snr5);title('SNR = 25');axis tight; subplot(224);plot(block_snr7);title('SNR = 49');axis tight;
项目
表格 3 三种信噪比下的阈值对比
信噪比
SNR=9
SNR=25
阈值
3.5
3.7
噪声标准差
1.05
1.15
注:该表数据是通过运行十次相同程序得到的统计平均值。
SNR=49 4.1 1.23
2.分析 观察上图,不难看出信噪比越大,处理后的信号
整体上越接近原信号。为了更好的分析实验现象,
对三种信噪比下的阈值如上表所示,SNR越大,相 对于噪声而言阈值也相应越高,从而对噪声的分解 系数具有更好的滤除作用。
总而言之,从blocks和doppler函数的原信号与 三种信噪比信号对比图中看出,信噪比越高,含噪 信号的波形就与原波形越接近,换句话说噪声对于 信号的影响就越小。
二、当SQRT_SNR 参数值设为5 时,对加噪后的信号
进行3 级的小波分解,对小波系数进行硬阈值和软阈值处 理,比较软硬阈值处理的结果。 1.实验结果
n_h=bk-block_hard; 两种方法的标准误差。 err_h=sqrt(sum(n_h.^2)); n_s=bk-block_soft; e_s=sqrt(sum(n_s.^2));
% 比较
第三题: 只须改变第二题代码中wnoise中 的‘SQRT_SNR’参数,然后采用软阈值法即可。
第四题: 只须改变第二题代码中分解级数N即可。
且阶梯的幅度更大。
综上,建议对低频分量较多的信号可适当提高分
解的级数,以提升平滑程度;但对于高频分量多的
信号要用适当低的分解级数,已保留细节信息。
五、总结
1. 信噪比越高,含噪信号的波形就与原波形越接
近,即噪声对于信号的影响就越小。(通过第一题得
出)
2. 信噪比越大,处理后的信号整体上越接近原信
号。(通过第3题得出)
Image
类型项目
表格 1 blocks信号硬阈值和软阈值处理的比较
标准差std deviation
标准误差 std error
硬阈值处 理
5.049
11.7867
软阈值处 理
4.82
18.9646
注:标准差从MATLAB中figure界面数据分析工具中直接读取;标准误差为 编程计算所得 (后同)。
第二题:
N=3;
% 分解级
数为3
[bk,block_snr5]=wnoise(1,9,5);
%
SNR=5^2=25,512点
[C,L]=wavedec(block_snr5,N,'haar');%
用’haar’函数进行小波分解
num=zeros(1,N+1);
num(1)=L(1);
for i=2:N+1
blocks信号在高信噪比情况下,处理后的图形明 显更平滑,也更接近原波形的轮廓。对于doppler信 号,高频、小幅度部分区别最为明显,SNR=49的 图形显然保留了更完整的高频、小幅度信息。
Image
Image
四、当SQRT_SNR 参数值设为5时,采用软阈值处
理,分别对加噪后的信号进行3级的小波分解和5级小波 分解,比较不同小波分解级数下的信号去噪效果。
end block_hard = waverec(C_h,L,'Haar'); % 用 C_h向量及’haar’小波重建信号。
% 软阈值法
D_s=D;
D_s(abs(D)<t)=0;
% 第一
步:对系数中的较小值处理
sgn=D_s;
% 根据第
一步的处理结果(这一点很重要),构造符号矩阵。
sgn(sgn>0)=1;
% 绘制处理 前信号、硬阈值处理后、软阈值处理后信号 subplot(311);plot(block_snr5);axis tight;title('signal of snr=25') subplot(312);plot(block_hard);axis tight;title('signal of hard-threshold'); subplot(313);plot(block_soft);axis tight;title('signal of soft-threshold');
另外分析表格中的数据可知,软处理比硬处理的 方差小,即更平滑;但硬处理的误差小于软处理,
也和上面的分析相符,在此不再赘述。 最后,分析doppler图形 。与blocks的情况大致
相同,软处理的线条更平滑,相应地其方差更小, 但误差稍大;硬处理虽然方差大,但是较好的保留 了doppler曲线小幅度(起始处)部分的信息。
特点,对每一个信号,进行如下处理:
一、产生信号的长度为512点,给信号加上不同信噪
比的噪声,即把wnoise 中的SQRT_SNR 参数值分别设
为3、5和7,观察在不同信噪比情况下,有噪信号的特
点。
Image
1.实验
结果
Image
2.分析: 单独地,对于blocks信号而言,信噪比很低
时“平台”部分受到噪声的污染很严重,原本十分 平坦的部分变得起伏很明显;对doppler信号的波形 而言,高的信噪比尤其能使信号的高频部分可分辨 程度提高。
figure(2); subplot(221);plot(dp);axis tight;title('原信 号'); subplot(222);plot(doppler_snr3);axis tight;title('SNR = 9'); subplot(223);plot(doppler_snr5);axis tight;title('SNR = 25'); subplot(224);plot(doppler_snr7);axis tight;title('SNR = 49');