数字信号处理实验报告
- 格式:doc
- 大小:479.23 KB
- 文档页数:20
实验一 信号、系统及系统响应一、实验目的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,观察频谱混淆现象是否明显存在,说明原因,并记录这时候的幅频特性曲线。
中南大学课程设计目录第一章概述 (5)1.1线性卷积和循环卷积 (5)1.1.1线性卷积 (5)1.1.2循环卷积 (5)1.1.3线性卷积与循环卷积的关系 (5)1.2 模拟采样定理的实现 (6)1.2.1 采样定理 (6)1.3 模拟滤波器设计演示 (6)1.3.1模拟滤波器的设计 (6)1.3.2模拟滤波器到各滤波器的频率变化 (6)1.4 切比雪夫I型低通滤波器设计 (8)1.4.1 切比雪夫模拟滤波器的特性 (8)1.5 凯塞窗设计数字高通滤波器 (8)1.5.1数字FIR滤波器的设计方法 (8)1.5.2 窗函数法的简述 (9)第二章总体设计及关键技术分析 (9)2.1线性卷积和循环卷积的设计与分析 (9)2.1.1线性卷积的设计与分析 (9)1. 线性卷积的设计与分析 (9)2. 线性卷积流程图 (9)2.1.2循环卷积的设计与分析 (10)1.循环卷积的设计与分析 (10)2.循环卷积流程图 (11)2.1.3小结 (11)2.2采样循环卷积流程图定理程序设计和分析 (12)2.2.1时域采样 (12)2.2.2采样信号频域的周期拓延 (12)2.2.3时域采样和频域延拓的具体实现 (12)2.2.4小结 (13)2.3模拟滤波器设计演示 (14)2.3.1模拟滤波器设计与分析 (14)2.3.2模拟低通滤波器向低通滤波器的转换 (14)2.3.3模拟低通滤波器向带通滤波器的转换 (14)2.3.4模拟低通滤波器向带阻滤波器的转换 (14)2.3.5小结 (14)2.4切比雪夫I型低通滤波器的设计 (15)2.4.1切比雪夫I型低通滤波器设计的分析 (15)2.5 凯塞窗高通滤波器的设计 (15)2.5.1凯塞窗设计高通滤波器设计的分析 (15)第三章程序实现 (16)3.1线性卷积和循环卷积的实现 (16)3.1.1线性卷积的实现过程 (16)3.1.2循环卷积的实现过程 (18)3.2采样定理模拟实现过程 (20)3.2.1采样定理的实现与分析 (20)1. 取采样频率为200Hz的图样分析 (20)2. 取采样频率大于200Hz的图样分析 (20)3. 取采样频率小于200Hz的图样分析 (21)3.3模拟滤波器的设计结果分析 (21)3.3.1 低通滤波器向高通滤波器的转换实现 (21)3.3.2 低通滤波器向带通滤波器的转换实现 (22)3.3.3 低通滤波器向阻带滤波器的转换实现 (22)3.4切比雪夫I型模拟低通滤波器的设计结果分析 (23)3.5凯赛窗函数设计高通滤波器的设计结果分析 (23)第四章结束语 (25)4.1遇到的问题及其解决办法 (25)4.2总结语 (25)第五章参考文献 (26)第一章 概述1.1 线性卷积和循环卷积 1.1.1 线性卷积1. 线性卷积的引入在实际应用中,为了分析时域离散线性非移变系统或者对序列进行滤波处理等,需要计算两个序列的线性卷积。
实验六 频域抽样定理和音频信号的处理实验报告 (一)频域抽样定理给定信号1, 013()27, 14260, n n x n n n +≤≤⎧⎪=-≤≤⎨⎪⎩其它 1.利用DTFT 计算信号的频谱()j X e ω,一个周期内角频率离散为M=1024点,画出频谱图,标明坐标轴。
n=0:100; %设定n 及其取值范围for n1=0:13 %对于n 处于不同的取值范围将n 代入不同的表达式xn(n1+1)=n1+1;endfor n2=14:26xn(n2+1)=27-n2;endfor n3=27:100xn(n3+1)=0;endM=1024; %设定抽样离散点的个数k=0:M-1; %设定k 的取值范围w=2*pi*k/M; %定义数字角频率[X,w] = dtft2( xn,n, M ) %调用dtft2子程序求频谱plot(w,abs(X)); %画出幅度值的连续图像xlabel('w/rad');ylabel('|X(exp(jw))|');title(' M=1024时的信号频谱图像'); %标明图像的横纵坐标和图像标题function [X,w] = dtft2(xn, n, M ) %定义x(n)的DTFT 函数w=0:2*pi/M:2*pi-2*pi/M; %将数字角频率w 离散化L=length(n); %设定L 为序列n 的长度 for (k=1:M) %外层循环,w 循环M 次sum=0; %每确定一个w 值,将sum 赋初值为零for (m=1:L) %内层循环,对n 求和,循环次数为n 的长度sum=sum+xn(m)*exp(-j*w(k)*n(m)); %求和X(k)=sum; %把每一次各x(n)的和的总值赋给X ,然后开始对下一个w 的求和过程end %内层循环结束end%外层循环结束M=1024时的信号频谱图像如图1-1所示:图1-1 M=1024时的信号频谱图像2.分别对信号的频谱()jX eω在区间π[0,2]上等间隔抽样16点和32点,得到32()X k和16()X k。
数字信号处理实验报告实验一:频谱分析与采样定理一、实验目的1.观察模拟信号经理想采样后的频谱变化关系。
2.验证采样定理,观察欠采样时产生的频谱混叠现象3.加深对DFT算法原理和基本性质的理解4.熟悉FFT算法原理和FFT的应用二、实验原理根据采样定理,对给定信号确定采样频率,观察信号的频谱三、实验内容和步骤实验内容(1)在给定信号为:1.x(t)=cos(100*π*at)2.x(t)=exp(-at)3.x(t)=exp(-at)cos(100*π*at)其中a为实验者的学号,用DFT分析上述各信号的频谱结构,选取不同的采样频率和截取长度,试分析频谱发生的变化。
实验内容(2)设x(n)=cos(0.48*π*n)+ cos(0.52*π*n),对其进行以下频谱分析:10点DFT,64点DFT,及在10点序列后补零至64点的DFT 试分析这三种频谱的特点。
四、实验步骤1.复习采样理论、DFT的定义、性质和用DFT作谱分析的有关内容。
2.复习FFT算法原理和基本思想。
3.确定实验给定信号的采样频率,编制对采样后信号进行频谱分析的程序五、实验程序和结果实验1内容(1)N=L/T+1;t=0:T:L;a=48;D1=2*pi/(N*T); % 求出频率分辨率k1=floor((-(N-1)/2):((N-1)/2)); % 求对称于零频率的FFT位置向量%%%%%%%%%%%%%%%%%%%%%%%%%figure(1),x1=cos(100*pi*a*t);y1=T*fftshift(fft(x1));%虽然原来是周期信号,但做了截断后,仍可当作非周期信号。
subplot(2,1,1),plot(t,x1);title('正弦信号');subplot(2,1,2),plot(k1*D1,abs(y1));title('正弦信号频谱'); %%%%%%%%%%%%%%%%%%%%% figure(2), x2=exp(-a*t);y2=T*fftshift(fft(x2));%有限长(长度为N)离散时间信号x1的dft 再乘T 来近似模拟信号的频谱,长度为Nsubplot(2,1,1),plot(t,x2);title('指数信号');subplot(2,1,2),plot(k1*D1,abs(y2));title('指数信号频谱'); %%%%%%%%%%%%%%%%%%%%% figure(3), x3=x1.*x2;y3=T*fftshift(fft(x3))subplot(2,1,1),plot(t,x3);title('两信号相乘');subplot(2,1,2),plot(k1*D1,abs(y3));title('两信号相乘频谱');0.020.040.060.080.10.120.140.16-1-0.500.51正弦信号-4000-3000-2000-10000100020003000400000.020.040.06正弦信号频谱00.020.040.060.080.10.120.140.160.51-4000-3000-2000-10000100020003000400000.010.020.03指数信号频谱0.020.040.060.080.10.120.140.16-1-0.500.51两信号相乘-4000-3000-2000-10000100020003000400000.0050.010.015两信号相乘频谱T=0.0005 L=0.150.020.040.060.080.10.120.140.16-1-0.500.51-8000-6000-4000-2000200040006000800000.020.040.060.08正弦信号频谱00.020.040.060.080.10.120.140.160.51指数信号-8000-6000-4000-20000200040006000800000.010.020.03指数信号频谱0.020.040.060.080.10.120.140.16-1-0.500.51-8000-6000-4000-20000200040006000800000.0050.010.015两信号相乘频谱T=0.002 L=0.150.020.040.060.080.10.120.140.16-1-0.500.51正弦信号-2000-1500-1000-50050010001500200000.020.040.060.08正弦信号频谱00.020.040.060.080.10.120.140.160.51-2000-1500-1000-500050010001500200000.010.020.03指数信号频谱0.020.040.060.080.10.120.140.16-1-0.500.51两信号相乘-2000-1500-1000-500050010001500200000.0050.010.015两信号相乘频谱T=0.001 L=0.180.020.040.060.080.10.120.140.160.18-1-0.500.51-4000-3000-2000-1000100020003000400000.020.040.060.08正弦信号频谱00.020.040.060.080.10.120.140.160.180.51指数信号-4000-3000-2000-10000100020003000400000.010.020.03指数信号频谱0.020.040.060.080.10.120.140.160.18-1-0.500.51-4000-3000-2000-10000100020003000400000.0050.010.015两信号相乘频谱T=0.001 L=0.120.020.040.060.080.10.12-1-0.500.51正弦信号-4000-3000-2000-10000100020003000400000.020.040.06正弦信号频谱00.020.040.060.080.10.120.51-4000-3000-2000-10000100020003000400000.010.020.03指数信号频谱0.020.040.060.080.10.12-1-0.500.51两信号相乘-4000-3000-2000-10000100020003000400000.0050.010.015两信号相乘频谱实验1内容(2)>> N=10;n=1:NT=1x1=cos(0.48*pi*n*T)+cos(0.52*pi*n*T)X1=fft(x1,10)k=1:N;w=2*pi*k/10subplot(3,2,1);stem(n,x1);axis([0,10,-3,3]);title('信号x(n)');subplot(3,2,2);stem(w/pi,abs(X1));axis([0,1,0,10]);title('DFTx(n)');%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% N2=100;n2=1:N2T=1x1=cos(0.48*pi*[1:10]*T)+cos(0.52*pi*[1:10]*T)x2=[x1,zeros(1,90)]X2=fft(x2,N2)k2=1:N2;w2=2*pi*k2/100subplot(3,2,3);stem(x2);axis([0,100,-3,3]);title('信号x(n)补零');subplot(3,2,4);plot(w2/pi,abs(X2));axis([0,1,0,10]);title('DFTx(n)');%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% N3=100;n3=1:N3T=1x3=cos(0.48*pi*n3*T)+cos(0.52*pi*n3*T)X3=fft(x3,100)k3=1:N3;w3=2*pi*k3/100subplot(3,2,5);stem(n3,x3);axis([0,100,-3,3]);title('信号x(n)');subplot(3,2,6);stem(w3/pi,abs(X3));axis([0,1,0,10]);title('DFTx(n)');n =1 2 3 4 5 6 7 8 9 10 T =1510-202信号x(n)0.510510DFTx(n)50100信号x(n)补零0.510510DFTx(n)50100信号x(n)DFTx(n)实验二 卷积定理一、实验目的通过本实验,验证卷积定理,掌握利用DFT 和FFT 计算线性卷积的方法。
数字信号处理实验报告完整版[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中的绘图工具对产生的信号进行观察,加深对常用离散信号和信号卷积和运算的理解。
数字信号处理实验报告实验一:混叠现象的时域与频域表现实验原理:当采样频率Fs不满足采样定理,会在0.5Fs附近引起频谱混叠,造成频谱分析误差。
实验过程:考虑频率分别为3Hz,7Hz,13Hz 的三个余弦信号,即:g1(t)=cos(6πt), g2(t)=cos(14πt), g3(t)=cos(26πt),当采样频率为10Hz 时,即采样间隔为0.1秒,则产生的序列分别为:g1[n]=cos(0.6πn), g2[n]=cos(1.4πn), g3[n]=cos(2.6πn)对g2[n],g3[n] 稍加变换可得:g2[n]=cos(1.4πn)=cos((2π-0.6π)n)= cos(0.6πn)g3[n]=cos(2.6πn)= cos((2π+0.6π)n)=cos(0.6πn)利用Matlab进行编程:n=1:300;t=(n-1)*1/300;g1=cos(6*pi*t);g2=cos(14*pi*t);g3=cos(26*pi*t);plot(t,g1,t,g2,t,g3);k=1:100;s=k*0.1;q1=cos(6*pi*s);q2=cos(14*pi*s);q3=cos(26*pi*s);hold on; plot(s(1:10),q1(1:10),'bd');figuresubplot(2,2,1);plot(k/10,abs(fft(q1)))subplot(2,2,2);plot(k/10,abs(fft(q2)))subplot(2,2,3);plot(k/10,abs(fft(q3)))通过Matlab软件的图像如图所示:如果将采样频率改为30Hz,则三信号采样后不会发生频率混叠,可运行以下的程序,观察序列的频谱。
程序编程改动如下:k=1:300;q=cos(6*pi*k/30);q1=cos(14*pi*k/30);q2=cos(26*pi*k/30);subplot(2,2,1);plot(k/10,abs(fft(q)))subplot(2,2,2);plot(k/10,abs(fft(q1)))subplot(2,2,3);plot(k/10,abs(fft(q2)))得图像:问题讨论:保证采样后的信号不发生混叠的条件是什么?若信号的最高频率为17Hz,采样频率为30Hz,问是否会发生频率混叠?混叠成频率为多少Hz的信号?编程验证你的想法。
数字信号处理实验报告数字信号处理实验报告实验一信号(模拟、数字)的输入输出实验(常见离散信号产生和实现)一、实验目的1.加深对常用离散信号的理解;2.掌握matlab 中一些基本函数的建立方法。
二、实验原理 1. 单位抽样序列δ(n ) =⎨⎧1⎩0n =0n ≠0在MATLAB 中可以利用zeros()函数实现。
x =zeros (1, N );x (1) =1;如果δ(n ) 在时间轴上延迟了k 个单位,得到δ(n -k ) 即:δ(n -k ) =⎨2.单位阶跃序列⎧1⎩0n =k n ≠0n ≥0⎧1u (n ) =⎨n在MATLAB 中可以利用ones()函数实现。
x=ones(1,N)3.正弦序列x (n ) =A sin(2πfn /Fs +ϕ)在MATLAB 中,n=0:N-1;x=A*sin(2*pi*f*n/Fs+fai)4.复指数序列x (n ) =r ⋅e j ϖn在MATLAB 中,n=0:N-1;x=r*exp(j*w*n) 5.指数序列x (n ) =a n在MATLAB 中,n=0:N-1;x=a.^n三、实验内容实现和图形生成 1.五种基本函数的生成程序如下: (1)单位抽样序列% 单位抽样序列和延时的单位抽样序列 n=0:10;x1=[1 zeros(1,10)];x2=[zeros(1,5) 1 zeros(1,5)]; subplot(1,2,1);stem(n,x1);xlabel ('时间序列n');ylabel('振幅');title('单位抽样序列x1');subplot(1,2,2);stem(n,x2); xlabel('时间序列n');ylabel('振幅');title('延时了5的单位抽样序列');单位抽样序列x122延时了5的单位抽样序列1.51.511振幅0.5振幅5时间序列n100.500-0.5-0.5-1-15时间序列n10(2)单位阶跃序列 n=0:10;u=[ones(1,11)];stem(n,u);xlabel ('时间序列n');ylabel('振幅');title('单位阶跃序列'); 所得的图形如下所示:振幅123456时间序列n78910(3)正弦函数 n=1:30;x=2*sin(pi*n/6+pi/3);stem(n,x); xlabel ('时间序列n');ylabel('振幅');title('正弦函数序列x=2*sin(pi*n/6+pi/3)');21.510.5振幅0-0.5-1-1.5-2时间序列n(4)复指数序列 n=1:30; x=2*exp(j*3*n);stem(n,x); xlabel ('时间序列n');ylabel('振幅');title('复指数序列x=2*exp(j*3*n)'); 图形如下:复指数序列x=2*exp(j*3*n)21.510.5振幅0-0.5-1-1.5-2时间序列n(5)指数序列 n=1:30;x=1.2.^n;stem(n,x); xlabel ('时间序列n');ylabel('振幅');title('指数序列x=1.2.^n');指数序列x=1.2.n250200150振幅100500时间序列n2.绘出信号x (n ) =1. 5sin(2π*0. 1n ) 的频率是多少?周期是多少?产生一个数字频率为0.9的正弦序列,并显示该信号,说明其周期? 程序如下: n=0:40;x1=1.5*sin(2*pi*0.1*n);x2=sin(0.9*n); subplot(1,2,1);stem(n,x1); xlabel ('时间序列n');ylabel('振幅');title('正弦序列x1=1.5*sin(2*pi*0.1*n)'); subplot(1,2,2);stem(n,x2); xlabel ('时间序列n');ylabel('振幅');title('正弦序列x2=sin(0.9*n)'); 运行结果如下:正弦序列x1=1.5*sin(2*pi*0.1*n)正弦序列x2=sin(0.9*n)振幅振幅102030时间序列n40时间序列n由上图看出:x1=1.5*sin(2*pi*0.1*n)的周期是10,而x2=sin(0.9*n)是非周期的。
实验一:用FFT 对信号作频谱分析1.实验目的学习用FFT 对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析 误差及其原因,以便正确应用FFT 。
2. 实验原理用FFT 对信号作频谱分析是学习数字信号处理的重要内容。
经常需要进行谱分析的信号是模拟信号和时域离散信号。
对信号进行谱分析的重要问题是频谱分辨率D 和分析误差。
频谱分辨率直接和FFT 的变换区间N 有关,因为FFT 能够实现的频率分辨率是N /2π,因此要求D N ≤/2π。
可以根据此式选择FFT 的变换区间N 。
误差主要来自于用FFT 作频谱分析时,得到的是离散谱,而信号(周期信号除外)是连续谱,只有当N 较大时离散谱的包络才能逼近于连续谱,因此N 要适当选择大一些。
周期信号的频谱是离散谱,只有用整数倍周期的长度作FFT ,得到的离散谱才能代表周期信号的频谱。
如果不知道信号周期,可以尽量选择信号的观察时间长一些。
对模拟信号进行谱分析时,首先要按照采样定理将其变成时域离散信号。
如果是模拟周期信号,也应该选取整数倍周期的长度,经过采样后形成周期序列,按照周期序列的谱分析进行。
3.实验步骤及内容(1)对以下序列进行谱分析。
⎪⎩⎪⎨⎧≤≤-≤≤-=⎪⎩⎪⎨⎧≤≤-≤≤+==其它nn n n n n x 其它nn n n n n x n R n x ,074,330,4)(,074,830,1)()()(3241选择FFT 的变换区间N 为8和16 两种情况进行频谱分析。
分别打印其幅频特性曲线。
并进行对比、分析和讨论。
(2)对以下周期序列进行谱分析。
4()cos4x n n π=5()cos(/4)cos(/8)x n n n ππ=+选择FFT 的变换区间N 为8和16 两种情况分别对以上序列进行频谱分析。
分别打印其幅频特性曲线。
并进行对比、分析和讨论。
(3)对模拟周期信号进行谱分析6()cos8cos16cos20x t t t t πππ=++选择 采样频率Hz F s 64=,变换区间N=16,32,64 三种情况进行谱分析。
实验一、零极点分布对系统频率响应的影响Y(n)=x(n)+ay(n-1)1、调用MATLAB函数freqz计算并绘制的幅频特性和相频特性其中:1 代表a=0.7;2代表a=0.8;3代表a=0.9a=0.7时的零极点图A=0.8时的零极点图a=0.9时的零极点图观察零极点的分布与相应曲线易知:小结:系统极点z=a,零点z=0,当B点从w=0逆时针旋转时,在w=0点,由于极点向量长度最短,形成波峰,并且当a越大,极点越接近单位圆,峰值愈高愈尖锐;在w=pi点形成波谷;z=0处零点不影响幅频响应2、先求出系统传函的封闭表达式,通过直接计算法得出的幅频特性和相频特性曲线。
其中:1代表a=0.7;2代表a=0.8;3代表a=0.9附录程序如下:(对程序进行部分注释)>> a=0.7;w=0:0.01:2*pi;%设定w的范围由0到2π,间隔为0.01y=1./(1-a*exp(-j*w)); %生成函数subplot(211);plot(w/2/pi,10*log(abs(y)),'g');%生成图像其中通过调用abs函数计算幅值hold on;xlabel('Frequency(Hz)');%定义横坐标名称ylabel('magnitude(dB)');%定义纵坐标名称title('a=0.8,直接计算h(ejw)');grid on;%定义图片标题subplot(212);plot(w/2/pi,unwrap(angle(y)),'g');grid on;%生成图像其中通过调用angle计算相角,‘g’为规定线条颜色hold on;>> a=0.8;w=0:0.01:2*pi;y=1./(1-a*exp(-j*w));subplot(211);plot(w/2/pi,10*log(abs(y)),'r');hold on;xlabel('Frequency(Hz)');ylabel('magnitude(dB)');title('a=0.8,直接计算h(ejw)');grid on;subplot(212);plot(w/2/pi,unwrap(angle(y)),'r');grid on;hold on;>> a=0.9;w=0:0.01:2*pi;y=1./(1-a*exp(-j*w));subplot(211);plot(w/2/pi,10*log(abs(y)),'b');hold on;xlabel('Frequency(Hz)');ylabel('magnitude(dB)');title('a=0.9,直接计算h(ejw)');grid on;subplot(212);plot(w/2/pi,unwrap(angle(y)),'b');grid on;hold on;2、y(n)=x(n)=ax(n-1)通过调用freqz函数绘图,其中:1代表a=0.7,;2代表a=0.8;3代表a=0.9附录程序如下:(因为程序同实验一相同不再进行注释)a=0.7;A=1;B=[1,a];freqz(B,A,256,'whole',1);title('a=0.7');hold on;a=0.8;A=1;B=[1,a];freqz(B,A,256,'whole',1);title('a=0.8');hold on;a=0.9;A=1;B=[1,a];freqz(B,A,256,'whole',1);title('a=0.9');以下为a为不同数值时的零极点图a=0.7A=0.8A=0.9小结:系统极点z=0,零点z=a,当B点从w=0逆时针旋转时,在w=0点,由于零点向量长度最长,形成波峰:在w=pi点形成波谷;z=a处极点不影响相频响应。
数字信号处理实验报告西南交通大学信息科学与技术学院姓名:伍先春学号:20092487班级:自动化1班指导老师:张翠芳实验一序列的傅立叶变换实验目的进一步加深理解DFS,DFT 算法的原理;研究补零问题;快速傅立叶变换(FFT )的应用。
实验步骤1. 复习DFS 和DFT 的定义,性质和应用;2. 熟悉MATLAB 语言的命令窗口、编程窗口和图形窗口的使用;利用提供的程序例子编写实验用程序;按实验内容上机实验,并进行实验结果分析;写出完整的实验报告,并将程序附在后面。
实验内容1. 周期方波序列的频谱试画出下面四种情况下的的幅度频谱,并分析补零后,对信号频谱的影响。
2. 有限长序列x(n)的DFT(1) 取x(n)(n=0:10)时,画出x(n)的频谱X(k) 的幅度;(2) 将(1)中的x(n)以补零的方式,使x(n)加长到(n:0~100)时,画出x(n)的频谱X(k) 的幅度;(3) 取x(n)(n:0~100)时,画出x(n)的频谱X(k) 的幅度。
利用FFT进行谱分析 已知:模拟信号以t=0.01n(n=0:N-1)进行采样,求N 点DFT 的幅值谱。
请分别画出N=45; N=50;N=55;N=60时的幅值曲线。
数字信号处理实验一1.(1) L=5;N=20;60,7)4(;60,5)3(;40,5)2(;20,5)1()](~[)(~,2,1,01)1(,01,1)(~=========±±=⎩⎨⎧-+≤≤+-+≤≤=N L N L N L N L n x DFS k X m N m n L mN L mN n mN n x )52.0cos()48.0cos()(n n n x ππ+=)8cos(5)4sin(2)(t t t x ππ+=n=1:N;xn=[ones(1,L),zeros(1,N-L)];Xk=dfs(xn,N);magXk=abs([Xk(N/2+1:N) Xk(1:N/2+1)]);k=[-N/2:N/2];figure(1)subplot(2,1,1);stem(n,xn);xlabel('n');ylabel('xtide(n)'); title('DFS of SQ.wave:L=5,N=20');subplot(2,1,2);stem(k,magXk);axis([-N/2,N/2,0,16]);xlabel('k');ylabel('Xtide(k)');(2)L=5;N=40;n=1:N;xn=[ones(1,L),zeros(1,N-L)];Xk=dfs(xn,N);magXk=abs([Xk(N/2+1:N) Xk(1:N/2+1)]);k=[-N/2:N/2];figure(2)subplot(2,1,1);stem(n,xn);xlabel('n');ylabel('xtide(n)'); title('DFS of SQ.wave:L=5,N=40');subplot(2,1,2);stem(k,magXk);axis([-N/2,N/2,0,16]);xlabel('k');ylabel('Xtide(k)');(3)L=5;N=60;n=1:N;xn=[ones(1,L),zeros(1,N-L)];Xk=dfs(xn,N);magXk=abs([Xk(N/2+1:N) Xk(1:N/2+1)]);k=[-N/2:N/2];figure(3)subplot(2,1,1);stem(n,xn);xlabel('n');ylabel('xtide(n)'); title('DFS of SQ.wave:L=5,N=60');subplot(2,1,2);stem(k,magXk);axis([-N/2,N/2,0,16]);xlabel('k');ylabel('Xtide(k)');(4)L=7;N=60;n=1:N;xn=[ones(1,L),zeros(1,N-L)];Xk=dfs(xn,N);magXk=abs([Xk(N/2+1:N) Xk(1:N/2+1)]);k=[-N/2:N/2];figure(4)subplot(2,1,1);stem(n,xn);xlabel('n');ylabel('xtide(n)'); title('DFS of SQ.wave:L=7,N=60');subplot(2,1,2);stem(k,magXk);axis([-N/2,N/2,0,16]);xlabel('k');ylabel('Xtide(k)');2. (1)M=10;N=10;n=1:M;xn=cos(0.48*pi*n)+cos(0.52*pi*n);n1=[0:1:N-1];y1=[xn(1:1:M),zeros(1,N-M)]; figure(1)subplot(2,1,1);stem(n1,y1);xlabel('n'); title('signal x(n),0<=n<=10');axis([0,N,-2.5,2.5]);Y1=fft(y1);magY1=abs(Y1(1:1:N/2+1));k1=0:1:N/2;w1=2*pi/N*k1;subplot(2,1,2);title('Samples of DTFT Magnitude');stem(w1/pi,magY1); axis([0,1,0,10]);xlabel('frequency in pi units');(2)M=10;N=100;n=1:M;xn=cos(0.48*pi*n)+cos(0.52*pi*n);n1=[0:1:N-1];y1=[xn(1:1:M),zeros(1,N-M)]; figure(2)subplot(2,1,1);stem(n1,y1);xlabel('n'); title('signal x(n),0<=n<=10');axis([0,N,-2.5,2.5]);Y1=fft(y1);magY1=abs(Y1(1:1:N/2+1));k1=0:1:N/2;w1=2*pi/N*k1;subplot(2,1,2);title('Samples of DTFT Magnitude');stem(w1/pi,magY1); axis([0,1,0,10]);xlabel('frequency in pi units');(3)M=100;N=100;n=1:M;xn=cos(0.48*pi*n)+cos(0.52*pi*n);n1=[0:1:N-1];y1=[xn(1:1:M),zeros(1,N-M)]; figure(3)subplot(2,1,1);stem(n1,y1);xlabel('n'); title('signal x(n),0<=n<=100');axis([0,N,-2.5,2.5]);Y1=fft(y1);magY1=abs(Y1(1:1:N/2+1));k1=0:1:N/2;w1=2*pi/N*k1;subplot(2,1,2);title('Samples of DTFT Magnitude');stem(w1/pi,magY1); axis([0,1,0,10]);xlabel('frequency in pi units');3.figure(1)subplot(2,2,1)N=45;n=0:N-1;t=0.01*n;q=n*2*pi/N;x=2*sin(4*pi*t)+5*cos(8*pi*t); y=fft(x,N);plot(q,abs(y))stem(q,abs(y))title('FFT N=45')%subplot(2,2,2)N=50;n=0:N-1;t=0.01*n;q=n*2*pi/N;x=2*sin(4*pi*t)+5*cos(8*pi*t); y=fft(x,N);plot(q,abs(y))title('FFT N=50')%subplot(2,2,3)N=55;n=0:N-1;t=0.01*n;q=n*2*pi/N;x=2*sin(4*pi*t)+5*cos(8*pi*t); y=fft(x,N);plot(q,abs(y))title('FFT N=55')%subplot(2,2,4)N=16;n=0:N-1;t=0.01*n;q=n*2*pi/N;x=2*sin(4*pi*t)+5*cos(8*pi*t); y=fft(x,N);plot(q,abs(y))title('FFT N=16')function[Xk]=dfs(xn,N)n=[0:1:N-1];k=[0:1:N-1];WN=exp(-j*2*pi/N);nk=n'*k;WNnk=WN.^nk;Xk=xn*WNnk;实验二 用双线性变换法设计IIR 数字滤波器 一、 实验目的1. 熟悉用双线性变换法设计IIR 数字滤波器的原理与方法; 2. 掌握数字滤波器的计算机仿真方法;3.通过观察对实际心电图的滤波作用,获得数字滤波器的感性知识。
实验一 信号、系统及系统响应一、 实验目的1、熟悉连续信号经理想采样前后的频谱变化关系,加深对时域采样定理的理解;2、熟悉时域离散系统的时域特性;3、利用卷积方法观察分析系统的时域特性;4、掌握序列傅立叶变换的计算机实现方法,利用序列的傅立叶变换对连续信号、离散信号及系统响应进行频域分析。
二、 实验原理及方法采样是连续信号数字处理的第一个关键环节。
对采样过程的研究不仅可以了解采样前后信号时域和频域特性发生变化以及信号信息不丢失的条件,而且可以加深对傅立叶变换、Z 变换和序列傅立叶变换之间关系式的理解。
对一个连续信号)(t x a 进行理想采样的过程可用下式表示:)()()(^t p t t x x aa其中)(^t x a 为)(t x a 的理想采样,p(t)为周期脉冲,即∑∞-∞=-=m nT t t p )()(δ)(^t x a的傅立叶变换为)]([1)(^s m a m j X T j a X Ω-Ω=Ω∑∞-∞= 上式表明^)(Ωj Xa为)(Ωj Xa的周期延拓。
其延拓周期为采样角频率(T /2π=Ω)。
只有满足采样定理时,才不会发生频率混叠失真。
在实验时可以用序列的傅立叶变换来计算^)(Ωj X a 。
公式如下:Tw jwae X j X Ω==Ω|)()(^离散信号和系统在时域均可用序列来表示。
为了在实验中观察分析各种序列的频域特性,通常对)(jw e X 在[0,2π]上进行M 点采样来观察分析。
对长度为N 的有限长序列x(n),有:n jw N n jw k ke m x eX--=∑=)()(1其中,k Mk πω2=,k=0,1,……M-1 时域离散线性非移变系统的输入/输出关系为∑∞-∞=-==m m n h m x n h n x n y )()()(*)()(上述卷积运算也可在频域实现)()()(ωωωj j j e H e X eY =三、 实验程序s=yesinput(Please Select The Step Of Experiment:\n 一.(1时域采样序列分析 s=str2num(s); close all;Xb=impseq(0,0,1); Ha=stepseq(1,1,10);Hb=impseq(0,0,3)+2.5*impseq(1,0,3)+2.2*impseq(2,0,3)+impseq(3,0,3); i=0;while(s);%时域采样序列分析 if(s==1)k=0;while(1)if(k==0)A=yesinput('please input the Amplitude:\n',...444.128,[100,1000]); a=yesinput('please input the Attenuation Coefficient:\n',...222.144,[100,600]);w=yesinput('please input the Angle Frequence(rad/s):\n',...222.144,[100,600]);endk=k+1;fs=yesinput('please input the sample frequence:\n',...1000,[100,1200]);Xa=FF(A,a,w,fs);i=i+1;string+['fs=',num2str(fs)];figure(i)DFT(Xa,50,string);1=yesinput1=str2num(1);end%系统和响应分析else if(s==2)kk=str2num(kk);while(kk)if(kk==1)m=conv(Xb,Hb);N=5;i=i+1;figure(i)string=('hb(n)');Hs=DFT(Hb,4,string);i=i+1;figure(i)string('xb(n)');DFT(Xb,2,string);string=('y(n)=xb(n)*hb(n)');else if (kk==2)m=conv(Ha,Ha);N=19;string=('y(n)=ha(n)*(ha(n)');else if (kk==3)Xc=stepseq(1,1,5);m=conv(Xc,Ha);string=('y(n)=xc(n)*ha(n)');endendendi=i+1;figure(i)DFT(m,N,string);kk=yesinputkk=str2num(kk);end卷积定理的验证else if(s==3)A=1;a=0.5;w=2,0734;fs=1;Xal=FF(A,a,w,fs);i=i+1;figure(i)string=('The xal(n)(A=1,a=0.4,T=1)'); [Xa,w]DFT(Xal,50,string);i=i+1;figure(i)string =('hb(n)');Hs=DFT(Hb,4,string);Ys=Xs.*Hs;y=conv(Xal,Hb);N=53;i=i+1;figure(i)string=('y(n)=xa(n)*hb(n)');[yy,w]=DFT(y,N,string);i=i+1;figure(i)subplot(2,2,1)plot(w/pi,abs(yy));axis([-2 2 0 2]);xlabel('w/pi');ylabel('|Ys(jw)|');title(FT[x(n)*h(n)]');subplot(2,2,3)plot(w/pi,abs(Ys));axis([-2 2 0 2]);xlabel('w/pi');ylabel('|Ys(jw)|');title('FT[xs(n)].FT[h(n)]'); end end end子函数:离散傅立叶变换及X(n),FT[x(n)]的绘图函数 function[c,l]=DFT(x,N,str) n=0:N-1; k=-200:200; w=(pi/100)*k; l=w; c=x*Xc=stepseq(1,1,5); 子函数:产生信号function c=FF(A,a,w,fs) n=o:50-1;c=A*exp((-a)*n/fs).*sin(w*n/fs).*stepseq(0,0,49); 子函数:产生脉冲信号function [x,n]=impseq(n0,n1,n2) n=[n1:n2];x=[(n-n0)==0];子函数:产生矩形框信号function [x,n]=stepseq(n0,n1,n2) n=[n1:n2];x=[(n-n0>=0)];四、 实验内容及步骤1、认真复习采样理论,离散信号与系统,线性卷积,序列的傅立叶变换及性质等有关内容,阅读本实验原理与方法。
《数字信号处理》实验报告地点通信实验室学院计算机与通信工程学院专业班级通信082姓名颜晶学号 40850209指导教师杨欲亮2011年6月实验二 时域采样与频域采样一、实验目的时域采样理论与频域采样理论是数字信号处理中的重要理论。
要求掌握模拟信号采样前后频谱的变化,以及如何选择采样频率才能使采样后的信号不丢失信息;要求掌握频率域采样会引起时域周期化的概念,以及频率域采样定理及其对频域采样点数选择的指导作用。
二、实验原理及方法时域采样定理的要点是: (a)对模拟信号)(t x a 以间隔T 进行时域等间隔理想采样,形成的采样信号的频谱)(ˆΩj X 是原模拟信号频谱()a X j Ω以采样角频率s Ω(T s /2π=Ω)为周期进行周期延拓。
公式为:)](ˆ[)(ˆt x FT j X a a =Ω )(1∑∞-∞=Ω-Ω=n s a jn j X T(b )采样频率s Ω必须大于等于模拟信号最高频率的两倍以上,才能使采样信号的频谱不产生频谱混叠。
利用计算机计算上式并不方便,下面我们导出另外一个公式,以便用计算机上进行实验。
理想采样信号)(ˆt x a 和模拟信号)(t x a 之间的关系为:∑∞-∞=-=n a a nT t t x t x)()()(ˆδ对上式进行傅立叶变换,得到:dt e nT t t x j X t j n a a Ω-∞∞-∞-∞=⎰∑-=Ω])()([)(ˆδdte nT t t x t j n a Ω-∞-∞=∞∞-∑⎰-)()( δ=在上式的积分号内只有当nT t =时,才有非零值,因此:∑∞-∞=Ω-=Ωn nTj aae nT xj X )()(ˆ上式中,在数值上)(nT x a =)(n x ,再将T Ω=ω代入,得到:∑∞-∞=-=Ωn nj aen x j X ω)()(ˆ上式的右边就是序列的傅立叶变换)(ωj e X ,即Tj a e X j X Ω==Ωωω)()(ˆ 上式说明理想采样信号的傅立叶变换可用相应的采样序列的傅立叶变换得到,只要将自变量ω用T Ω代替即可。
物理与电子电气工程学院实验报告课程名称:数字信号处理院系:物理与电子电气工程学院专业:电子信息科学与技术班级:学号:姓名:物理与电子电气工程学院实验报告实验报告(1)实验名称实验一离散时间信号分析实验日期2013.10.19 指导教师(2)绘制单位跃阶)u序列(n解:MATLAB程序如下:>> n=-10:10;>> x=[zeros(1,10),ones(1,11)]; >> stem(n,x,'fill')>> grid on(4)正弦型序列)35sin()(ππ+=n A n x解:MATLAB 程序如下: >> n=-10:10; >> w=pi/5; >> ph=pi/3; >> A=2;(2)2()1(2)()(-+-+-+=n n n n n h δδδδ解:MATLAB 程序如下: >> n=-10:10;>> x=[zeros(1,10),1,2,1,2,zeros(1,7)]; >> stem(n,x,'fill') >> grid on(2)实现任意序列(2)()(-+=n n n h δδ解:MATLAB 程序如下:>> n=-10:10;>> x=[zeros(1,10),1,2,1,2,zeros(1,7)]; >> y=circshift(x,[0,-4]); %左移四位>> stem(n,y,'fill') >> grid on(4)实现任意序列)(=n x (2)2()1(2)()(+-+-+=n n n n n h δδδδ解:MATLAB 程序如下:x=[zeros(1,10),1,2,1,2,zeros(1,7)];>> y=[zeros(1,10),1,2,3,4,5,zeros(1,6)]; >> k=x+y; %两数列相加(5)实现任意序列)(=n x δ(2)2()1(2)()(-+-+-+=n n n n n h δδδδ解:MATLAB 程序如下:>> n=-10:10;>> x=[zeros(1,10),1,2,1,2,zeros(1,7)]; >> y=[zeros(1,10),1,2,3,4,5,zeros(1,6)]; >> k=x.*y; %实现两序列的积 >> stem(n,k,'fill')(6)分别实现()(=n n x δ(2)2()1(2)()(-+-+-+=n n n n n h δδδδ解:MATLAB 程序如下: ①>> n=-10:10;②>> n=-10:10;>> x=[zeros(1,10),1,2,1,2,zeros(1,7)];>> y=cumsum(x); %%实现函数自身的累加(由左向右累加)>> stem(n,y,'fill')>> grid on实验一实验心得:首先,第一次实验,我又开始重拾MATLAB方法。
数字信号处理实验报告实验一 信号、系统及系统响应一、实验目的(1) 熟悉连续信号经理想采样前后的频谱变化关系, 加深对时域采样定理的理解。
(2) 熟悉时域离散系统的时域特性。
(3) 利用卷积方法观察分析系统的时域特性。
(4) 掌握序列傅里叶变换的计算机实现方法, 利用序列的傅里叶变换对连续信号、 离散信号及系统响应进行频域分析。
二、实验原理与方法 1. 时域采样定理:对一个连续信号xa(t)进行理想采样的过程如下: xa1(t)=xa(t)p(t)其中xa1(t)为xa(t)的理想采样,p(t)为周期冲击脉冲。
xa1(t)的傅里叶变换Xa1(j Ω)为:11()[()]m Xa j Xa j m s T +∞=-∞Ω=Ω-Ω∑表明Xa1(j Ω)为Xa(j Ω)的周期延拓,其延拓周期为采样角频率(s Ω=2π/T )。
离散信号和系统在时域均可用序列来表示。
2. LTI 系统的输入输出关系: y(n)=x(n)*h(n)=()()m x m h n m +∞=-∞-∑()()()j j j Y e X e H e ωωω=三、实验内容1. 分析采样序列的特性。
1) 取模拟角频w=70.7*pi rad/s ,采样频率fs=1000Hz>2w ,发现无频谱混叠现象。
2) 改变采样频率, fs=300 Hz<2w ,频谱产生失真。
3) 改变采样频率, fs=200Hz<2w,频谱混叠,产生严重失真2. 时域离散信号、系统和系统响应分析。
1) 观察信号xb(n)和系统hb(n)的时域和频域特性;利用线性卷积求信号xb(n)通过系统hb(n)的响应y(n),比较所求响应y(n)和hb(n)的时域及频域特性,注意它们之间有无差别,绘图说明,并用所学理论解释所得结果。
2) 观察系统ha(n)对信号xc(n)的响应特性。
可发现:信号通过系统,相当于x(n)与系统函数h(n)卷积,时域卷积即对应频域函数相乘。
实验1 利用DFT 分析信号频谱一、实验目的1.加深对DFT 原理的理解。
2.应用DFT 分析信号的频谱。
3.深刻理解利用DFT 分析信号频谱的原理,分析实现过程中出现的现象及解决方法。
二、实验设备与环境 计算机、MATLAB 软件环境 三、实验基础理论1.DFT 与DTFT 的关系 有限长序列的离散时间傅里叶变换在频率区间的N 个等间隔分布的点上的N 个取样值可以由下式表示:212/0()|()()01N jkn j Nk N k X e x n eX k k N πωωπ--====≤≤-∑由上式可知,序列的N 点DFT,实际上就是序列的DTFT 在N 个等间隔频率点上样本。
2.利用DFT 求DTFT方法1:由恢复出的方法如下:由图2.1所示流程可知:101()()()N j j nkn j nN n n k X e x n eX k W e N ωωω∞∞----=-∞=-∞=⎡⎤==⎢⎥⎣⎦∑∑∑ 由上式可以得到:IDFTDTFTX (ejω)12()()()Nj k kX e X k Nωπφω==-∑ 其中为内插函数12sin(/2)()sin(/2)N j N x e N ωωφω--=方法2:实际在MATLAB 计算中,上述插值运算不见得是最好的办法。
由于DFT 是DTFT 的取样值,其相邻两个频率样本点的间距为2π/N ,所以如果我们增加数据的长度N ,使得到的DFT 谱线就更加精细,其包络就越接近DTFT 的结果,这样就可以利用DFT 计算DTFT 。
如果没有更多的数据,可以通过补零来增加数据长度。
3.利用DFT 分析连续信号的频谱采用计算机分析连续时间信号的频谱,第一步就是把连续信号离散化,这里需要进行两个操作:一是采样,二是截断。
对于连续时间非周期信号,按采样间隔T 进行采样,阶段长度M ,那么:1()()()M j tj nT a a a n X j x t edt T x nT e ∞--Ω-Ω=-∞Ω==∑⎰对进行N 点频域采样,得到2120()|()()M jkn Na a M kn NTX j T x nT eTX k ππ--Ω==Ω==∑因此,可以将利用DFT 分析连续非周期信号频谱的步骤归纳如下: (1)确定时域采样间隔T ,得到离散序列(2)确定截取长度M ,得到M 点离散序列,这里为窗函数。
实验一、离散时间系统及离散卷积1、单位脉冲响应源程序:function pr1() %定义函数pr1a=[1,-1,0.9]; %定义差分方程y(n)-y(n-1)+0.9y(n-2)=x(n) b=1;x=impseq(0,-20,120); %调用impseq函数n=[-40:140]; %定义n从-20 到120h=filter(b,a,x); %调用函数给纵座标赋值figure(1) %绘图figure 1 (冲激响应) stem(n,h); %在图中绘出冲激title('冲激响应'); %定义标题为:'冲激响应'xlabel('n'); %绘图横座标为nylabel('h(n)'); %绘图纵座标为h(n)figure(2) %绘图figure 2[z,p,g]=tf2zp(b,a); %绘出零极点图zplane(z,p)function [x,n]=impseq(n0,n1,n2) %声明impseq函数n=[n1:n2];x=[(n-n0)==0];结果:Figure 1:Figure 2:2、离散系统的幅频、相频的分析源程序:function pr2()b=[0.0181,0.0543,0.0543,0.0181];a=[1.000,-1.76,1.1829,-0.2781];m=0:length(b)-1; %m从0 到3l=0:length(a)-1; %l从0 到3K=5000;k=1:K;w=pi*k/K; %角频率wH=(b*exp(-j*m'*w))./(a*exp(-j*l'*w));%对系统函数的定义magH=abs(H); %magH为幅度angH=angle(H); %angH为相位figure(1)subplot(2,1,1); %在同一窗口的上半部分绘图plot(w/pi,magH); %绘制w(pi)-magH的图形grid;axis([0,1,0,1]); %限制横纵座标从0到1xlabel('w(pi)'); %x座标为 w(pi)ylabel('|H|'); %y座标为 angle(H)title('幅度,相位响应'); %图的标题为:'幅度,相位响应' subplot(2,1,2); %在同一窗口的下半部分绘图plot(w/pi,angH); %绘制w(pi)-angH的图形grid; %为座标添加名称xlabel('w(pi)'); %x座标为 w(pi)ylabel('angle(H)'); %y座标为 angle(H)结果:3、卷积计算源程序:function pr3()n=-5:50; %声明n从-5到50u1=stepseq(0,-5,50); %调用stepseq函数声用明u1=u(n)u2=stepseq(10,-5,50); %调用stepseq函数声用明u2=u(n-10) %输入x(n)和冲激响应h(n)x=u1-u2; %x(n)=u(n)-u(n-10)h=((0.9).^n).*u1; %h(n)=0.9^n*u(n)figure(1)subplot(3,1,1); %绘制第一个子图stem(n,x); %绘制图中的冲激axis([-5,50,0,2]); %限定横纵座标的范围title('输入序列'); %规定标题为:'输入序列'xlabel('n'); %横轴为nylabel('x(n)'); %纵轴为x(n)subplot(3,1,2); %绘制第二个子图stem(n,h); %绘制图中的冲激axis([-5,50,0,2]); %限定横纵座标的范围title('冲激响应序列'); %规定标题为:'冲激响应序列'xlabel('n'); %横轴为nylabel('h(n)'); %纵轴为h(n)%输出响应[y,ny]=conv_m(x,n,h,n); %调用conv_m函数subplot(3,1,3); %绘制第三个子图stem(ny,y);axis([-5,50,0,8]);title('输出响应'); %规定标题为:'输出响应'xlabel('n');ylabel('y(n)'); %纵轴为y(n)%stepseq.m子程序%实现当n>=n0时x(n)的值为1function [x,n]=stepseq(n0,n1,n2)n=n1:n2;x=[(n-n0)>=0];%con_m的子程序%实现卷积的计算function [y,ny]=conv_m(x,nx,h,nh)nyb=nx(1)+nh(1);nye=nx(length(x))+nh(length(h));ny=[nyb:nye];y=conv(x,h);结果:实验二、离散傅立叶变换与快速傅立叶变换1、离散傅立叶变换(DFT)源程序:function pr4()F=50;N=64;T=0.000625;n=1:N;x=cos(2*pi*F*n*T); %x(n)=cos(pi*n/16)subplot(2,1,1); %绘制第一个子图x(n)stem(n,x); %绘制冲激title('x(n)'); %标题为x(n)xlabel('n'); %横座标为nX=dft(x,N); %调用dft函数计算x(n)的傅里叶变换magX=abs(X); %取变换的幅值subplot(2,1,2); %绘制第二个子图DFT|X|stem(n,X);title('DFT|X|');xlabel('f(pi)'); %横座标为f(pi)%dft的子程序%实现离散傅里叶变换function [Xk]=dft(xn,N)n=0:N-1;k=0:N-1;WN=exp(-j*2*pi/N);nk=n'*k;WNnk=WN.^nk;Xk=xn*WNnk;结果:F=50,N=64,T=0.000625时的波形F=50,N=32,T=0.000625时的波形:2、快速傅立叶变换(FFT)源程序:%function pr5()F=50;N=64;T=0.000625;n=1:N;x=cos(2*pi*F*n*T); %x(n)=cos(pi*n/16) subplot(2,1,1);plot(n,x);title('x(n)');xlabel('n'); %在第一个子窗中绘图x(n)X=fft(x);magX=abs(X);subplot(2,1,2);plot(n,X);title('DTFT|X|');xlabel('f(pi)'); %在第二个子图中绘图x(n)的快速傅%里叶变换结果:3、卷积的快速算法源程序:function pr6()n=0:14;x=1.^n;h=(4/5).^n;x(15:32)=0;h(15:32)=0;%到此 x(n)=1, n=0~14; x(n)=0,n=15~32% h(n)=(4/5)^n, n=0~14; h(n)=0,n=15~32subplot(3,1,1);stem(x);title('x(n)');axis([1,32,0,1.5]); %在第一个子窗绘图x(n)横轴从1到32,纵轴从0到1.5 subplot(3,1,2);stem(h);title('h(n)');axis([1,32,0,1.5]); %在第二个子窗绘图h(n)横轴从1到32,纵轴从0到1.5 X=fft(x); %X(n)为x(n)的快速傅里叶变换H=fft(h); %H(n)为h(n)的快速傅里叶变换Y=X.*H; %Y(n)=X(n)*H(n)%Y=conv(x,h);y=ifft(Y); %y(n)为Y(n)的傅里叶反变换subplot(3,1,3) %在第三个子窗绘图y(n)横轴从1到32,纵轴从0到6 stem(abs(y));title('y(n=x(n)*h(n))');axis([1,32,0,6]);结果:实验三、IIR数字滤波器设计源程序:function pr7()wp=0.2*pi;ws=0.3*pi;Rp=1;As=25;T=1;Fs=1/T;OmegaP=(2/T)*tan(wp/2); %OmegaP(w)=2*tan(0.1*pi) OmegaS=(2/T)*tan(ws/2); %OmegaS(w)=2*tan(0.15*pi)ep=sqrt(10^(Rp/10)-1);Ripple=sqrt(1/(1+ep.^2));Attn=1/10^(As/20);N=ceil((log10((10^(Rp/10)-1)/(10^(As/10)-1)))/(2*log10(OmegaP/OmegaS) ));OmegaC=OmegaP/((10.^(Rp/10)-1).^(1/(2*N)));[cs,ds]=u_buttap(N,OmegaC);[b,a]=bilinear(cs,ds,Fs);[mag,db,pha,w]=freqz_m(b,a);subplot(3,1,1); %在第一个子窗绘制幅度响应的图形plot(w/pi,mag);title('幅度响应');xlabel('w(pi)');ylabel('H');axis([0,1,0,1.1]);set(gca,'XTickmode','manual','XTick',[0,0.2,0.35,1.1]);set(gca,'YTickmode','manual','YTick',[0,Attn,Ripple,1]);grid;subplot(3,1,2); %在第二个子窗以分贝为单位绘制幅度响应的图形plot(w/pi,db);title('幅度响应(dB)');xlabel('w(pi)');ylabel('H');axis([0,1,-40,5]);set(gca,'XTickmode','manual','XTick',[0,0.2,0.35,1.1]);set(gca,'YTickmode','manual','YTick',[-50,-15,-1,0]);grid;subplot(3,1,3); %在第三个子窗绘制相位响应的图形plot(w/pi,pha);title('相位响应');xlabel('w(pi)');ylabel('pi unit');%axis([0,1,0,1.1]);set(gca,'XTickmode','manual','XTick',[0,0.2,0.35,1.1]);set(gca,'YTickmode','manual','YTick',[-1,0,1]);grid;function [b,a]=u_buttap(N,OmegaC)[z,p,k]=buttap(N);p=p*OmegaC;k=k*OmegaC.^N;B=real(poly(z));b0=k;b=k*B;a=real(poly(p));function [mag,db,pha,w]=freqz_m(b,a)[H,w]=freqz(b,a,1000,'whole');H=(H(1:501))';w=(w(1:501))';mag=abs(H);db=20*log10((mag+eps)/max(mag));pha=angle(H);结果:实验四、FIR数字滤波器的设计源程序:function pr8()wp=0.2*pi;ws=0.35*pi;tr_width=ws-wp;M=ceil(6.6*pi/tr_width)+1;n=0:M-1;wc=(ws+wp)/2;alpha=(M-1)/2;m=n-alpha+eps;hd=sin(wc*m)./(pi*m);w_ham=(hamming(M))';h=hd.*w_ham;[mag,db,pha,w]=freqz_m(h,[1]);delta_w=2*pi/1000;Rp=-(min(db(1:wp/delta_w+1)));As=-round(max(db(ws/delta_w+1:501)));subplot(2,2,1);stem(n,hd);title('理想冲激响应');axis([0,M-1,-0.1,0.3]);ylabel('hd(n)');subplot(2,2,2);stem(n,h);title('实际冲激响应');axis([0,M-1,-0.1,0.3]);ylabel('h(n)');subplot(2,2,3);plot(w/pi,pha);title('滤波器相位响应');axis([0,1,-pi,pi]);ylabel('pha');set(gca,'XTickmode','manual','XTick',[0,0.2,0.3,1.1]); set(gca,'YTickmode','manual','YTick',[-pi,0,pi]); grid;subplot(2,2,4);plot(w/pi,db);title('滤波器幅度响应');axis([0,1,-100,10]);ylabel('H(db)');set(gca,'XTickmode','manual','XTick',[0,0.2,0.3,1.1]); set(gca,'YTickmode','manual','YTick',[-50,-15,0]);function [mag,db,pha,w]=freqz_m(b,a)[H,w]=freqz(b,a,1000,'whole');H=(H(1:501))';w=(w(1:501))';mag=abs(H);db=20*log10((mag+eps)/max(mag));pha=angle(H);结果:。
《数字信号处理》实验报告学院:信息科学与工程学院专业班级:通信1303姓名学号:实验一 常见离散时间信号的产生和频谱分析一、 实验目的(1) 熟悉MATLAB 应用环境,常用窗口的功能和使用方法;(2) 加深对常用离散时间信号的理解;(3) 掌握简单的绘图命令;(4) 掌握序列傅里叶变换的计算机实现方法,利用序列的傅里叶变换对离散信号进行频域分析。
二、 实验原理(1) 常用离散时间信号a )单位抽样序列⎩⎨⎧=01)(n δ00≠=n n 如果)(n δ在时间轴上延迟了k 个单位,得到)(k n -δ即:⎩⎨⎧=-01)(k n δ0≠=n k n b )单位阶跃序列⎩⎨⎧=01)(n u 00<≥n n c )矩形序列 ⎩⎨⎧=01)(n R N 其他10-≤≤N nd )正弦序列)sin()(ϕ+=wn A n xe )实指数序列f )复指数序列()()jw n x n e σ+=(2)离散傅里叶变换:设连续正弦信号()x t 为0()sin()x t A t φ=Ω+这一信号的频率为0f ,角频率为002f πΩ=,信号的周期为00012T f π==Ω。
如果对此连续周期信号()x t 进行抽样,其抽样时间间隔为T ,抽样后信号以()x n 表示,则有0()()sin()t nT x n x t A nT φ===Ω+,如果令w 为数字频率,满足000012s sf w T f f π=Ω=Ω=,其中s f 是抽样重复频率,简称抽样频率。
为了在数字计算机上观察分析各种序列的频域特性,通常对)(jw e X 在[]π2,0上进行M 点采样来观察分析。
对长度为N 的有限长序列x(n), 有∑-=-=10)()(N n n jw jw k k e n x e X其中 1,,1,02-==M k k Mw k ,π 通常M 应取得大一些,以便观察谱的细节变化。
取模|)(|k jw e X 可绘出幅频特性曲线。
(3)用DFT 进行普分析的三种误差三种误差:混叠现象、泄露现象、栅栏效应a) 混叠现象当采样频率小于两倍信号(这里指是信号)最大频率时,经过采样就会发生频谱混叠,这使得采样后的信号序列频谱不能真实地反映原信号的频谱。
所以在利用DFT 分析连续信号的频谱时,必须注意这一问题。
避免混叠现象的唯一方法是保证采样速率足够高,使频谱交叠现象不致出现。
()()nx n a u n =也就是说,在确定采样频率之前,必须对信号的性质有所了解,一般在采样前,信号通过一个防混叠低通滤波器。
b) 泄漏现象实际中的信号序列往往很长,为了方便我们往往用截短的序列来近似它们,这样可以使用较短的DFT来对信号进行频谱分析,这种截短等价于给原信号序列乘以一个矩形窗函数。
泄漏是不能与混叠完全分离开的,因为泄漏导致频谱的扩散,从而造成混叠。
为了减小泄漏的影响,可以选择适当的窗函数,使频谱的扩散减到最小。
c) 栅栏效应因为DFT是对单位圆上Z变换的均匀采样,所以他不可能将频谱视为一个连续函数。
这样就产生了栅栏效应,就一定意义上看,DFT来观看频谱就好像通过一个尖桩的栅栏来观看一个图景一样,只能在离散点上看到真实频谱,这样就可能发生一些频谱的峰点或谷点被“尖桩的栅栏”所挡住,不能被我们观察到。
减小栅栏效应的一个方法就是借助在原序列的末端添补一些零值,从而变动DFT的点数。
这一方法实际上是人为地改变了对真实谱采样的点数和位置,相当于搬动了每一根“尖桩栅栏”的位置,从而使得频谱的峰点或者谷点暴露出来。
当然,这是每根谱线所对应的频率和原来的不同了。
综上所述,DFT可以用于信号的频谱分析,但必须注意可能产生的误差,在应用过程中要尽可能减少和消除这些误差的影响。
三、实验内容(1)用MATLAB编程产生上述任意3种序列(长度可输入确定,对(d) (e) (f)中的参数可自行选择),并绘出其图形;a、产生正弦序列源程序n=-40:40;A=2;w=pi/8;f=pi/4;xn=A*sin(w.*n+f);plot(n,xn);stem(n,xn);axis([-40 40 -4.2 4.2])title('正弦序列');xlabel('n');ylabel('x(n)');box onb、产生单位阶跃函数源程序n=-20:20;xn=heaviside(n);xn(n==0)=1;plot(n,xn);stem(n,xn);axis([-20 20 0 1.2]);title(' 单位阶跃函数');xlabel('n');ylabel('u(n)');box onC、产生矩阵序列源程序矩阵序列n=-20:20;N=5;xn=heaviside(n)-heaviside(n-N);xn(n==0)=1;xn(n==N)=0;plot(n,xn);stem(n,xn);axis([-20 20 0 1.2]);title('矩阵序列');xlabel('n');ylabel('R_{N}(n)');box on(2) 混叠现象对连续信号01()sin(2***)x t pi f t =其中,01500f Hz =进行采样,分别取采样频率2000,1200,800s f Hz Hz Hz =,观察|)(|jw e X 的变化,并做记录(打印曲线),观察随着采样频率降低频谱混叠是否明显存在,说明原因。
源程序混叠x=sin(2*pi*f01*t);plot(t,x);X=fft(x,N);a=fs/N*(0:(N/2-1));b=abs(X(1:(N/2)));plot(a,b);title('取样频率为1000');subplot(2,2,1)n=1/fs;N=length(t);t=0:n:0.1;x=sin(2*pi*f01*t);plot(t,x);X=fft(x,N);plot(fs/N*(0:N/2-1),abs(X(1:N/2)));title('取样频率为2000');subplot(2,2,3);f01=500;fs=1200;n=1/fs;N=length(t);t=0:n:0.1;x=sin(2*pi*f01*t);plot(t,x);X=fft(x,N);plot(fs/N*(0:(N/2-1)),abs(X(1:(N/2)))); title('取样频率为1200');subplot(2,2,4);f01=500;fs=800;n=1/fs;N=length(t);t=0:n:0.1;x=sin(2*pi*f01*t);plot(t,x);X=fft(x,N);plot(fs/N*(0:(N/2-1)),abs(X(1:(N/2)))); title('取样频率为ª800');结论 连续信号的最高频率为1500f Hz ,根据取样定理,采样频率必须满足Fs>=2fc ,否则会在折叠频率Fs/2处出现频谱混叠。
通过实验当Fs 为1200HZ2000HZ 时峰值在500HZ 处没有发生混叠。
但当取样频率为800HZ 时 峰值在300HZ 处 产生较大的误差。
(4)截断效应 给定()cos()4x n n π=,截取一定长度的信号()()()y n x n w n =,()w n 为窗函数,长度为N ,()()N w n R n =。
分别取N=6,8,12,计算()y n 的N 点DFT 变换,画出其幅频特性曲线;做2N 点DFT 变换,分析当N 逐渐增大时,分析是否有频谱泄露现象、主瓣的宽度变化?如何减小泄露?源程序subplot(2,2,1);n=50;Rn=[ones(1,n)];wn=Rn;xn=cos((pi./4)*(0:n-1));yn=xn.*wn;N=6;Y=fft(yn,2*N);plot(2*pi/N*(0:N/2-1),abs(Y((1:N/2)))); title('截断效应N=6');subplot(2,2,2);n=50;Rn=[ones(1,n)];wn=Rn;xn=cos((pi./4)*(0:n-1));yn=xn.*wn;N=8;Y=fft(yn,2*N);plot(2*pi/N*(0:N/2-1),abs(Y((1:N/2)))); title('截断效应N=8');subplot(2,2,3);n=50;Rn=[ones(1,n)];wn=Rn;xn=cos((pi./4)*(0:n-1));yn=xn.*wn;N=12;Y=fft(yn,2*N);plot(2*pi/N*(0:N/2-1),abs(Y((1:N/2)))); title('截断效应N=12');subplot(2,2,4);n=50;Rn=[ones(1,n)];wn=Rn;xn=cos((pi./4)*(0:n-1));yn=xn.*wn;N=1000;Y=fft(yn,2*N);plot(2*pi/N*(0:N/2-1),abs(Y((1:N/2)))); title('截断效应N=1000');结论 由上图可知,随着矩形窗的N 增大,主瓣宽度变窄,分辨率提高,泄露也相继减少峰起值占总比越来越接近9%。
随N 减少到20时,即取样长度比较小时,波形泄露比较严重,无法反映实际波形。
另外,为了减小谱间干扰,应用其他形状的窗函数,代替矩形窗会降低泄露程度。
(5)栅栏效应给定()4()x n R n =,分别计算()jw X e 在频率区间[]0,2π上的16点、32点、64点等间隔采样,绘制()jw X e 采样的幅频特性图,分析栅栏效应,如何减小栅栏效应? 源程序n=0:1:10;xn=[ones(1,4),zeros(1,7)]; Xk16=fft(xn,16); Xk32=fft(xn,32); Xk64=fft(xn,64);subplot(2,2,1);stem(n,xn,'.');title('(a) x_1 (n)');xlabel('n');ylabel('x_1 (n)');k=0:15;wk=2*k/16;subplot(2,2,2);stem(wk,abs(Xk16),'.');title('(c)16µãDFTµÄ·ùÆµÌØÐÔͼ');xlabel('\omega/\pi');ylabel('·ù¶È');k=0:31;wk=2*k/32;subplot(2,2,3);stem(wk,abs(Xk32),'.');title('(d)32µãDFTµÄ·ùÆµÌØÐÔͼ');xlabel('\omega/\pi');ylabel('·ù¶È');k=0:63;wk=2*k/64;subplot(2,2,4);stem(wk,abs(Xk64),'.');title('(d)64µãDFTµÄ·ùÆµÌØÐÔͼ');xlabel('\omega/\pi');ylabel('·ù¶È');结论 由栅栏效应可知,采样点的间隔是看不到的。