数字信号实验报告二,北京理工大学,实验报告

合集下载

北京理工大学高级数字信号处理实验报告

北京理工大学高级数字信号处理实验报告

高级数字信号处理实验报告实验名称:基于小波变换的信号去噪实验实验时间: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.分析首先明确硬阈值处理与软阈值处理各自的特点。

北理工信号与系统实验(2)

北理工信号与系统实验(2)

实验2 LTI 系统的时域分析一、 实验目的1. 掌握利用MATLAB 对系统进行时域分析的方法2. 掌握连续时间系统零状态响应、冲激响应和阶跃响应的求解方法3. 掌握求解离散时间系统响应、单位抽样响应的方法4. 加深对卷积积分和卷积和的理解。

掌握利用计算机进行卷积积分和卷积和计算的方法二、 实验原理与方法1. 连续时间系统时域分析的MATLAB 实现 1) 连续时间系统的MA TLAB 表示LTI 连续系统通常可以由系统微分方程描述,设描述系统的微分方程为:(N)(N 1)(N)(M 1)1010a (t)a (t)...a (t)b (t)b (t)...b (t)N N M M y y y x x x ----++=++则在MA TLAB里,可以建立系统模型如下:10b [b ,b ,...,b ]M M -=;10a=[a ,a ,...,a ]N N -;sys tf (b,a)=;其中,tf 是用于创建系统模型的函数,向量a 与b 的元素是以微分方程求导的降幂次序来排列的,如果有缺项,应用0补齐。

2) 连续时间系统的零状态响应零状态响应指系统的初始状态为零,仅由输入信号所引起的响应。

MATLAB 提供了一个用于求解零状态响应的函数lsim ,其调用格式如下:(sys,x,t)lsim 绘出输入信号及响应的波形,x 和t 表示输入信号数值向量及其时间向量。

(sys,x,t)y lsim =这种调用格式不会绘出波形,而是返回响应的数值向量。

3) 连续时间系统的冲激响应与阶跃响应MATLAB 中函数impulse 来求指定时间范围内,由模型sys 描述的连续时间系统的单位冲激响应。

2. 离散时间系统时域分析的MATLAB 实现 1) 离散时间系统的MA TLAB 表示LTI 离散时间系统通常可以由系统差分方程描述,设描述系统的差分方程为:0101a (n)a (n 1)...a (n M)b x(n)b x(n 1)...b x(n )N M y y y N +-+-=+-+-则在MATLAB中,可以用如下向量来表示这个系统:01b [b ,b ,...,b ]M =;01a [a ,a ,...,a ]N =;2) 离散时间系统对任意输入的响应MATLAB 提供了求LTI 离散系统响应的专用函数filter ,该函数用于求取由差分方程所描述的离散时间系统在指定时间范围内对输入序列所产生的响应,该函数基本调用格式为(b,a,x)y filter =其中,x 为输入序列,y 为输出序列,输出序列y 对应的时间区间与x 对应的时间区间相同。

北京理工大学微机原理实验报告二

北京理工大学微机原理实验报告二

本科实验报告实验名称:利用中断方式设计数字时钟课程名称:实验时间:任课教师:实验地点:实验教师:实验类型:□原理验证■综合设计□自主创新学生姓名:学号/班级:组号:学院:同组搭档:专业:成绩:实验二利用中断方式设计数字时钟一、实验目的1、掌握PC 机中断处理系统的基本原理。

2、熟悉定时/计数器8254 工作原理及其编程方法。

3、利用实验板上的8254 定时器为中断源发中断申请,中断请求用IRQ3(系统总线区的IRQ)。

4、熟悉数码管显示原理,掌握数码管显示接口技术。

5、学习数字时钟原理,实现数字时钟。

6、掌握中断控制器8259 管理。

二、实验内容与步骤接线:三、实验原理1、PC 机用户可使用的硬件中断只有可屏蔽中断,由8259 中断控制器管理。

中断控制器用于接收外部的中断请求信号,经过优先级判别等处理后向CPU 发出可屏蔽中断请求。

IBMPC、PC/XT 机内有一片8259 中断控制器对外可以提供8 个中断源:中断源中断类型号中断功能IRQ0 08H 时钟IRQ1 09H 键盘IRQ2 0AH 保留IRQ3 0BH 串行口2IRQ4 0CH 串行口1IRQ5 0DH 硬盘IRQ6 0EH 软盘IRQ7 0FH 并行打印机8 个中断源的中断请求信号线IRQ0~IRQ7 在主机的62 线ISA 总线插座中可以引出,系统已设定中断请求信号为“边沿触发”,普通结束方式。

对于PC/AT 及286 以上微机内又扩展了一片8259 中断控制,IRQ2 用于两片8259 之间级连,对外可以提供16 个中断源:中断源中断类型号中断功能IRQ8 070H 实时时钟IRQ9 071H 用户中断IRQ10 072H 保留IRQ11 073H 保留IRQ12 074H 保留IRQ13 075H 协处理器IRQ14 076H 硬盘IRQ15 077H 保留实验系统总线区的IRQ 接到了3 号中断IRQ3 上,即进行中断实验时,所用中断类型号为0BH。

北京理工大学信号和系统实验报告

北京理工大学信号和系统实验报告

本科实验报告实验名称:信号与系统实验实验一信号的时域描述与运算一、实验目的①掌握信号的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)命令可以绘制上述信号的时域波形常用的信号产生函数2.连续时间信号的时域运算-1-0.8-0.6-0.4-0.200.20.40.60.81Time(seconds)图1 利用向量表示连续时间信号-1-0.50.51t图 2 利用符号对象表示连续时间信号sin(t)对连续时间信号的运算包括两信号相加、相乘、微分、积分,以及位移、反转、尺度变换(尺度伸缩)等。

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('符号对象表示法')符号对象表示法向量表示法t常用信号产生函数2.连续时间信号的时域运算连续时间信号的运算包括两信号相加、相乘、微分、积分,以及移位、反转、尺度变换等。

1) 相加和相乘信号的相加和相乘指两信号对应时刻值相加或相乘。

两个采用向量表示法的信号可以直接使用‘+’和‘*’进行运算,此时要求二者的向量时间范围以及采样间隔相同。

(完整word版)数字信号课程设计实验报告-(2)(word文档良心出品)

(完整word版)数字信号课程设计实验报告-(2)(word文档良心出品)

题目一: 采样定理的验证1.课程设计目的及要求:1).掌握利用MATLAB分析系统频率响应的方法, 增加对仿真软件MATLAB的感性认识, 学会该软件的操作和使用方法。

2). 掌握利用MATLAB实现连续信号采用与重构的方法, 加深理解采样与重构的概念。

.).初步掌握线性系统的设计方法, 培养独立工作能力。

2.4).学习MATLAB中信号表示的基本方法及绘图函数的调用, 实现对常用连续时间信号的可视化表示, 加深对各种电信号的理解。

3.5).验证信号与系统的基本概念、基本理论,掌握信号与系统的分析方法。

4.6).加深对采样定理的理解和掌握,以及对信号恢复的必要性;掌握对连续信号在时域的采样与重构的方法。

详细设计过程及调试结果:1).设, 利用filter函数求出的源程序:n=0:49;xn=0.8.^nsubplot(1,2,1);stem(n,xn,'.');axis([0 49 0 1]);title('输入xn图');xlabel('n');ylabel('xn');grid on;B=1;A=[1,-0.8];yn=filter(B,A,xn);n=0:length(yn)-1;subplot(1,2,2);stem(n,yn,'.');axis([0 49 0 2.5]); title('输出yn图');xlabel('n');ylabel('yn');grid on; 本题验结果及分析:2): 模拟信号, 间隔采样得到:a.每一个画出的源程序:t=0:0.01:1;T1=0:0.01:1;T2=0:0.05:1;T3=0:0.1:1;xt=sin(20*pi*t);xn1=sin(20*pi*T1);xn2=sin(20*pi*T2);xn3=sin(20*pi*T3);subplot(4,1,1);plot(t,xt);title('模拟信号xt图');xlabel('t');ylabel('xt');grid on;subplot(4,1,2);stem(T1,xn1,'.');title('0.01s采样图');xlabel('n');ylabel('xn1');grid on;subplot(4,1,3);stem(T2,xn2,'.');axis([0 1 -1 1]);title('0.05s采样图');xlabel('n');ylabel('xn2');grid on;subplot(4,1,4);stem(T3,xn3,'.');axis([0 1 -1 1]);title('0.1s采样图');xlabel('n');ylabel('xn3');grid on;调试结果分析:b.采用内插从样本重建模拟信号的源程序:t=0:0.01:1;T0=0.1;xt=sin(20*pi*t);T1=0.01;n1=0:100;T2=0.05;n2=0:20;T3=0.1;n3=0:10;xt=sin(20*pi*t);subplot(4,1,1);plot(t,xt);title('原信号xt模拟图');xlabel('t');ylabel('xt');grid on; xn1=sin(20*pi*n1*T1);xn2=sin(20*pi*n2*T2);xn3=sin(20*pi*n3*T3);t1=0:T1:1;t2=0:T2:1;t3=0:T3:1;tn1=ones(length(n1),1)*t1-n1'*T1*ones(1,length(t1));tn2=ones(length(n2),1)*t2-n2'*T2*ones(1,length(t2));tn3=ones(length(n3),1)*t3-n3'*T3*ones(1,length(t3));yt1=xn1*sinc(tn1*pi/T1);subplot(4,1,2);plot(t1,yt1);axis([ 0 1 -1 1]); title('sinc内插0.01恢复的xt1图');xlabel('n');ylabel('xt1');grid on; yt2=xn2*sinc(tn2*pi/T2);subplot(4,1,3);plot(t2,yt2);axis([ 0 1 -1 1]); title('sinc内插0.05恢复的xt2图');xlabel('n');ylabel('xt2');grid on; yt3=xn3*sinc(tn3*pi/T3);subplot(4,1,4);plot(t3,yt3);axis([ 0 1 -1 1]); title('sinc内插0.1恢复的xt3图');xlabel('n');ylabel('xt3');grid on; 调试结果分析:c.采用三次样条内插从样本重建模拟信号源程序: t=0:0.01:1;xt=sin(20*pi*t);T1=0.01;n1=0:100;T2=0.05;n2=0:20;T3=0.1;n3=0:10;T1=0:T1:1;T2=0:T2:1;T3=0:T3:1;xt=sin(20*pi*t);xn1=sin(20*pi*T1);xn2=sin(20*pi*T2);xn3=sin(20*pi*T3);yt1=spline(T1,xn1,t);yt2=spline(T2,xn2,t);yt3=spline(T3,xn3,t);subplot(4,1,1);plot(t,xt);title('原信号xt模拟图');xlabel('t');ylabel('xt');grid on;subplot(4,1,2);plot(t,yt1);axis([ 0 1 -1 1]);title('三次样条0.01恢复的xt1图');xlabel('n');ylabel('xt1');grid on; subplot(4,1,3);plot(t,yt2);axis([ 0 1 -1 1]);title('三次样条0.05恢复的xt2图');xlabel('n');ylabel('xt2');grid on; subplot(4,1,4);plot(t,yt3);axis([ 0 1 -1 1]);title('三次样条0.1恢复的xt3图');xlabel('n');ylabel('xt3');grid on; 调试结果分析:总结体会:连续信号是指自变量的取值范围是连续的, 且对于一切自变量的取值, 除了有若干个不连续点以外, 信号都有确定的值与之对应。

数字信号处理实验报告

数字信号处理实验报告

数字信号处理实验报告一、实验目的本次数字信号处理实验的主要目的是通过实际操作和观察,深入理解数字信号处理的基本概念和方法,掌握数字信号的采集、处理和分析技术,并能够运用所学知识解决实际问题。

二、实验设备与环境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、信号的采样与重构当采样频率足够高时,重构的信号能够较好地恢复原始信号的形状;当采样频率低于奈奎斯特频率时,重构信号出现了失真和混叠现象。

数字信号实验报告二,北京理工大学,实验报告

数字信号实验报告二,北京理工大学,实验报告

实验三利用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个样本,连接剩下样本,得到卷积结果。

北京理工大学信号与系统实验实验报告

北京理工大学信号与系统实验实验报告

北京理工大学信号与系统实验实验报告信号与系统实验报告姓名:肖枫学号: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.连续时间信号的时域运算对连续时间信号的运算包括两信号相加、相乘、微分、积分,以及位移、反转、尺度变换(尺度伸缩)等。

北京理工大学 数字信号处理 实验报告 程序

北京理工大学 数字信号处理 实验报告 程序

数字信号处理实验报告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六、实验总结这次的数字信号处理实验非常有意义,让我学会了用计算机进行数字信号处理,计算各种参数,绘制出信号的波形,频谱。

数字信号实验报告 (全)

数字信号实验报告 (全)

三、实验内容和步骤
对以下典型信号进行谱分析:
x1 (n) R4 (n) n 1, x 2 (n) 8 n, 0 , 4 n, x3 (n) n 3, 0, 0n3 4n7
其它n
0n3 4n7
其它n
nห้องสมุดไป่ตู้
x4 ( n) cos

4
用 FFT 对信号作频谱分析是学习数字信号处理的重要内容。 经常需要进行谱 分析的信号是模拟信号和时域离散信号。 对信号进行谱分析的重要问题是频谱分 辨率 D 和分析误差。 频谱分辨率直接和 FFT 的变换区间 N 有关, 因为 FFT 能够实 现的频率分辨率是 2π /N≤D。可以根据此时选择 FFT 的变换区间 N。误差主要 来自于用 FFT 作频谱分析时,得到的是离散谱,而信号(周期信号除外)是连续 谱,只有当 N 较大时离散谱的包络才能逼近于连续谱,因此 N 要适当选择大一 些。 周期信号的频谱是离散谱,只有用整数倍周期的长度作 FFT,得到的离散谱 才能代表周期信号的频谱。 如果不知道信号周期,可以尽量选择信号的观察时间 长一些。 对模拟信号的频谱时, 首先要按照采样定理将其变成时域离散信号。如果是 模拟周期信号,也应该选取整数倍周期的长度,经过采样后形成周期序列,按照 周期序列的谱分析进行。
3 k 1
1
0.7051 z 2

0.0007378 1 z 1 1 1.0106 z 1 0.3583 z 2 1 0.9044 z 1 0.2155 z 2


6


H k z
(2.1)
式中:
H k z
A 1 2 z 1 z 2 ,k 1, 2, 3 1 Bk z 1 Ck z 2

北京理工大学数字系统与设计实验报告

北京理工大学数字系统与设计实验报告

本科实验报告实验名称:数字系统设计与实验(软件部分)实验一QuartusII 9.1软件的使用一、实验目的1、通过实现简单组合逻辑电路,掌握QUARTUSII 9.1软件的使用;2、编程实现3-8译码电路以掌握VHDL组合逻辑的设计以及QUARTUSII 9.1软件的使用。

;二、实验内容1、3-8译码电路VHDL组合逻辑的设计A、3-8译码电路真值表B、功能仿真波形图:C、时序仿真波形图:D、VHDL代码library ieee;use ieee.std_logic_1164.all; use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity decoder3_8 isport(en:in std_logic;sel:in std_logic_vector(2 downto 0);qout:out std_logic_vector(7 downto 0)); end decoder3_8;architecture beha of decoder3_8 issignal sina_in:std_logic_vector(2 downto 0); signal sina_out:std_logic_vector(7 downto 0);beginsina_in<=sel;process(sina_in,en)beginif(en='0')thencase sina_in iswhen"000"=>sina_out<="00000001";when"001"=>sina_out<="00000010";when"010"=>sina_out<="00000100";when"011"=>sina_out<="00001000";when"100"=>sina_out<="00010000"; when"101"=>sina_out<="00100000"; when"110"=>sina_out<="01000000"; when"111"=>sina_out<="10000000"; when others=>sina_out<="00000000"; end case; end if; qout<=sina_out; end process; end beha;2、共阳极七段译码器VHDL 组合逻辑的设计A 、共阳极七段译码器管脚分布及电路结构abcdefg如下如所示:显示0时,a,b,c,d,e,f 管脚接低电平,g 管脚接高电平点亮的二极管会显示数字0 。

北京理工大学数字信号处理实验报告

北京理工大学数字信号处理实验报告

本科实验报告实验名称: 数字信号处理实验实验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的正弦信号对应的频率分量明显。

接下来,我们对频谱进行低通滤波,滤除高频分量。

通过绘制滤波后的频谱图像,可以观察到高频分量被滤除了,只保留了低频分量。

最后,我们对滤波后的信号进行解码,并绘制解码后的信号图像。

通过观察解码后的信号图像,我们可以看到滤波后的信号与原始信号比较接近。

解码过程可以还原数字信号为模拟信号,使得信号能够以连续的形式传输和显示。

数字信号课程设计实验报告 (2)

数字信号课程设计实验报告 (2)

题目一:采样定理的验证1.课程设计目的及要求:1). 掌握利用MATLAB分析系统频率响应的方法,增加对仿真软件MATLAB的感性认识,学会该软件的操作和使用方法。

2). 掌握利用MATLAB实现连续信号采用与重构的方法,加深理解采样与重构的概念。

3 ). 初步掌握线性系统的设计方法,培养独立工作能力。

4). 学习MATLAB中信号表示的基本方法及绘图函数的调用,实现对常用连续时间信号的可视化表示,加深对各种电信号的理解。

5). 验证信号与系统的基本概念、基本理论,掌握信号与系统的分析方法。

6). 加深对采样定理的理解和掌握,以及对信号恢复的必要性;掌握对连续信号在时域的采样与重构的方法。

2.详细设计过程及调试结果:1).设()(0.8)()nx n u n,利用filter函数求出()*()x n x n的源程序:n=0:49;xn=0.8.^nsubplot(1,2,1);stem(n,xn,'.');axis([0 49 0 1]);title('输入xn图');xlabel('n');ylabel('xn');grid on;B=1;A=[1,-0.8];yn=filter(B,A,xn);n=0:length(yn)-1;subplot(1,2,2);stem(n,yn,'.');axis([0 49 0 2.5]);title('输出yn 图');xlabel('n');ylabel('yn');grid on;本题验结果及分析:2):模拟信号()sin(20),010.01a s x t t t T s π=≤≤=,在,0.050.1s s 和间隔采样得到()x n :a.每一个s T 画出()x n 的源程序:t=0:0.01:1;T1=0:0.01:1;T2=0:0.05:1;T3=0:0.1:1;xt=sin(20*pi*t);xn1=sin(20*pi*T1);xn2=sin(20*pi*T2);xn3=sin(20*pi*T3);subplot(4,1,1);plot(t,xt);title('模拟信号xt图');xlabel('t');ylabel('xt');grid on;subplot(4,1,2);stem(T1,xn1,'.');title('0.01s采样图');xlabel('n');ylabel('xn1');grid on;subplot(4,1,3);stem(T2,xn2,'.');axis([0 1 -1 1]);title('0.05s采样图');xlabel('n');ylabel('xn2');grid on;subplot(4,1,4);stem(T3,xn3,'.');axis([0 1 -1 1]);title('0.1s采样图');xlabel('n');ylabel('xn3');grid on;调试结果分析:b.采用sin c内插从样本()y t的源程序:x n重建模拟信号()at=0:0.01:1;T0=0.1;xt=sin(20*pi*t);T1=0.01;n1=0:100;T2=0.05;n2=0:20;T3=0.1;n3=0:10;xt=sin(20*pi*t);subplot(4,1,1);plot(t,xt);title('原信号xt模拟图');xlabel('t');ylabel('xt');grid on;xn1=sin(20*pi*n1*T1);xn2=sin(20*pi*n2*T2);xn3=sin(20*pi*n3*T3);t1=0:T1:1;t2=0:T2:1;t3=0:T3:1;tn1=ones(length(n1),1)*t1-n1'*T1*ones(1,length(t1));tn2=ones(length(n2),1)*t2-n2'*T2*ones(1,length(t2));tn3=ones(length(n3),1)*t3-n3'*T3*ones(1,length(t3));yt1=xn1*sinc(tn1*pi/T1);subplot(4,1,2);plot(t1,yt1);axis([ 0 1 -1 1]); title('sinc内插0.01恢复的xt1图');xlabel('n');ylabel('xt1');grid on; yt2=xn2*sinc(tn2*pi/T2);subplot(4,1,3);plot(t2,yt2);axis([ 0 1 -1 1]); title('sinc内插0.05恢复的xt2图');xlabel('n');ylabel('xt2');grid on; yt3=xn3*sinc(tn3*pi/T3);subplot(4,1,4);plot(t3,yt3);axis([ 0 1 -1 1]); title('sinc内插0.1恢复的xt3图');xlabel('n');ylabel('xt3');grid on; 调试结果分析:c.采用三次样条内插从样本()x n重建模拟信号源程序:t=0:0.01:1;xt=sin(20*pi*t);T1=0.01;n1=0:100;T2=0.05;n2=0:20;T3=0.1;n3=0:10;T1=0:T1:1;T2=0:T2:1;T3=0:T3:1;xt=sin(20*pi*t);xn1=sin(20*pi*T1);xn2=sin(20*pi*T2);xn3=sin(20*pi*T3);yt1=spline(T1,xn1,t);yt2=spline(T2,xn2,t);yt3=spline(T3,xn3,t);subplot(4,1,1);plot(t,xt);title('原信号xt模拟图');xlabel('t');ylabel('xt');grid on;subplot(4,1,2);plot(t,yt1);axis([ 0 1 -1 1]);title('三次样条0.01恢复的xt1图');xlabel('n');ylabel('xt1');grid on; subplot(4,1,3);plot(t,yt2);axis([ 0 1 -1 1]);title('三次样条0.05恢复的xt2图');xlabel('n');ylabel('xt2');grid on; subplot(4,1,4);plot(t,yt3);axis([ 0 1 -1 1]);title('三次样条0.1恢复的xt3图');xlabel('n');ylabel('xt3');grid on; 调试结果分析:3.总结体会:连续信号是指自变量的取值范围是连续的,且对于一切自变量的取值,除了有若干个不连续点以外,信号都有确定的值与之对应。

数字信号实验报告

数字信号实验报告

数字信号实验报告数字信号实验报告引言数字信号处理是现代通信和信息处理领域的重要技术之一。

通过将模拟信号转换为数字形式,我们可以利用数字信号处理算法对信号进行分析、处理和传输。

本次实验旨在通过实际操作和数据分析,探索数字信号处理的基本原理和应用。

实验目的1. 理解模拟信号与数字信号的区别与联系;2. 掌握数字信号处理的基本原理和方法;3. 学会使用MATLAB等工具进行数字信号处理实验。

实验一:模拟信号与数字信号的转换在本实验中,我们首先需要将模拟信号转换为数字信号。

通过采样和量化两个步骤,我们可以将连续的模拟信号转换为离散的数字信号。

采样是指在时间上对模拟信号进行离散化处理,得到一系列离散的采样点。

采样频率决定了采样点的密度,通常以赫兹为单位表示。

采样定理告诉我们,为了避免采样失真,采样频率必须大于信号频率的两倍。

量化是指对采样点的幅值进行离散化处理,将其转换为一系列有限的离散值。

量化过程中,我们需要确定量化位数,即用多少个比特来表示每个采样点的幅值。

量化位数越大,表示精度越高,但同时也意味着需要更多的存储空间。

实验二:数字信号的滤波处理数字信号处理中的滤波是一项重要的技术,用于去除信号中的噪声和干扰,提取有效信息。

在本实验中,我们将学习数字滤波器的设计和应用。

数字滤波器可以分为无限脉冲响应(IIR)滤波器和有限脉冲响应(FIR)滤波器两种类型。

IIR滤波器具有无限长度的冲激响应,可以实现更复杂的滤波特性,但也容易引入不稳定性。

FIR滤波器具有有限长度的冲激响应,更容易设计和实现,但滤波特性相对简单。

在实验中,我们可以通过MATLAB等工具进行滤波器设计和模拟。

通过调整滤波器参数和观察输出信号的变化,我们可以了解滤波器对信号的影响,并选择合适的滤波器来实现特定的信号处理任务。

实验三:数字信号的频谱分析频谱分析是数字信号处理中的重要任务之一,用于研究信号的频率特性和频域信息。

在本实验中,我们将学习不同频谱分析方法的原理和应用。

数字信号实验报告

数字信号实验报告

数字信号实验报告通信姓名:实验一:信号、系统及系统响应一、实验目的:1、熟悉连续信号经理想采样前后的频谱变化关系,加深对时域采样定理的理解。

2、熟悉时域离散系统的时域特性。

3、利用卷积方法观察分析系统的时域特性。

4、掌握序列傅里叶变换的计算机实现方法,利用序列的傅里叶变换对连续信号、离散信号及系统响应进行频域分析。

二、实验环境(软件、硬件及条件):Matlab6.5三、实验原理与方法:1、时域采样;2、LTI系统的输入与输出关系。

四、实验内容及其步骤:1、认真复习采样理论、离散信号与系统、线性卷积、序列的傅里叶变换及性质等有关内容,阅读本实验原理与方法。

2、编制实验用主程序及相应子程序。

(1)信号产生子程序,用于产生实验中要用到的下列信号序列:a. a(t)=Ae-at sin(Ω0t)u(t)b. 单位脉冲序列:xb(n)=δ(n)n=0:3;x1=[(n-0)==0]+0;k=-200:200;w=(pi/100)*k;c=x1*(exp(-j*pi/100)).^(n'*k);magX=abs(c);subplot(2,2,1);stem(n,x1,'.');xlabel('n');ylabel('xb(n)');subplot(2,2,2);plot(w/pi,magX);xlabel('w/pi');ylabel('|Xb(jw)|');nx b (n )-4-2200.511.52w/pi|X b (j w )|c. 矩形序列: x c (n)=RN(n), N=10 n=0:9;x2=[n>=0]; subplot(2,2,1); stem(n,x2,'.'); xlabel('n');ylabel('x2(n)');510nx 2(n )(2)系统单位脉冲响应序列产生子程序。

北京理工大学随机信号分析实验报告

北京理工大学随机信号分析实验报告

北京理工大学随机信号分析实验报告本科实验报告实验名称:随机信号分析实验实验一随机序列的产生及数字特征估计一、实验目的1、学习和掌握随机数的产生方法。

2、实现随机序列的数字特征估计。

二、实验原理1、随机数的产生随机数指的是各种不同分布随机变量的抽样序列(样本值序列)。

进行随机信号仿真分析时,需要模拟产生各种分布的随机数。

在计算机仿真时,通常利用数学方法产生随机数,这种随机数称为伪随机数。

伪随机数是按照一定的计算公式产生的,这个公式称为随机数发生器。

伪随机数本质上不是随机的,而且存在周期性,但是如果计算公式选择适当,所产生的数据看似随机的,与真正的随机数具有相近的统计特性,可以作为随机数使用。

(0,1)均匀分布随机数是最最基本、最简单的随机数。

(0,1)均匀分布指的是在[0,1]区间上的均匀分布,即 U(0,1)。

实际应用中有许多现成的随机数发生器可以用于产生(0,1)均匀分布随机数,通常采用的方法为线性同余法,公式如下:)(m od ,110N ky y y n n -=Ny x n n /=序列{}nx 为产生的(0,1)均匀分布随机数。

下面给出了上式的3组常用参数: 1、10N 10,k 7==,周期7510≈⨯;2、(IBM 随机数发生器)3116N 2,k 23,==+周期8510≈⨯;3、(ran0)315N 21,k 7,=-=周期9210≈⨯;由均匀分布随机数,可以利用反函数构造出任意分布的随机数。

定理 1.1 若随机变量 X 具有连续分布函数F X (x),而R 为(0,1)均匀分布随机变量,则有)(1R F X x -=由这一定理可知,分布函数为F X (x)的随机数可以由(0,1)均匀分布随机数按上式进行变换得到。

2、MATLAB 中产生随机序列的函数(1)(0,1)均匀分布的随机序列函数:rand用法:x = rand(m,n)功能:产生m×n 的均匀分布随机数矩阵。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验三利用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个样本,连接剩下样本,得到卷积结果。

重叠相加法:设长度为M ,将信号分解成长为L 的子段,建议L 选择与M 数量级相同。

以表示每段信号,则()()i i x n x n ∞==∑(),01()0,i x n iL n L x n +≤≤-⎧=⎨⎩其它0()()()()i i x n y n x n h n ∞=*=*∑每一段卷积的长度为L+M-1,所以在做求和时,相邻两段序列有M-1个样本重叠,即前一段的最后M-1个样本和下一段的前M-1个序列重叠,这个重叠部分相加,再与不重叠部分共同组成输出。

利用FFT 实现重叠保留法的步骤如下: (1)将分为若干L 点子段。

(2)计算每一段与的卷积,根据快速卷积算法利用FFT 计算卷积。

(3)将各段(包括重叠部分)相加,得到输出()()i i y n y n iL ∞==-∑4.可能用到的MATLAB 函数实验中FFT 运算可采用MATLAB 中提供的函数fft 来实现。

MATLAB 提供了函数conv 来计算线性卷积,实验中可以将编程计算的结果和conv 函数的计算结果相比较,以验证结果的正确性,conv 函数用法如下:(,)y conv x h = x 和h 为要进行卷积运算的两个序列,y 为卷积结果统计程序运行时间可以利用MATLAB 提供的tic 和toc 两个命令,具体用法如下: tic……需要运行的程序代码 toc即,在需要统计运行时间的程序代码前加上tic 命令,之后加上toc 命令,此时会在命令窗口中显示该程序的运行时间。

四、实验内容假设要计算序列()()(),0x n u n u n L n L =--≤≤和()cos(0.2),0h n n n M π=≤≤的线性卷积,完成以下实验内容:1.设L=M ,根据线性卷积表达式和快速卷积原理,分别编程实现计算两个序列线性卷积的方法,比较当序列长度分别为8,16,32,64,256,512,1024时,两种方法计算线性卷积所用的时间。

实验代码及实验结果: (1)l=m=8 线性卷积:tic; *统计程序运行时间 l=8; m=8; n=0:l; M=0:m;x=heaviside(n)-heaviside(n-l); h=cos(0.2*pi*M); x=conv(x,h); tocElapsed time is 0.000246 seconds. 快速卷积: ticn=0:l;m=8;M=0:m;x=heaviside(n)-heaviside(n-l);x1=fft(x,16);h=cos(0.2*pi*M);h1=fft(h,16);y1=x1.*h1;y=ifft(y1);tocElapsed time is 0.000226 seconds.结论:0.000226<0.000246快速卷积运行时间较短。

(2)l=m=16线性卷积:ticl=16;m=16;n=0:l;M=0:m;x=heaviside(n)-heaviside(n-l);h=cos(0.2*pi*M);x=conv(x,h);tocElapsed time is 0.000249 seconds.快速卷积:ticl=16;n=0:l;m=16;M=0:m;x=heaviside(n)-heaviside(n-l);x1=fft(x,32);h=cos(0.2*pi*M);h1=fft(h,32);y1=x1.*h1;y=ifft(y1);tocElapsed time is 0.000227 seconds.结论:0.000227<0.000249快速卷积运行时间较短。

(3)l=m=32线性卷积:l=32;m=32;n=0:l;M=0:m;x=heaviside(n)-heaviside(n-l);h=cos(0.2*pi*M);x=conv(x,h);tocElapsed time is 0.000272 seconds.快速卷积:ticl=32;n=0:l;m=32;M=0:m;x=heaviside(n)-heaviside(n-l);x1=fft(x,64);h=cos(0.2*pi*M);h1=fft(h,64);y1=x1.*h1;y=ifft(y1);tocElapsed time is 0.000241 seconds.结论:0.000241<0.000272快速卷积运行时间较短。

(4)l=m=64线性卷积:ticl=64;m=64;n=0:l;M=0:m;x=heaviside(n)-heaviside(n-l);h=cos(0.2*pi*M);x=conv(x,h);tocElapsed time is 0.000283 seconds.快速卷积:ticl=64;n=0:l;m=64;x=heaviside(n)-heaviside(n-l);x1=fft(x,128);h=cos(0.2*pi*M);h1=fft(h,128);y1=x1.*h1;y=ifft(y1);tocElapsed time is 0.000242 seconds.结论:0.000242<0.000283快速卷积运行时间较短。

(5)l=m=256线性卷积:ticl=256;m=256;n=0:l;M=0:m;x=heaviside(n)-heaviside(n-l);h=cos(0.2*pi*M);x=conv(x,h);tocElapsed time is 0.000313 seconds.快速卷积:ticl=256;n=0:l;m=256;M=0:m;x=heaviside(n)-heaviside(n-l);x1=fft(x,512);h=cos(0.2*pi*M);h1=fft(h,512);y1=x1.*h1;y=ifft(y1);tocElapsed time is 0.000289 seconds.结论:0.000289<0.000313快速卷积运行时间较短。

(6)l=m=512线性卷积:ticl=512;m=512;M=0:m;x=heaviside(n)-heaviside(n-l);h=cos(0.2*pi*M);x=conv(x,h);tocElapsed time is 0.000429 seconds.快速卷积:ticl=512;n=0:l;m=512;M=0:m;x=heaviside(n)-heaviside(n-l);x1=fft(x,1024);h=cos(0.2*pi*M);h1=fft(h,1024);y1=x1.*h1;y=ifft(y1);tocElapsed time is 0.000367 seconds.结论:0.000367<0.000429快速卷积运行时间较短。

(7)l=m=1024线性卷积:ticl=1024;m=1024;n=0:l;M=0:m;x=heaviside(n)-heaviside(n-l);h=cos(0.2*pi*M);x=conv(x,h);tocElapsed time is 0.000641 seconds.快速卷积:ticl=1024;n=0:l;m=1024;M=0:m;x=heaviside(n)-heaviside(n-l);x1=fft(x,2048);h=cos(0.2*pi*M);h1=fft(h,2048);y1=x1.*h1;y=ifft(y1);tocElapsed time is 0.000449 seconds.结论:0.000449<0.000641快速卷积运行时间较短。

2.当L=2048且M=256时,比较直接计算线性卷积和快速卷积所需的时间,进一步考察当L=4096且M=256时两种算法所需的时间。

实验代码与实验结果:(1) l=2048 m=256线性卷积:ticl=2048;m=256;n=0:l;M=0:m;x=heaviside(n)-heaviside(n-l);h=cos(0.2*pi*M);x=conv(x,h);tocElapsed time is 0.000504 seconds.快速卷积:ticl=2048;m=256;n=0:l;M=0:m;x=heaviside(n)-heaviside(n-l);x1=fft(x,4096);h=cos(0.2*pi*M);h1=fft(h,4096);y1=x1.*h1;y=ifft(y1);tocElapsed time is 0.000582 seconds.(2) l=4096 m=256线性卷积:ticl=4096;m=256;n=0:l;M=0:m;x=heaviside(n)-heaviside(n-l);h=cos(0.2*pi*M);x=conv(x,h);tocElapsed time is 0.000667 seconds.快速卷积:ticl=4096;m=256;n=0:l;M=0:m;x=heaviside(n)-heaviside(n-l);x1=fft(x,8192);h=cos(0.2*pi*M);h1=fft(h,8192);y1=x1.*h1;y=ifft(y1);tocElapsed time is 0.000932 seconds.3.编程实现利用重叠相加法计算两个序列的线性卷积,考察L=2048且M=256时计算线性卷积的时间,与第二题结果进行比较。

相关文档
最新文档