北京理工大学信号与系统实验 实验3 信号的频域分析
北理工信号与系统MATLAB实验
title('x(t)=cos(\pit)[u(t)-u(t-2)]','FontSize',36,'FontName','Vijaya'); xlabel('t(s)','fontsize',24,'FontName','Times New Roman'); set(gca,'FontSize',24,'FontName','Times New Roman'); 运行结果如下:
1
2. 连续时间信号的时域运算 包括两信号的相加(+) 、相乘(*) 、微分、积分,以及移位、反 转和尺度变换(尺度伸缩)等。 MATLAB 中用 diff 函数来计算差分 xk+1-xk,用 quad 函数来计算 定积分,调用格式为: quad('function_name',a,b) 其中,function_name 为被积函数名,a、b 为积分区间。 3. 离散时间信号的 MATLAB 实现 在 MATLAB 中离散时间信号需要使用两个向量来表示。例如对 于如下离散时间信号:
目
录
实验 1 实验 2 实验 3 实验 4 实验 5 实验 6 实验 7
信号的时域描述与运算· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·1 LTI 系统的时域分析 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 21 信号的频域分析 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 42 LTI 系统的频域分析 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 67 连续时间系统的复频域分析 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 85 离散时间系统的 Z 域分析 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·101 连续时间系统的创建与仿真 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·115
信号与系统实验三实验报告
实验三 利用DFT 分析连续信号频谱一、实验目的应用离散傅里叶变换(DFT),分析模拟信号x (t )的频谱。
深刻理解利用D FT 分析模拟信号频谱的原理,分析过程中出现的现象及解决方法。
二、 实验原理连续周期信号相对于离散周期信号,连续非周期信号相对于离散非周期信号,都可以通过时域抽样定理建立相互关系。
因此,在离散信号的D FT 分析方法基础上,增加时域抽样的步骤,就可以实现连续信号的D F T 分析。
三、实验内容1. 利用FFT 分析信号的)(e )(2t u t x t -=频谱。
(1) 确定DFT 计算的各参数(抽样间隔,截短长度,频谱分辨率等);答:选取fm=25Hz 为近似的最高频率,则抽样间隔T =)2/(1m f =0.02s 选取Tp=10s 分析,则截短点数为N ==T T p /500 采用矩形窗,确定频域抽样点数为512点。
fsam=50;Tp=10; N=600; T=1/fsam;t=0:T:Tp;x=exp(-2*t);X=T*fft(x,N);subpl o t(2,1,1);plot(t,x);xlabe l ('t');title ('时域波形');w=(-N/2:N/2-1)*(2*pi/N)*fsam;y=1./(j*w+2);subpl o t(2,1,2);plot(w,abs(fftsh i ft(X)),w,abs(y),'r-.');title ('幅度谱');xlabe l ('w');legen d ('理论值','计算值',0);axis([-10,10,0,1.4])当fsam 为50HZ 时(2) 比较理论值与计算值,分析误差原因,提出改善误差的措施。
北京理工大学数信实验报告
实验1 利用DFT 分析信号频谱一、实验目的1、加深对DFT 原理的理解。
2、应用DFT 分析信号的频谱。
3、深刻理解利用DFT 分析信号频谱的原理,分析实现过程中出现的现象及解决方法。
二、实验设备与环境计算机、MATLAB 软件环境。
三、实验基础理论1.DFT 与DTFT 的关系:有限长序列的离散时间傅里叶变换(e )j X ω 在频率区间(02)ωπ≤≤ 的N 个等间隔分布的点2(0k N 1)kk N πω=≤≤-上的N 个取样值可以有下式表示:2120(e )|(n)e(k)(0k N 1)N jkn j Nkk NX x X πωπω--====≤≤-∑由上式可知,序列(n)x 的N 点DFT (k)X ,实际上就是(n)x 序列的DTFT 在N 个等间隔频率点2(0k N 1)kk N πω=≤≤-上样本(k)X 。
2.利用DFT 求DTFT方法1:由(k)X 恢复出(e )j X ω的方法如下:由流程知:11(e )(n)e[(k)W]e N j j nkn j nNn n k X x X Nωωω∞∞----=-∞=-∞===∑∑∑继续整理可得到:12()(k)()Ni k kx e X N ωπφω==-∑其中(x)φ为内插函数:sin()2()sin()2N N ωφωω=方法2:实际在MATLAB 计算中,上述插值运算不见得是最好的办法。
由于DFT 是DTFT 的取样值,其相邻两个频率样本点的间距为2N π,所以如果我们增加数据的长度N ,使得到的DFT 谱线就更加精细,其包络就越接近DTFT 的结果,这样就可以利用DFT 计算DTFT 。
如果没有更多的数据,可以通过补零来增加数据长度。
3.利用DFT 分析连续信号的频谱采用计算机分析连续时间信号的频谱,第一步就是把连续信号离散化,这里需要进行两个操作:一是采样,二是截断。
对于连续时间非周期信号(t)a x ,按采样间隔T 进行采样,阶段长度M ,那么:1(j )(t)e(nT)e M j tj nTa a a n X x dt T x -∞-Ω-Ω-∞=Ω==∑⎰对(j )a X Ω 进行N 点频域采样,得到:2120(j )|(nT)e(k)M jkn Na a M kn NTX T x TX ππ--Ω==Ω==∑采用上述方法计算信号(t)a x 的频谱需要注意如下三个问题:(1)频谱混叠;(2)栅栏效应和频谱分辨率; (3)频谱泄露。
北京理工大学信号和系统实验报告
本科实验报告实验名称:信号与系统实验实验一信号的时域描述与运算一、实验目的①掌握信号的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)相加和相乘信号相加和相乘指两信号对应时刻的值相加和相乘,对于两个采用向量表示的可以直接使用算术运算的运算符“+”和“*”来计算,此时要求表示两信号的向量时间范围和采样间隔相同。
信号与系统实验报告-实验3--周期信号的频谱分析
信号与系统实验报告-实验3--周期信号的频谱分析信号与系统实验报告实验三周期信号的频谱分析实验三周期信号的频谱分析实验目的:1、掌握连续时间周期信号的傅里叶级数的物理意义和分析方法;2、观察截短傅里叶级数而产生的“Gibbs现象”,了解其特点以及产生的原因;3、掌握各种典型的连续时间非周期信号的频谱特征。
实验内容:(1)Q3-1 编写程序Q3_1,绘制下面的信号的波形图:其中,0 = 0.5π,要求将一个图形窗口分割成四个子图,分别绘制cos(0t)、cos(30t)、cos(50t) 和x(t) 的波形图,给图形加title,网格线和x坐标标签,并且程序能够接受从键盘输入的和式中的项数。
程序如下:clear,%Clear all variablesclose all,%Close all figure windowsdt = 0.00001; %Specify the step of time variable t = -2:dt:4; %Specify the interval of timew0=0.5*pi; x1=cos(w0.*t); x2=cos(3*w0.*t);x3=cos(5*w0.*t);N=input('Type in the number of the harmonic components N=');x=0;for q=1:N;x=x+(sin(q*(pi/2)).*cos(q*w0*t))/q;endsubplot(221)plot(t,x1)%Plot x1axis([-2 4 -2 2]);grid on,title('signal cos(w0.*t)')subplot(222)plot(t,x2)%Plot x2axis([-2 4 -2 2]); grid on,title('signal cos(3*w0.*t))')subplot(223)plot(t,x3)%Plot x3axis([-2 4 -2 2])grid on,title('signal cos(5*w0.*t))')subplot(224)plot(t,x)%Plot xtaxis([-2 4 -2 2])grid on,title('signal xt')(2)给程序3_1增加适当的语句,并以Q3_2存盘,使之能够计算例题1中的周期方波信号的傅里叶级数的系数,并绘制出信号的幅度谱和相位谱的谱线图。
北京理工大学随机信号分析实验报告
北京理工大学随机信号分析实验报告本科实验报告实验名称:随机信号分析实验实验一随机序列的产生及数字特征估计一、实验目的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 的均匀分布随机数矩阵。
北京理工大学信号与系统实验实验报告
北京理工大学信号与系统实验实验报告信号与系统实验报告姓名:肖枫学号: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.连续时间信号的时域运算对连续时间信号的运算包括两信号相加、相乘、微分、积分,以及位移、反转、尺度变换(尺度伸缩)等。
实验3-信号的频域分析
一,实验目的四,心得体会了解信号频谱和信号频域,掌握其特性。
一,实验原理实验主要分为四个部分,分别分析了连续和离散信号的周期、非周期情况下特性。
1.连续周期信号的频谱分析首先手算出信号的傅里叶级数,得出信号波形,然后通过代码画出信号波形图。
2.连续非周期信号的频谱分析先由非周期信号的时域信号得到它的频谱X(w),再通过MATLAB求出其傅里叶变换并绘出图形。
X=fourier(x)x=ifourier(x)①符号运算法syms t②数值积分法quad(fun,a,b)③数值近似法3.离散周期信号的频谱分析X=fft(x)4.离散非周期信号的频谱分析可以化为两个相乘的矩阵,从而由MATLAB实现。
三,实验内容(1)已知x(t)是如图周期矩形脉冲信号。
1).计算该信号的傅里叶级数。
2).利用MATLAB绘出由前N次谐波合成的信号波形,观察随着N的变化合成信号波形的变化规律。
3).利用MATLAB绘出周期矩形脉冲信号的频谱,观察参数T和τ变化时对频谱波形的影响。
思考下列问题:①什么是吉伯斯现象?产生吉伯斯现象的原因是什么?②以周期矩形脉冲信号为例,说明周期信号的频谱有什么特点。
③周期矩形脉冲信号参数τ/T的变化,其频谱结构(如频谱包络形状、过零点、频谱间隔等)如何变化?(2)已知x(t)是如图所示矩形脉冲信号。
1).求该信号的傅里叶变幻。
2). 利用MATLAB绘出周期矩形脉冲信号的频谱,观察参数T和τ变化时对频谱波形的影响。
3). 让矩形脉冲宽度始终等于一,改变矩形脉冲宽度,观察矩形脉冲信号时域波形和频谱随矩形脉冲宽度的变化趋势。
①比较矩形脉冲信号和周期矩形脉冲信号的频谱,两者之间有何异同。
②让矩形脉冲的面积始终等于一,改变矩形脉冲的宽度,观察矩形脉冲信号时域波形和频谱波形随矩形脉冲宽度的变化趋势。
(1)已知x(t)是如图所示的周期矩形脉冲信号①,计算该信号的傅里叶级数答:由图中x(t)波形可知信号为通过计算,可以知道所以x(t)的傅里叶级数为。
北京理工大学信号与系统实验 实验3 信号的频域分析
实验3 信号频域分析一、实验目的1.深入理解信号频谱的概念,掌握信号的频域分析方法。
2.观察典型周期信号和非周期信号的频谱,掌握其频谱特性。
二、实验原理与方法1.连续周期信号的频谱分析如果周期信号满足狄里赫利条件,就可以展开为傅里叶级数形式,即)2........()(1)1.....(..........)(0000dt e t x T c e c t x tjkw T k t jkw k k -+∞-∞=⎰=∑= 式中,0T 表示基波周期,00/2T w π=为基波频率,)(0•⎰T 表示任一个基波周期内的积分。
式(1)和式(2)定义为周期信号复指数形式的傅里叶级数,系数k c 称为)(t x 的傅里叶系数。
周期信号的傅里叶级数还可以由三角函数的线性组合来表示,即)4......(sin )(2,cos )(2,)(1)3.(..........sin cos )(00000001010000tdt kw t x T b tdt kw t x T a dt t x T a t kw b t kw a a t x T k T k T k k k k ⎰=⎰=⎰=∑+∑+=+∞=+∞=其中式(3)中同频率的正弦项和余弦项可以合并,从而得到三角函数形式的傅里叶级数,即)6..(..........arctan,,)5..().........cos()(2200010kkk k k k k k k a b b a A a A t kw A A t x -=+==+∑+=+∞=θθ其中可见,任何满足狄里赫利条件的周期信号都可以表示成一组谐波关系的复指数函数或三角函数的叠加。
一般来说周期信号表示为傅里叶级数时需要无限多项才能完全逼近原信号,但在实际应用中经常采用有限项级数来替代,所选项数越多就越逼近原信号。
2.连续非周期信号的频谱分析对于非周期连续时间信号,吸纳后的傅里叶变换和傅里叶逆变换定义为)8........()(21)()7..(..........)()(dw e w X t x dt e t x w X jwt jwt ⎰⎰∞+∞-+∞∞--==π式(7)和式(8)把信号的时域特性和频域特性联系起来,确立了非周期信号)(t x 和频谱)(w X 之间的关系。
北京理工大学 数字信号处理 实验报告 程序
数字信号处理实验报告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六、实验总结这次的数字信号处理实验非常有意义,让我学会了用计算机进行数字信号处理,计算各种参数,绘制出信号的波形,频谱。
信号_频域分析实验报告(3篇)
第1篇一、实验目的1. 理解信号的频域分析方法及其在信号处理中的应用。
2. 掌握傅里叶变换的基本原理和计算方法。
3. 学习使用MATLAB进行信号的频域分析。
4. 分析不同信号在频域中的特性,理解频域分析在实际问题中的应用。
二、实验原理频域分析是信号处理中一种重要的分析方法,它将信号从时域转换到频域,从而揭示信号的频率结构。
傅里叶变换是频域分析的核心工具,它可以将任何信号分解为不同频率的正弦波和余弦波的线性组合。
三、实验内容及步骤1. 信号生成与傅里叶变换- 使用MATLAB生成一个简单的正弦波信号,频率为50Hz,采样频率为1000Hz。
- 对生成的正弦波信号进行傅里叶变换,得到其频谱图。
2. 频谱分析- 分析正弦波信号的频谱图,观察其频率成分和幅度分布。
- 改变正弦波信号的频率和幅度,观察频谱图的变化,验证傅里叶变换的性质。
3. 信号叠加- 将两个不同频率的正弦波信号叠加,生成一个复合信号。
- 对复合信号进行傅里叶变换,分析其频谱图,验证频谱叠加原理。
4. 窗函数- 使用不同类型的窗函数(如矩形窗、汉宁窗、汉明窗等)对信号进行截取,观察窗函数对频谱的影响。
- 分析不同窗函数的频率分辨率和旁瓣抑制能力。
5. 信号滤波- 设计一个低通滤波器,对信号进行滤波处理,观察滤波器对信号频谱的影响。
- 分析滤波器对信号时域和频域特性的影响。
6. MATLAB工具箱- 使用MATLAB信号处理工具箱中的函数,如`fft`、`ifft`、`filter`等,进行信号的频域分析。
- 学习MATLAB工具箱中的函数调用方法和参数设置。
四、实验结果与分析1. 正弦波信号的频谱分析实验结果显示,正弦波信号的频谱图只有一个峰值,位于50Hz处,说明信号只包含一个频率成分。
2. 信号叠加的频谱分析实验结果显示,复合信号的频谱图包含两个峰值,分别对应两个正弦波信号的频率。
验证了频谱叠加原理。
3. 窗函数对频谱的影响实验结果显示,不同类型的窗函数对频谱的影响不同。
北京理工大学信号与系统实验报告
实验一信号的时域描述与运算一、实验目的①掌握信号的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)命令可以绘制上述信号的时域波形Time(seconds)图1 利用向量表示连续时间信号常用的信号产生函数sin(t)t图 2 利用符号对象表示连续时间信号2.连续时间信号的时域运算对连续时间信号的运算包括两信号相加、相乘、微分、积分,以及位移、反转、尺度变换(尺度伸缩)等。
1)相加和相乘信号相加和相乘指两信号对应时刻的值相加和相乘,对于两个采用向量表示的可以直接使用算术运算的运算符“+”和“*”来计算,此时要求表示两信号的向量时间范围和采样间隔相同。
采用符号对象表示的两个信号,可以直接根据符号对象的运算规则运算。
北理工信号实验报告
北理工信号实验报告1. 实验目的本实验旨在通过对北理工信号实验的探索与学习,加深对数字信号处理的理解。
具体目标如下:- 了解信号处理的基本概念和基本原理;- 掌握数字信号的模拟与数字转换方法;- 学会使用MATLAB进行信号处理实验。
2. 实验原理信号处理是对信号进行采样、量化和编码等操作,将连续的模拟信号转换成离散的数字信号的过程。
数字信号由一系列的采样值组成,这些采样值是模拟信号在离散时间点上的近似值。
数字信号的采样率和量化位数是决定信号质量的重要因素。
实验中采集的信号是通过模拟方式产生的,通过模拟-数字转换芯片将模拟信号转换为数字信号。
然后使用MATLAB对这些数字信号进行采样、量化、编码和解码等操作。
3. 实验内容本次实验进行了如下几个实验操作和内容:- 使用函数`sin`生成一个频率为1000Hz,振幅为2的正弦信号;- 将生成的信号进行采样操作,并绘制采样后的信号图像;- 对采样信号进行离散傅立叶变换,并绘制频谱图像;- 对频谱进行低通滤波,并绘制滤波后的频谱图像;- 对滤波后的信号进行解码,并绘制解码后的信号图像;4. 实验结果与分析通过实验,我们得到了以下结果和分析:首先,我们生成了频率为1000Hz,振幅为2的正弦信号,并进行了采样操作。
通过绘制采样后的信号图像,可以看到信号的周期性,但呈现离散的特点。
然后,我们对采样信号进行离散傅立叶变换,得到了频谱图像。
通过观察频谱图像,我们可以清晰地看到信号的频率信息。
在频谱图像中,频率为1000Hz的正弦信号对应的频率分量明显。
接下来,我们对频谱进行低通滤波,滤除高频分量。
通过绘制滤波后的频谱图像,可以观察到高频分量被滤除了,只保留了低频分量。
最后,我们对滤波后的信号进行解码,并绘制解码后的信号图像。
通过观察解码后的信号图像,我们可以看到滤波后的信号与原始信号比较接近。
解码过程可以还原数字信号为模拟信号,使得信号能够以连续的形式传输和显示。
(2023)304编号北京理工大学信号与系统实验报告5连续时间系统的复频域分析(一)
(2023)304编号北京理工大学信号与系统实验报告5连续时间系统的复频域分析(一)关于北京理工大学信号与系统实验报告5实验编号(2023)304实验名称信号与系统实验报告5:连续时间系统的复频域分析实验目的通过本实验,掌握连续时间系统的复频域分析的基本原理和方法,熟练掌握求解复频域中系统的幅度谱和相位谱的方法,提高对系统频域特性的认识。
实验内容实验内容主要分为以下几部分:1.实验仪器和元件的使用2.连续时间系统的频域分析方法3.MATLAB工具箱的应用实验过程1.使用示波器、函数发生器等实验仪器,搭建连续时间系统。
2.将系统的输入信号和输出信号从时域表示转换为复频域表示。
3.根据复频域表示求解系统的幅度谱和相位谱。
4.使用MATLAB工具箱验证实验结果。
5.分析实验结果,总结连续时间系统的频域特性。
实验结论通过本实验,我们了解了连续时间系统的复频域分析方法,熟悉了求解幅度谱和相位谱的步骤,并通过实验验证了所学内容的正确性。
同时,我们也认识到了连续时间系统在频域中的特性和应用范围。
实验感受本实验对我们的信号与系统学习提供了重要的实践环节,让我们更加深入地理解了信号与系统的频域分析方法,并对自己的专业兴趣产生了更深刻的认识。
同时,实验过程中我们也体验到了探索和解决问题的乐趣,收获了宝贵的经验。
实验注意事项1.实验中的电路连接应符合要求,注意仪器的使用和安全操作。
2.合理调整示波器、函数发生器等参数,以确保实验效果。
3.对于MATLAB工具箱的使用应具备一定的基础。
4.实验报告应准确记录实验过程中的操作、数据和可视化结果。
实验改进方向1.加强理论基础知识的学习,深入了解系统的频域特性。
2.进一步利用MATLAB及其他工具箱进行系统的分析和模拟,提高实验的精度和可靠性。
3.可尝试采用不同的连续时间系统进行分析和比较,从而更好地认识连续时间系统的特性。
实验意义通过本实验,我们对信号与系统的频域分析方法和连续时间系统的特性有了更深入的了解和认识。
北理工信号与系统实验(3)模板
实验3信号的频域分析1•深入理解信号频谱的概念,掌握信号的频域分析方法。
2. 观察典型周期信号和非周期信号的频谱,掌握其频谱特性。
二、实验原理1.连续周期信号的频谱分析如果周期信号满足Dirichlet条件,就可以展开为傅里叶级数的形式,即1 x(t) =C k e jk 0t ,c k - x(t)e 』0tdt 式中,T 。
表示基波周期,「o=2「:/T 。
— To To 为基波周期, 心表示任一个基波周期内的积分。
上述两式定义为周期信号复 指数形式的傅里叶级数,系数 Ck 称为x(t)的傅里叶级数。
周期信号的傅里叶级数还可以由三角函数的线性组合来表示,即r(t) =+》a k coska )Q t +,瓦五讹也詁 k^l其中 1 f 第一式中同频率的正弦项和余弦项可以合并, 从而得到三角函数形式的傅里 叶级数,即r(t) =+》血cos (肋芯 + 5k ) 其中 可见,任何满足Dirichlet 条件的周期信号都可以表示成一组谐波关系的复指 数函数或三角函数的叠加。
一般来说周期信号表示为傅里叶级数时需要无限多项 才能完全逼近原信号,但是在实际应用中经常采用有限项级数来替代,所选项数越多就越逼近原信号。
实验目的k=l f2 光(t)cosk%tdt , b k = — T 0 ◎k=l2.连续非周期信号的频谱分析对于非周期连续时间信号,信号的傅里叶变换和傅里叶逆变换定义为上述两式把信号的时域特性和频域特性联系起来,确定了非周期信号x(t)和频谱X( ■)之间的关系。
采用MATLAB 可以方便的求取非周期连续时间信号的傅里叶变换。
1) 符号运算法MATLAB 的符号数学工具箱提供了直接求解傅里叶变换和反变换的函数,fourier 函数和ifourier 函数,基本调用格式为跖-门叫曲:旳,-逬!片)默认的时域变量为t ,频域变量为2) 数值积分法除了采用符号运算的方法外,我们还可以利用MATLAB 的quad 函数,采用 数值积分的方法来进行连续信号的频谱分析。
北理工数字信号处理实验
本科实验报告实验名称:数字信号处理实验课程名称:数字信号处理实验实验时间:任课教师:实验地点:实验教师:实验类型:□原理验证□综合设计□自主创新学生姓名:学号/班级:组号:学院:同组搭档:专业:成绩:实验1 利用DFT分析信号频谱一、实验目的1.加深对DFT原理的理解。
2.应用DFT分析信号频谱。
3.深刻理解利用DFT分析信号频谱的原理,分析现实过程现象及解决办法。
二、实验原理1、DFT和DTFT的关系有限长序列()x n的离散时间傅里叶变换()jX eω在频率区间(02)ωπ≤≤的N个等分点{(0),(1),(),(1)}x x x k x N-……上的N个取样值可以由下式表示:212()|()()01(21)N j knj NkkX e x n e X 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恢复出()jX eω的方法如图2.1所示:图 2.1.由 N点DFT恢复频谱DTFT的流程由图2.1所示流程图可知:1()()()(22) j j n kn j nNn n kX e x n e X k W eNωωω∞∞∞---=-∞=-∞=⎡⎤==-⎢⎥⎣⎦∑∑∑由式2-2可以得到12()()()(23)Njkkx e X kNωπφω==--∑其中()xφ为内插函数12sin()2()(24)sin()2N j N e N ωωφωω--=•-方法2:然而在实际MATLAB 计算中,上诉插值公式不见得是最好的方法。
由于DFT 是DTFT的取样值,其相邻的两个频率样本点的间距为2Nπ,所以如果我们增加数据的长度N ,使得得到的DFT 谱线就更加精细,其包络就越接近DTFT 的结果,这样可以利用DFT 来近似计算DTFT 。
北京理工大学 数字信号处理实验报告一
数字信号处理实验报告姓名:徐娇专业:通信工程实验二利用DFT分析信号频谱一、实验目的1.加深对DFT原理的理解。
2.应用DFT分析信号的频谱。
3.深刻理解利用DFT分析信号频谱的原理,分析实现过程中出现的现象及解决方法。
二、实验设备与环境计算机、MATLAB软件环境。
三、实验基础理论1.DFT与DTFT的关系有限长序列的离散时间傅里叶变换X()在频率区间的N个等间隔分布点上的N个取样值可以有下式表示:由上式可知,序列x(n)的N点DFT,实际上就是x(n)序列的DTFT在N 个等间隔频率点上样本。
2.利用DFT求DTFT方法1:由恢复出的方法如下:——由上式可以得到:其中为内插函数方法2:实际在MATLAB 计算中,上述插值运算不见得是最好的办法。
由于DFT 是DTFT 的取样值,其相邻两个频率样本点的间距为2,所以如果我们增加数据的长度N ,使得到的DFT 谱线就更加精细,其包络就越接近DTFT 的结果,这样就可以利用DFT 计算DTFT 。
如果没有更多的数据,可以通过补零来增加数据长度。
3.利用DFT 分析连续信号的频谱采用计算机分析连续时间信号的频谱,第一步就是把连续信号离散化,这里需要进行两个操作:一是采样,二是截断。
对于连续时间非周期信号,按采样间隔T 进行采样,阶段长度M ,那么:对进行N 点频域采样,得到采用上述方法计算信号的频谱需要注意如下三个问题:(1)频谱混叠(2)栅栏效应和频谱分辨率 (3)频谱泄露4.用到的MATLAB 函数与代码实验中DFT 运算可采用MATLAB 中提供的函数fft 来实现,DTFT 可采用MATLAB 矩阵运算的方法进行计算,如下式所示:[][][][][]⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡⋅⋅⋅⋅⋅⋅==Ω-Ω-Ω-=Ω-Ω∑N Njn jn jn N n n n nj nj e e e n x n x n x en x eX 211.,,,)(21 四、实验内容1.已知x(n)={2↑,-1,1,1},完成如下要求:(1)计算他的DTFT ,并画出[-π,π]区间的波形。
北理工信号与系统实验报告
������������ ������ ������������ ������ 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 )
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验3 信号频域分析一、实验目的1.深入理解信号频谱的概念,掌握信号的频域分析方法。
2.观察典型周期信号和非周期信号的频谱,掌握其频谱特性。
二、实验原理与方法1.连续周期信号的频谱分析如果周期信号满足狄里赫利条件,就可以展开为傅里叶级数形式,即)2........()(1)1.....(..........)(0000dt e t x T c e c t x tjkw T k t jkw k k -+∞-∞=⎰=∑= 式中,0T 表示基波周期,00/2T w π=为基波频率,)(0•⎰T 表示任一个基波周期内的积分。
式(1)和式(2)定义为周期信号复指数形式的傅里叶级数,系数k c 称为)(t x 的傅里叶系数。
周期信号的傅里叶级数还可以由三角函数的线性组合来表示,即)4......(sin )(2,cos )(2,)(1)3.(..........sin cos )(00000001010000tdt kw t x T b tdt kw t x T a dt t x T a t kw b t kw a a t x T k T k T k k k k ⎰=⎰=⎰=∑+∑+=+∞=+∞=其中式(3)中同频率的正弦项和余弦项可以合并,从而得到三角函数形式的傅里叶级数,即)6..(..........arctan,,)5..().........cos()(2200010kkk k k k k k k a b b a A a A t kw A A t x -=+==+∑+=+∞=θθ其中可见,任何满足狄里赫利条件的周期信号都可以表示成一组谐波关系的复指数函数或三角函数的叠加。
一般来说周期信号表示为傅里叶级数时需要无限多项才能完全逼近原信号,但在实际应用中经常采用有限项级数来替代,所选项数越多就越逼近原信号。
2.连续非周期信号的频谱分析对于非周期连续时间信号,吸纳后的傅里叶变换和傅里叶逆变换定义为)8........()(21)()7..(..........)()(dw e w X t x dt e t x w X jwt jwt ⎰⎰∞+∞-+∞∞--==π式(7)和式(8)把信号的时域特性和频域特性联系起来,确立了非周期信号)(t x 和频谱)(w X 之间的关系。
采用MATLAB 可以方便地求取非周期连续时间信号的傅里叶变换,这里我们介绍常用的集中方法。
1)符号运算法MATLAB 的符号数学工具箱提供了直接求解傅里叶变换和反变换的函数,fourier 函数和ifourier 函数,基本调用格式为X =fourier(x) X =ifourier(X)默认的时域变量为t ,频域变量为w 。
2)数值积分法除了采用符号运算的方法外,我们还可以利用MA TLAB 的quad 函数,采用数值积分的方法来进行连续信号的频谱分析,quad 函数是一个用来计算数值积分的函数。
利用quad 函数可以计算非周期连续时间信号的频谱。
Quad 函数的一般调用格式为:y=quad(fun,a,b)y=quad(fun,a,b,TOL,TRACE,p1,p2,…)其中fun 指定被积函数,可以采用inline 命令来创建,也可以通过传递函数句柄的形式来指定,a 、b 表示定积分的下限和上限,TOL 表示允许的相对或绝对积分误差,TRACE 表示以被积函数的点绘图形式来跟踪该函数的返回值,如果TOL 和TRACE 为空矩阵,则使用缺省值,“p1,p2,…”表示被积函数出时间t 之外所需的其他额外输入参数。
3)数值近似法我们还可以利用MA TLAB 的数值计算的方法近似计算连续时间傅里叶变换。
傅里叶变换)(w X 可以由式(9)近似计算)9.(..........)()()(lim 0∆∆==∆-+∞∞-→∆∞+∞--∑⎰jwk jwte k x dt et x w X当)(t x 为时限信号,且∆足够小,式(9)可以演变为)10....(..........)()(∑=∆-∆∆=bak jkw e k x w X而式(10)中求和部分又可以表示成一个行向量和一个列向量的乘积)11........(.....)](,),)1((),([)()1(⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡•∆⋯∆+∆=∆⋅∆⋅-⋅∆+⋅-⋅∆⋅-=∆-∑w b j w a j w a j bak jkw e e e b x a x a x e k x 式(11)可以很方便地利用MA TLAB 实现。
3.离散周期时间信号的频域分析基波周期为N 的周期序列)(n x 可以用N 个成谐波关系的复指数序列的加权和表示,即)12.....(..........)()/2(nN jk N k ke c n x π∑>=<=这里k=<N>表示求和仅需包括一个周期内的N 项,周期序列在一个周期内的求和与起点无关。
将周期序列表示成式(12)的形式,成为离散傅里叶级数,而系数k c 则称为离散傅里叶系数。
离散傅里叶系数k c 可以由式(13)确定。
)13....(..........)(1)/2(∑>=<-=N k nN jk k e n x Nc π 傅里叶系数k c 也称为)(n x 的频谱系数,而且可以证明k c 是以N 为周期的离散频率序列。
这说明了周期的离散时间函数对应于频域为周期的离散频率。
这里,我们用周期N 与傅里叶系数k c 的乘积来表示周期离散时间信号的频谱,即)14.........()()()/2(∑>=<-=•=N k nN jk k en x c N k X π)(k X 可以利用MATLAB 提供的函数fft 用来计算,调用格式为)(x fft X =该函数返回)(k X 一个周期内的值,其中x 表示)(n x 一个周期内的样本值。
4.离散非周期时间信号的频域分析非周期序列)(n x 可以表示成一组复指数序列的连续和 )15..(..........)(21)(2Ω=ΩΩ⎰d e e X n x n j j ππ其中)16.....(..........)()(∑+∞-∞=Ω-Ω=n nj j en x eX式(16)称为)(n x 的离散时间傅里叶变换,式(15)和式(16)确立了非周期离散时间信号)(n x 及其离散时间傅里叶变换)(Ωj e X 之间的关系。
)(Ωj e X 是连续频率Ω的函数,称为频谱函数,且)(Ωj e X 是周期的连续频率函数,其周期为π2。
可见,非周期离散时间函数对应于频域中是一个连续的周期的频率函数。
对于有限长的时间序列,式(16)可以表示为)17........(.....)](,),(),([)()(21121⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡•⋯==Ω-Ω-Ω-=Ω-Ω∑N Njn jn jn N n n n nj j e e e n x n x n x e n x e X 式(17)可以方便地利用MATLAB 实现。
三、实验内容(1)已知周期矩形脉冲信号)(t x 。
○1教材上)(t x 的波形可知信号∑+∞-∞=+----=k kT t u kT t u A t x ))]2/(())2/(([)(ττ 由式(3)和式(4)计算得,002sin ,1,2,k k A k Ta b A k k k T τπτπ⎧=⎪⎪==⎨⎪=⋯⎪⎩, 故)(t x 的傅里叶级数为t k T k k A T A t x k 0010cos sin 2)(ωτππτ∑+∞=+=○2利用MATLAB 绘出由前N 次谐波合成的信号波形,观察随着N 的变化合成信号波形的变化规律;MATLAB 程序如下: t=-3:0.01:3; N=input('N='); A=input('A='); T=input('T='); c=input('c='); x=A*c/T;for n=1:Nx=x+2*A/(n*pi)*sin(n*pi*c/T)*cos(2*pi*n*t);endplot(t,x);xlabel('Time(sec)')title(['N=' num2str(N)])当N=10,A=1,T=1,c=0.5时,图形如下N=10Time(sec)当N=20,A=1,T=1,c=0.5时,图形如下N=20Time(sec)当N=40,A=1,T=1,c=0.5时,图形如下当N=80,A=1,T=1,c=0.5时,图形如下由述4个波形图可知,随着N 的增大即选取的傅里叶级数的项数增加,傅立叶级数的合成波形越来越接近原来的矩形脉冲信号。
○3利用MATLAB 绘出周期矩形脉冲信号的频谱,观察参数T 和τ变化时对频谱波形的影响。
由式(1)和式(2)计算得)⋯===2,1(sin ,0k Tk k A c T A c k τππτ MATLAB 程序如下:function ckplot(T,Tau) A = 1; N = 10; n1 = -N:-1;c1 = (2*A./(pi*n1)).*sin(Tau/T*n1*pi);Time(sec)N=40Time(sec)N=80c0 = Tau/T*A;n2 = 1:N;c2 = (2*A./(pi*n2)).*sin(Tau/T*n2*pi); cn = [c1 c0 c2];n = -N:N;stem(n,cn,'filled');xlabel('\omega/\omega_0');title('c_k');subplot(3,2,1);ckplot(1,0);title('T=1.\tau=0');subplot(3,2,2);ckplot(1,0.2);title('T=1.\tau=0.2');subplot(3,2,3);ckplot(1,0.4);title('T=1.\tau=0.4');subplot(3,2,4);ckplot(1,0.6);title('T=1.\tau=0.6');subplot(3,2,5);ckplot(1,0.8);title('T=1.\tau=0.8');subplot(3,2,6);ckplot(1,1);title('T=1.\tau=1');运行结果如下:T=1时,T=2时,得到:由以上频谱波形图可知,频谱波形与T τ的值有关,对于不同的T 和τ,当比值相同时频谱波形图相同;当比值不同时,比值越小,频谱包络形状趋于收敛,过零点越少,谱线越密。