北京理工大学数字信号处理实验报告
数字信号处理实验报告
![数字信号处理实验报告](https://img.taocdn.com/s3/m/a44dcd3aeef9aef8941ea76e58fafab069dc44e7.png)
实验一 信号、系统及系统响应一、实验目的1、熟悉理想采样的性质,了解信号采样前后的频谱变化,加深对时域采样定理的理解。
2、熟悉离散信号和系统的时域特性。
3、熟悉线性卷积的计算编程方法:利用卷积的方法,观察、分析系统响应的时域特性。
4、掌握序列傅里叶变换的计算机实现方法,利用序列的傅里叶变换对离散信号、系统及其系统响应进行频域分析。
二、 实验原理1.理想采样序列:对信号x a (t)=A e −αt sin(Ω0t )u(t)进行理想采样,可以得到一个理想的采样信号序列x a (t)=A e −αt sin(Ω0nT ),0≤n ≤50,其中A 为幅度因子,α是衰减因子,Ω0是频率,T 是采样周期。
2.对一个连续时间信号x a (t)进行理想采样可以表示为该信号与一个周期冲激脉冲的乘积,即x ̂a (t)= x a (t)M(t),其中x ̂a (t)是连续信号x a (t)的理想采样;M(t)是周期冲激M(t)=∑δ+∞−∞(t-nT)=1T ∑e jm Ωs t +∞−∞,其中T 为采样周期,Ωs =2π/T 是采样角频率。
信号理想采样的傅里叶变换为X ̂a (j Ω)=1T ∑X a +∞−∞[j(Ω−k Ωs )],由此式可知:信号理想采样后的频谱是原信号频谱的周期延拓,其延拓周期为Ωs =2π/T 。
根据时域采样定理,如果原信号是带限信号,且采样频率高于原信号最高频率分量的2倍,则采样以后不会发生频率混叠现象。
三、简明步骤产生理想采样信号序列x a (n),使A=444.128,α=50√2π,Ω0=50√2π。
(1) 首先选用采样频率为1000HZ ,T=1/1000,观察所得理想采样信号的幅频特性,在折叠频率以内和给定的理想幅频特性无明显差异,并做记录;(2) 改变采样频率为300HZ ,T=1/300,观察所得到的频谱特性曲线的变化,并做记录;(3) 进一步减小采样频率为200HZ ,T=1/200,观察频谱混淆现象是否明显存在,说明原因,并记录这时候的幅频特性曲线。
北京理工大学信号与系统实验报告材料3信号的频域分析报告.doc
![北京理工大学信号与系统实验报告材料3信号的频域分析报告.doc](https://img.taocdn.com/s3/m/ff5b72af0508763230121248.png)
标准实验 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,频域变量为。
北京理工大学高级数字信号处理实验报告
![北京理工大学高级数字信号处理实验报告](https://img.taocdn.com/s3/m/b98f4d292f60ddccda38a0ed.png)
高级数字信号处理实验报告实验名称:基于小波变换的信号去噪实验实验时间: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.分析首先明确硬阈值处理与软阈值处理各自的特点。
数字信号处理实验报告
![数字信号处理实验报告](https://img.taocdn.com/s3/m/e459d2861b37f111f18583d049649b6648d70924.png)
数字信号处理实验报告引言数字信号处理(Digital Signal Processing,DSP)是一门研究数字信号的获取、分析、处理和控制的学科。
在现代科技发展中,数字信号处理在通信、图像处理、音频处理等领域起着重要的作用。
本次实验旨在通过实际操作,深入了解数字信号处理的基本原理和实践技巧。
实验一:离散时间信号的生成与显示在实验开始之前,我们首先需要了解信号的生成与显示方法。
通过数字信号处理器(Digital Signal Processor,DSP)可以轻松生成和显示各种类型的离散时间信号。
实验设置如下:1. 设置采样频率为8kHz。
2. 生成一个正弦信号:频率为1kHz,振幅为1。
3. 生成一个方波信号:频率为1kHz,振幅为1。
4. 将生成的信号通过DAC(Digital-to-Analog Converter)输出到示波器上进行显示。
实验结果如下图所示:(插入示波器显示的正弦信号和方波信号的图片)实验分析:通过示波器的显示结果可以看出,正弦信号在时域上呈现周期性的波形,而方波信号则具有稳定的上下跳变。
这体现了正弦信号和方波信号在时域上的不同特征。
实验二:信号的采样和重构在数字信号处理中,信号的采样是将连续时间信号转化为离散时间信号的过程,信号的重构则是将离散时间信号还原为连续时间信号的过程。
在实际应用中,信号的采样和重构对信号处理的准确性至关重要。
实验设置如下:1. 生成一个正弦信号:频率为1kHz,振幅为1。
2. 设置采样频率为8kHz。
3. 对正弦信号进行采样,得到离散时间信号。
4. 对离散时间信号进行重构,得到连续时间信号。
5. 将重构的信号通过DAC输出到示波器上进行显示。
实验结果如下图所示:(插入示波器显示的连续时间信号和重构信号的图片)实验分析:通过示波器的显示结果可以看出,重构的信号与原信号非常接近,并且能够还原出原信号的形状和特征。
这说明信号的采样和重构方法对于信号处理的准确性有着重要影响。
数字信号处理实验报告
![数字信号处理实验报告](https://img.taocdn.com/s3/m/3650775817fc700abb68a98271fe910ef12dae94.png)
数字信号处理实验报告一、实验目的本次数字信号处理实验的主要目的是通过实际操作和观察,深入理解数字信号处理的基本概念和方法,掌握数字信号的采集、处理和分析技术,并能够运用所学知识解决实际问题。
二、实验设备与环境1、计算机一台,安装有 MATLAB 软件。
2、数据采集卡。
三、实验原理1、数字信号的表示与采样数字信号是在时间和幅度上都离散的信号,可以用数字序列来表示。
在采样过程中,根据奈奎斯特采样定理,为了能够准确地恢复原始信号,采样频率必须大于信号最高频率的两倍。
2、离散傅里叶变换(DFT)DFT 是将时域离散信号变换到频域的一种方法。
通过 DFT,可以得到信号的频谱特性,从而分析信号的频率成分。
3、数字滤波器数字滤波器是对数字信号进行滤波处理的系统,分为有限冲激响应(FIR)滤波器和无限冲激响应(IIR)滤波器。
FIR 滤波器具有线性相位特性,而 IIR 滤波器则在性能和实现复杂度上有一定的优势。
四、实验内容与步骤1、信号的采集与生成使用数据采集卡采集一段音频信号,或者在 MATLAB 中生成一个模拟信号,如正弦波、方波等。
2、信号的采样与重构对采集或生成的信号进行采样,然后通过插值算法重构原始信号,观察采样频率对重构信号质量的影响。
3、离散傅里叶变换对采样后的信号进行DFT 变换,得到其频谱,并分析频谱的特点。
4、数字滤波器的设计与实现(1)设计一个低通 FIR 滤波器,截止频率为给定值,观察滤波前后信号的频谱变化。
(2)设计一个高通 IIR 滤波器,截止频率为给定值,比较滤波前后信号的时域和频域特性。
五、实验结果与分析1、信号的采集与生成成功采集到一段音频信号,并在MATLAB 中生成了各种模拟信号,如正弦波、方波等。
通过观察这些信号的时域波形,对不同类型信号的特点有了直观的认识。
2、信号的采样与重构当采样频率足够高时,重构的信号能够较好地恢复原始信号的形状;当采样频率低于奈奎斯特频率时,重构信号出现了失真和混叠现象。
数字信号实验报告二,北京理工大学,实验报告
![数字信号实验报告二,北京理工大学,实验报告](https://img.taocdn.com/s3/m/35048e4d69eae009581bec17.png)
实验三利用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个样本,连接剩下样本,得到卷积结果。
北京理工大学信号与系统实验实验报告
![北京理工大学信号与系统实验实验报告](https://img.taocdn.com/s3/m/ace6f47c0722192e4436f648.png)
北京理工大学信号与系统实验实验报告信号与系统实验报告姓名:肖枫学号:1120111431班号:05611102专业:信息对抗技术学院:信息与电子学院12实验1 信号的时域描述与运算一、实验目的1. 掌握信号的MATLAB表示及其可视化方法。
2. 掌握信号基本时域运算的MATLAB实现方法。
3. 利用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)命令可以绘制上述信号的时域波形10.80.60.40.2-0.2-0.4-0.6-0.8-1012345678910Time(seconds)图1 利用向量表示连续时间信号3sin(t)10.5-0.5-1-6-4-20246t图 2 利用符号对象表示连续时间信号常用的信号产生函数函数名功能函数名功能 heaviside 单位阶跃函数 rectpuls 门函数 sin 正弦函数 tripuls 三角脉冲函数 cos 余弦函数 square 周期方波 sinc sinc函数 sawtooth 周期锯齿波或三角波 exp 指数函数2.连续时间信号的时域运算对连续时间信号的运算包括两信号相加、相乘、微分、积分,以及位移、反转、尺度变换(尺度伸缩)等。
数字信号处理实验报告完整版[5篇模版]
![数字信号处理实验报告完整版[5篇模版]](https://img.taocdn.com/s3/m/7b21a71bb5daa58da0116c175f0e7cd184251866.png)
数字信号处理实验报告完整版[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中的绘图工具对产生的信号进行观察,加深对常用离散信号和信号卷积和运算的理解。
北理工大学数字信号处理实验报告
![北理工大学数字信号处理实验报告](https://img.taocdn.com/s3/m/ce17989327284b73f3425028.png)
实验1利用DFT分析信号频谱一、实验目的1.加深对DFT原理的理解。
2.应用DFT分析信号的频谱。
3.深刻理解利用DFT分析信号频谱的原理,分析实现过程中出现的现象与解决方法。
二、实验设备与环境计算机、MATLAB软件环境。
三、实验原理1. DFT与 DTFT的关系有限长序列的离散时间傅里叶变换在频率区间的N个等间隔分布的点上的N个取样值可以由下式表示:由上式可知,序列x(n)的N 点DFT X(k),实际上就是x(n)序列的DTFT在N 个等间隔频率点上样本X(k)。
2. 利用DFT 求DTFT法一:由X (k)恢复出的方法:法二:然而在实际 MATLAB计算中,上述插值运算不见得是最好的办法。
由于DFT是 DTFT 的取样值,其相邻两个频率样本点的间距为2/N,所以如果我们增加数据的长度N,使得到的DFT谱线就更加精细,其包络就越接近DTFT的结果,这样就可以利用DFT来近似计算DTFT。
如果没有更多的数据,可以通过补零来增加数据长度。
3.利用DFT分析连续时间信号的频谱采用计算机分析连续时间信号的频谱,第一步就是把连续时间信号离散化,这里需要进行两个操作:一是采样,二是截断。
将利用DFT分析连续非周期信号频谱的步骤归纳如下:(1)确定时域采样间隔T,得到离散序列x(n);(2)确定截取长度M,得到M点离散序列,这里为窗函数。
(3)确定频域采样点数N,要求。
(4)利用FFT计算离散序列的N点DFT,得到。
(5)根据式(2-6)由计算采样点的近似值。
采用上述方法计算的频谱,需要注意如下三个问题:(1)频谱混叠。
如果不满足采样定理的条件,频谱会出现混叠误差。
对于频谱无限宽的信号,应考虑覆盖大部分主要频率分量的围。
(2)栅栏效应和频谱分辨率。
使用DFT计算频谱,得到的结果只是N个频谱本值,样本值之间的频谱是未知的,像通过一个栅栏观察频谱,称为“栅栏效应”。
频谱分辨率与记录长度成反比,要提高频谱分表率,就要增加记录时间。
北京理工大学信号与系统实验报告8 调制与解调
![北京理工大学信号与系统实验报告8 调制与解调](https://img.taocdn.com/s3/m/cbafc4cb2cc58bd63186bdd0.png)
实验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 都提供了强大功能用于滤波器的设计。
数字信号处理实验报告
![数字信号处理实验报告](https://img.taocdn.com/s3/m/c51a96b7d5d8d15abe23482fb4daa58da0111c1e.png)
数字信号处理实验报告
数字信号处理是指利用数字技术对模拟信号进行采样、量化、编码等处理后,再通过数字信号处理器进行数字化处理的技术。
在数字信号处理实验中,我们通过对数字信号进行滤波、变换、解调等处理,来实现信号的处理和分析。
在实验中,我们首先进行了数字信号采集和处理的基础实验,采集了包括正弦信号、方波信号、三角波信号等在内的多种信号,并进行了采样、量化、编码等处理。
通过这些处理,我们可以将模拟信号转换为数字信号,并对其进行后续处理。
接着,我们进行了数字信号滤波的实验。
滤波是指通过滤波器对数字信号进行处理,去除其中的噪声、干扰信号等不需要的部分,使其更加纯净、准确。
在实验中,我们使用了低通滤波器、高通滤波器、带通滤波器等多种滤波器进行数字信号滤波处理,得到了更加干净、准确的信号。
除了滤波,我们还进行了数字信号变换的实验。
数字信号变换是指将数字信号转换为另一种表示形式的技术,可以将信号从时域转换到频域,或者从离散域转换到连续域。
在实验中,我们使用了傅里叶变换、离散傅里叶变换等多种变换方式,对数字信号进行了变换处理,得到了信号的频谱信息和其他相关参数。
我们进行了数字信号解调的实验。
数字信号解调是指将数字信号转换为模拟信号的技术,可以将数字信号还原为原始信号,并进行后续处理。
在实验中,我们使用了频率解调、相干解调等多种解调方式,将数字信号转换为模拟信号,并对其进行了分析和处理。
总的来说,数字信号处理实验是一项非常重要的实验,可以帮助我们更好地理解数字信号处理的原理和方法,为我们今后从事相关领域的研究和工作打下坚实的基础。
数字信号处理实验报告11-12-10
![数字信号处理实验报告11-12-10](https://img.taocdn.com/s3/m/485f02ef6294dd88d0d26b95.png)
《数字信号处理》实验报告专业学号姓名实验一 利用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 ==。
北京理工大学 数字信号处理 实验报告 程序
![北京理工大学 数字信号处理 实验报告 程序](https://img.taocdn.com/s3/m/ff6939cf89eb172ded63b749.png)
数字信号处理实验报告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六、实验总结这次的数字信号处理实验非常有意义,让我学会了用计算机进行数字信号处理,计算各种参数,绘制出信号的波形,频谱。
北理工数字信号处理实验一
![北理工数字信号处理实验一](https://img.taocdn.com/s3/m/7227550ba6c30c2259019e42.png)
实验一基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 算法。
过程中在编程上有一些不熟练,经过老师同学的帮助,最终得以完成。
北京理工大学信号与系统实验报告
![北京理工大学信号与系统实验报告](https://img.taocdn.com/s3/m/40f5692865ce05087732132e.png)
实验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为积分区间。
北理工信号实验报告
![北理工信号实验报告](https://img.taocdn.com/s3/m/30c1a54377c66137ee06eff9aef8941ea76e4b2f.png)
北理工信号实验报告1. 实验目的本实验旨在通过对北理工信号实验的探索与学习,加深对数字信号处理的理解。
具体目标如下:- 了解信号处理的基本概念和基本原理;- 掌握数字信号的模拟与数字转换方法;- 学会使用MATLAB进行信号处理实验。
2. 实验原理信号处理是对信号进行采样、量化和编码等操作,将连续的模拟信号转换成离散的数字信号的过程。
数字信号由一系列的采样值组成,这些采样值是模拟信号在离散时间点上的近似值。
数字信号的采样率和量化位数是决定信号质量的重要因素。
实验中采集的信号是通过模拟方式产生的,通过模拟-数字转换芯片将模拟信号转换为数字信号。
然后使用MATLAB对这些数字信号进行采样、量化、编码和解码等操作。
3. 实验内容本次实验进行了如下几个实验操作和内容:- 使用函数`sin`生成一个频率为1000Hz,振幅为2的正弦信号;- 将生成的信号进行采样操作,并绘制采样后的信号图像;- 对采样信号进行离散傅立叶变换,并绘制频谱图像;- 对频谱进行低通滤波,并绘制滤波后的频谱图像;- 对滤波后的信号进行解码,并绘制解码后的信号图像;4. 实验结果与分析通过实验,我们得到了以下结果和分析:首先,我们生成了频率为1000Hz,振幅为2的正弦信号,并进行了采样操作。
通过绘制采样后的信号图像,可以看到信号的周期性,但呈现离散的特点。
然后,我们对采样信号进行离散傅立叶变换,得到了频谱图像。
通过观察频谱图像,我们可以清晰地看到信号的频率信息。
在频谱图像中,频率为1000Hz的正弦信号对应的频率分量明显。
接下来,我们对频谱进行低通滤波,滤除高频分量。
通过绘制滤波后的频谱图像,可以观察到高频分量被滤除了,只保留了低频分量。
最后,我们对滤波后的信号进行解码,并绘制解码后的信号图像。
通过观察解码后的信号图像,我们可以看到滤波后的信号与原始信号比较接近。
解码过程可以还原数字信号为模拟信号,使得信号能够以连续的形式传输和显示。
北理工信号与系统实验报告
![北理工信号与系统实验报告](https://img.taocdn.com/s3/m/fde65e3f67ec102de2bd89c1.png)
������������ ������ ������������ ������ 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 )
北京理工大学信号和系统实验报告材料
![北京理工大学信号和系统实验报告材料](https://img.taocdn.com/s3/m/ce115d24caaedd3383c4d3db.png)
本科实验报告实验名称:信号与系统实验实验一信号的时域描述与运算一、实验目的①掌握信号的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系统的频域分析](https://img.taocdn.com/s3/m/c8329d12fad6195f312ba6d6.png)
实验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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本科实验报告实验名称:数字信号处理实验实验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 。
如果没有更多的数据,可以通过补零来增加数据长度。
3、利用DFT 分析连续时间信号的频谱 采用计算机分析连续时间信号的频谱,第一步就是把连续时间信号离散化,这里需要进行连个操作:一是采样,二是截断。
对于连续非周期信号()x t α,按采样间隔T 进行采样,截取长度为M ,那么1()()()(25)M j tj nTn X j x t edt T x nT e ααα-+∞-Ω-Ω-∞=Ω==-∑⎰对()X j αΩ进行N 点的频率采样,得到2120()|()()(26)M jkn NM kn NTX j T x nT eTX k παπα--Ω==Ω==-∑因此,可以将利用DFT 分析连续非周期信号频谱的步骤归纳如下: (1)确定时域采样间隔T ,得到离散序列()x n ; (2)确定截取长度M ,得到M 点离散序列()()()M x n x n w n =,这里的()w n 为窗函数。
(3)确定频域采样点数N ,要求NM ≥。
(4)利用FFT 计算离散序列的N 点DFT ,得到()M X k 。
(5)根据式(2-6)由()M X k 计算()X j αΩ采样点的近似值。
采用上诉方法计算的频谱,需要注意如下三点问题:(1)频谱混叠。
如果不满足采样定理的条件,频谱会很出现混叠误差。
对于频谱无限宽的信号,应考虑覆盖大部分主要频率的范围。
(2)栅栏效应和频谱分辨率。
使用DFT 计算频谱,得到的结果只是N 个频谱样本值,样本值之间的频谱是未知的,就像通过一个栅栏观察频谱,称为“栅栏效应”。
频谱分辨率与记录长度成正比,提高频谱分辨率,就要增加记录时间。
(3)频谱泄露。
对于信号截断会把窗函数的频谱会引入到信号频谱中,造成频谱泄露。
解决这问题的主要办法是采用旁瓣小的窗函数,频谱泄露和窗函数均会引起误差。
因此,要合理选取采样间隔和截取长度,必要时还需考虑适当的窗。
对于连续周期信号,我们在采用计算机进行计算时,也总是要进行截断,序列总是有限长的,仍然可以采用上诉方法近似计算。
4、可能用到MATLAB 函数与代码实验中的DFT 运算可以采用MATLAB 中提供的FFT 来实现。
DTFT 可以利用MATLAB 矩阵运算的方法进行计算。
三、实验内容1. (){2,1,1,1}x n =-,完成如下要求:(1)计算其DTFT ,并画出[,]ππ-区间的波形。
(2)计算4 点DFT ,并把结果显示在(1)所画的图形中。
(3)对()x n 补零,计算64 点DFT ,并显示结果。
(4)是否可以由DFT 计算DTFT ,如果可以,请编程实现。
2. 考察序列()cos(0.48)cos(0.52)x n n n ππ=+(1)010n ≤≤时,用DFT 估计()x n 的频谱;将()x n 补零加长到长度为100点序列用DFT 估计()x n 的频谱。
要求画出相应波形。
(2)0100n ≤≤时,用DFT 估计x(n)的频谱,并画出波形。
3. 已知信号123()0.15sin(2)sin(2)0.1sin(2)x t f t f t f t πππ=+- ,其中11f Hz =,22f Hz =,33f Hz =。
从()x t 的表达式可以看出,它包含三个频率的正弦波,但是,从其时域波形来看,似乎是一个正弦信号,利用DFT 做频谱分析,确定适合的参数,使得到的频谱的频率分辨率符合需要。
4.利用DFT 近似分析连续时间信号x (t )=e −0.1t u(t)的频谱(幅度谱)。
分析采用不同的采样间隔和截取长度进行计算的结果,并最终确定合适的参数。
四、实验代码及实验结果 实验1.1.1 实验结果:实验代码:>> n=0:3;>> x=[2 -1 1 1];>> w=-pi:0.01*pi:pi;>> X=x*exp(-j*n'*w);>> subplot(211);>> plot(w,abs(X));>> title('幅度');xlabel('w');ylabel('|X|');>> axis tight;>> subplot(212);>> plot(w,angle(X));>> title('相位');xlabel('w');ylabel('Angle(X)'); >> axis tight;实验1.1.2实验结果:实验代码:n=0:3;x=[2 -1 1 1];w=-pi:0.01*pi:pi;X=x*exp(-j*n'*w);subplot(211);plot(w,abs(X));title('幅度');xlabel('w');ylabel('|X|');axis tight;hold on;subplot(212);plot(w,angle(X));title('相位');xlabel('w');ylabel('Angle(X)');axis tight;hold on;H=fft(x);subplot(211);>> stem(n,abs(H),'filled');>> subplot(212);>> stem(n,angle(H),'filled');实验1.1.3实验结果:实验代码:>> x=[2 -1 1 1 zeros(1,60)];>> X=fft(x);>> subplot(211);>> n=0:63;>> stem(n,abs(X),'filled');>> title('幅度');xlabel('n');ylabel('|X|');>> subplot(212);>> stem(n,angle(X),'filled');title('相位');xlabel('n');ylabel('angle(X)');分析:可以由DFT计算DTFT。
通过补零加长序列,提高采样密度,可以由DFT近似计算DTFT。
实验1.2.1实验结果:实验代码:n=0:10;x=cos(0.48*n*pi)+cos(0.52*n*pi);X=fft(x);subplot(211);stem(n,abs(X),'filled');title('幅度');xlabel('n');ylabel('|X|');subplot(212);stem(n,angle(X),'filled');title('相位');xlabel('n');ylabel('angle(X)');补零加长:实验结果:实验代码:h=[x zeros(1,89)];H=fft(h);n=0:99;subplot(211);stem(n,abs(H),'filled');title('幅度');xlabel('n');ylabel('|H|');subplot(212);stem(n,angle(H),'filled');title('相位');xlabel('n');ylabel('angle(H)');实验1.2.2实验结果:实验代码:n=0:100;>> x=cos(0.48*n*pi)+cos(0.52*n*pi);>> X=fft(x);>> subplot(211);stem(n,abs(X),'filled');title('幅度');xlabel('n');ylabel('|X|');subplot(212);stem(n,angle(X),'filled');title('相位');xlabel('n');ylabel('angle(X)');分析:可以通过增大截取长度和增加补零的个数来提高频谱分辨率,但是补零不能够增加分辨力。