北邮DSP数字信号处理Matlab实验一
数字信号处理实验报告MATLB第一章

第一章离散时间信号的频域分析P1.1 单位样本和单位阶跃序列%程序P1_1%一个单位序列的产生clf;%产生从-10到20的一个向量n=-10:20;%产生单位样本序列u=[zeros(1,10) 1 zeros(1,20)];%绘制单位样本序列stem(n,u);xlabel('时间序号n');ylabel('振幅');title('单位样本序列');axis([-10 20 0 1.2]);1.1运行程序P1.1,以产生单位样本序列u[n]并显示它。
1.2:命令clf,axis,title,xlabel,和ylabel的作用是什么?clf—函数用于清除当前图像窗口。
axis—设置坐标轴的范围和显示方式title—就是给已经画出的图加一个标题xlabel—添加x坐标标注ylabel—添加y坐标标注1.3修改程序P1.1,以产生带有延时11个样本的延迟单位样本序列ud[n]。
运行修改的程序并显示产生的序列。
%程序%产生并绘制一个单位样本序列延时11clf;%产生从-10到20的一个向量n=-10:20;%产生单位样本序列u=[zeros(1,3) 1 zeros(1,27)];%绘制单位样本序列stem(n,u);xlabel('时间序号n');ylabel('振幅');title('单位样本序列');axis([-10 20 0 1.2]);1.5 修改程序P1.1,以产生带有超前7个样本的延时单位阶跃序列sd[n]。
运行修改后的序并显示产生的序列。
%程序%产生并绘制一个单位样本序列超前7clf;%产生从-10到20的一个向量n=-10:20;%产生单位样本序列u=[zeros(1,3) 1 zeros(1,27)];%绘制单位样本序列stem(n,u);xlabel('时间序号n');ylabel('振幅'); title('单位样本序列');axis([-10 20 0 1.2]);P1.2 指数信号%程序P1_2%生成一个复数指数序列clf;c=-(1/12)+(pi/6)*i;k=2;n=0:40;x=k*exp(c*n);subplot(2,1,1);stem(n,real(x));xlabel('时间序号n');ylabel('振幅');title('实部');subplot(2,1,2);stem(n,imag(x));xlabel('时间序号n');ylabel('振幅');title('虚部');1.6 运行程序P1.2,以产生复数值的指数序列。
数字信号处理MATLAB实验

(8) 用 FFT 分别计算 xa (n)( p 8, q 2) 和 xb(n) (a=0.1,f=0.0625)的自 相关函数。
三、思考题
(1)实验中的信号序列 xc(n)和 xd(n),在单位圆上的 z 变换频谱
和 一些,为什么?
会相同吗?如果不同,说明哪一个低频分量更多
(2)对一个有限长序列进行 DFT 等价于将该序列周期延拓后进行
五、与本实验有关的 MATLAB 函数 x=sin(2*pi*f/fs*n);生成频率为f,采样频率为fs的正弦信号,式
中,n=[0 1 2 … N]。 sum(X);对于向量X,计算X各元素的和。对于矩阵X,计算X
各列元素之和组成的行向量。 plot(t,y);画出以向量t为坐标的向量y(行或列)的曲线。向
出该信号,并讨论信号的混叠情况。
(3) 令
,其中 f/fs=1/16,即每个周期有 16 个
点。试利用 MATLAB 编程实现:
○1 作 M=4 倍的抽取,使每个周期变成 4 点。
○2 作 L=3 倍的插值,使每个周期变成 48 点。
(4)输入信号 x(n)为归一化频率分别为 f1=0.04,f2=0.3 的正 弦信号相加而成,N=50,插因子为 5,抽取因子为 3,给出 按有理因子 5/3 做采样率变换的输入输出波形。
(1) 简述实验目的及原理。 (2) 按实验步骤附上试验程序。 (3) 按实验容附上有关离散信号的波形或关键样本,对音频信号
给出测听的结果。 (4) 简要回答思考题。 五、 与本实验相关的 MATLAB 函数 y=decimate(x,M);对信号 x 按整数 M 作抽取,抽取前后作抗混叠低 通滤波,结果放在 y 中。 y=interp(x,L); 对信号 x 按整数 L 插零,然后作抗镜像低通滤波, 结果放在 y 中。 y=resample(x,L,M);对信号 x 按有理因子 L/M 作采样率转换,结果 放在 y 中。
北邮-DSP数字信号处理 实验-实验报告

北京邮电大学电子工程学院电子实验中心<数字信号处理实验>实验报告班级: xxx学院: xxx实验室: xxx 审阅教师:姓名(班内序号): xxx 学号: xxx 实验时间: xxx评定成绩:目录一、常规实验 (3)实验一常用指令实验 (3)1.试验现象 (3)2.程序代码 (3)3.工作原理 (3)实验二数据储存实验 (4)1.试验现象 (4)2.程序代码 (4)3.工作原理 (4)实验三I/O实验 (5)1.试验现象 (5)2.程序代码 (5)3.工作原理 (5)实验四定时器实验 (5)1.试验现象 (5)2.程序代码 (6)3.工作原理 (9)实验五INT2中断实验 (9)1.试验现象 (9)2.程序代码 (9)3.工作原理 (13)实验六A/D转换实验 (13)1.试验现象 (13)2.程序代码 (14)3.工作原理 (18)实验七D/A转换实验 (19)1.试验现象 (19)2.程序代码 (19)3.工作原理 (37)二、算法实验 (38)实验一快速傅里叶变换(FFT)算法实验 (38)1.试验现象 (38)2.程序代码 (38)3.工作原理 (42)实验二有限冲击响应滤波器(FIR)算法实验 (42)1.试验现象 (42)2.程序代码 (42)3.工作原理 (49)实验三无限冲击响应滤波器(IIR)算法实验 (49)1.试验现象 (49)2.程序代码 (49)3.工作原理 (56)作业设计高通滤波器 (56)1.设计思路 (56)2.程序代码 (57)3.试验现象 (64)一、常规实验实验一常用指令实验1.试验现象可以观察到实验箱CPLD右上方的D3按一定频率闪烁。
2.程序代码.mmregs.global _main_main:stm #3000h,spssbx xf ;将XF置1,D3熄灭call delay ;调用延时子程序,延时rsbx xf ;将XF置0,D3点亮call delay ;调用延时子程序,b _main ;程序跳转到"_MAIN"nopnop;延时子程序delay:stm 270fh,ar3 ;将0x270f(9999)存入ar3loop1:stm 0f9h,ar4 ;将0x0f9(249)存入ar4loop2:banz loop2,*ar4- ;*ar4自减1,不为0时跳到loop2的位置banz loop1,*ar3- ;*ar3自减1,不为0时跳到loop1的位置ret ;可选择延迟的返回nopnop.end3.工作原理主程序循环执行:D3熄灭→延时→D3点亮→延时。
北京邮电大学_dsp_matlab实验报告

数字信号处理实验报告实验名称:数字信号处理实验学生姓名:班级:班内序号:1.实验要求假设信号x(n) 由下述信号组成:请选择合适的长度N 和窗函数,用DFT 分析其频谱,得到清楚的三根谱线。
2.实验代码和实验结果N = 1000; % Length of DFTn = [0:1:N-1];xn = 0.001*cos(0.45*n*pi)+sin(0.3*n*pi)-cos(0.302*n*pi-pi/4);Xk = fft(xn,N);k=[0:1:N-1];subplot(5,1,1);stem(k,abs(Xk(1:1:N)));title('DFT x(n)');xlabel('k');axis([140,240,0,6])subplot(5,1,2);stem(k, abs(Xk(1:1:N)),'r');%画出sin(0.3npi)-cos(0.302npi-pi/4) axis([140,160,0,6]);title('sin(0.3*pi*n)-cos(0.302*pi*n) ');xlabel('k');subplot(5,1,3);stem(k, 1000*abs(Xk(1:1:N)),'g');%画出0.001*cos(0.45npi)axis([220,230,0,6]);title('cos(0.45*pi*n) ');xlabel('k');subplot(5,1,4);stem(k,0.01*abs(Xk(1:1:N)),'k');%画%sin(0.3npi)-cos(0.302npi-pi/4)axis([140,160,0,6]);title('sin(0.3*pi*n)-cos(0.302*pi*n) ');xlabel('k');subplot(5,1,5);stem(k, 10*abs(Xk(1:1:N)),'m');%画出0.001*cos(0.45npi)axis([220,230,0,6]);title('cos(0.45*pi*n) ');xlabel('k');结论:由上图及过程可知,当DFT变换长度为1000时所得到的谱线非常理想。
北邮DSPMatlab仿真实验

北邮DSPMatlab仿真实验《数字信号处理》Matlab 实验⼀.离散信号的 FFT 分析知识点:利⽤FFT 对信号频谱进⾏分析,⽤DFT 进⾏信号分析时基本参数的选择,以及信号经过离散时间傅⽴叶变换(DTFT)与有限长度离散傅⽴叶变换(DFT)后信号频谱上的区别。
实验教学内容:1、⽤Matlab 编程上机练习。
已知: N=25。
这⾥Q=0、9+j0、3。
可以推导出 ,⾸先根据这个式⼦计算X(k)的理论值,然后计算输⼊序列x(n)的32个值,再利⽤基2时间抽选的FFT 算法,计算x(n)的DFT X(k),与X(k)的理论值⽐较(要求计算结果最少6位有效数字)。
解:format longQ=0、9+0、3i;WN=exp(-2*pi*1i/32);Xk=(1-Q^32)、/(1-Q*WN 、^[0:24]);xn=Q 、^[0:24];Xkfft=fft(xn,32);for (k0=1:1:25)difference=Xk(k0)-Xkfft(k0);end;subplot(3,1,1);stem(abs(Xk(1:1:24)),'、');title('DFTx(n)');xlabel('k');axis([0,35,0,15]);subplot(3,1,2);stem(abs(Xkfft(1:1:32)),'g 、');title('FFTx(n)');xlabel('k');axis([0,35,0,15]);subplot(3,1,3);stem(abs(difference(1:1:25)),'r 、');title('Xk-Xkfft');xlabel('k');axis([0,35,0,15]); 0n N-1()0 n 0, n Nn Q x n ?≤≤=?<≥?11,011)()()(k k 10nk 10-=--===∑∑-=-=N k QW Q QW W n x k X N N nN N n NN n Λ,2、假设信号 x(n) 由下述信号组成: 请选择合适的长度 N 与窗函数,⽤ DFT 分析其频谱,得到清楚的三根谱线。
第二次DSP上机实验报告 MATLAB实验报告

第二次DSP上机实验报告 MATLAB实验报告第二次DSP上机实验报告 MATLAB实验报告北京邮电大学信息与通信工程学院DSP--MATLAB实验报告实验名称:学生姓名:班级:班内序号:学号:日期:1.实验要求与目的要求:(1)用DFT分析频谱,得到高分辨率频谱清楚的谱线;(2)利用基2时间抽选的FFT算法,计算有限点的DFT,并与理论值相比较。
目的:掌握(a)用傅立叶变换进行信号分析时基本参数的选择。
(b)经过离散时间傅立叶变换(DTFT)和有限长度离散傅立叶变换(DFT)后信号频谱上的区别,前者DTFT时间域是离散信号,频率域还是连续的,而DFT在两个域中都是离散的。
(c)离散傅立叶变换的基本原理、特性,以及经典的快速算法(基2时间抽选法),体会快速算法的效率。
(d)获得一个高密度频谱和高分辨率频谱的概念和方法,建立频率分辨率和时间分辨率的概念,为将来进一步进行时频分析(例如小波)的学习和研究打下基础。
2关键算法分析第1页北京邮电大学信息与通信工程学院代码的重点是利用fft函数计算离散序列的DFT,难点是矩阵的加减乘除及乘方中所涉及的matlab语句的特点。
实验代码如下:(1)N=1000;n=(0:N-1);y=0.001*cos(0.45*n*pi)+sin(0.3*n*pi)-cos(0.302*n*pi-pi/4);y=0.001*cos(0.45*n*pi)+sin(0.3*n*pi)-cos(0.302*n*pi-pi/4);XK=fft(y,N);--fft函数两个参数分别是进行DFT变换的序列,及DFT 的长度subplot(3,1,1);stem(n,y);title("时域波形");xlabel("n");ylabel("y");subplot(3,1,2);stem(abs(XK),".");axis([0,500,0,600]);--限定x 轴与y轴的范围title("频域前500点波形");xlabel("k");ylabel("XK");subplot(3,1,3);stem(abs(XK),".");axis([800,900,0,600]);--x轴的范围很小,目的是能看到两条很近的谱线title("频域后500点部分波形");xlabel("k");ylabel("XK");(2)N=25;Q=0.9+j*0.3;n=(0:24);x=Q.^n;WN=exp(-j*2*pi/N);k=(0:24);WK=WN.^k;XK=(1-Q.^N)./(1-Q*WK);stem(XK);---理论值的计算XK1=fft(x,32);--32点基2时间抽选法的计算subplot(3,1,1);stem(n,x);title("时域波形");xlabel("n");ylabel("x");subplot(3,1,2);stem(XK);title("频域理论值");xlabel("k");ylabel("XK");subplot(3,1,3);stem(XK1);title("频域波形");xlabel("k");ylabel("XK1");第2页北京邮电大学信息与通信工程学院3.程序运行结果(1)(2)第3页北京邮电大学信息与通信工程学院4.问题分析这次实验的题目相对简单,编程过程中遇到的问题主要是矩阵的加减乘除及乘方运算所对应的matlab语句的规则和fft函数的使用,fft函数的使用方法通过help语句便可查得,其两个参数:第一个是指进行fft运算的序列,第二个值fft运算的长度。
dsp-软件实验报告

数字信号处理MATLAB仿真实验报告学院:电子工程学院班级:2011211203学号:2011210876姓名:孙月鹏班内序号:04一、实验一:数字信号的FFT分析、实验内容及要求JTit /j> 1 *<!>*;((> 45/JJT )・} et>s(O 102 J.T )4(1离散信号的频谱分析: 设信号此信号的0.3pi和0.302pi两根谱线相距很近,谱线0.45pi的幅度很小,请选择合适的序列长度N和窗函数,用DFT分析其频谱,要求得到清楚的三根谱线。
(2 DTMF信号频谱分析用计算机声卡采用一段通信系统中电话双音多频DTMF)拨号数字0〜9的数据,采用快速傅立叶变换FFT)分析这10个号码DTMF拨号时的频谱2、实验结果x(n的时域图与频谱:得到三根清晰的谱线号码9的频谱号码8的频谱号码7的频谱号码6的频谱、实现代码及分析(1第一小题: k=1000; %DFT 点数n=[1:1:k]; %对时域信号进行采样x=0.001*cos(0.45*n*pi+sin(0.3*n*pi-cos(0.302*n*pi-pi/4; subplot(2,1,1;stem(n,x,'.'; %用.画出时域图title('时域序列:xlabel('n';ylabel('x(n';xk=fft(x,k; %进行K点DFT变换w=2*pi/k*[0:1:k-1]; %数字角频率subplot(2,1,2;stem(w/pi,abs(xk;% 画出频谱图axis([0.2,0.5,0,2]; %设置窗函数的宽度与限幅title('1OOO 点dft';xlabel('数字频率';ylabel('|xk(k|';%此题关键在于DFT点数N的确定。
经过计算和实验,当N=1000时能满足题目要求,看到3条清晰地谱线(2)第二小题clear;closeall;f=[941 1336;697 1209;697 1336;6971477;770 1209;770 1336;7701477;8521209;852 1336;852 1477]%0-9的频率n=1:400;fs=4000; % 取样频率为4000hzfprintf( '请输入数字(0 to 9:\n'k=input (''f1=f(k+1,1; %因为从0开始计算,+1得输f2=f(k+1,2; %入数字的两个频率N=400;x1=sin(2*pi*f1*n/fs+sin(2*pi*f2*n/fs; %DTMF 的输入信号时域xn=[x1,zeros(1,400]; %补零subplot(2,1,1;plot(xn %画出时域图xxxxxx(' n'yyyyyy('x n'subplot(2,1,2;fn=fs*n/N; %取样点的频率plot(fn,abs(fft(xn(1:400; %400点fft变换,画出频谱图axis([0,4000,0,300]xxxxxx('fyyyyyy('FFT'二、实验二:DTMF信号的编码1、实验内容及要求1)把您的联系电话号码通过DTMF编码生成为一个.wav文件。
数字信号处理相关MATLAB实验内容--第1章

实验1 离散时间信号的时域分析一、实验目的(1)了解MATLAB 语言的主要特点及作用;(2)熟悉MATLAB 主界面,初步掌握MATLAB 命令窗和编辑窗的操作方法;(3)学习简单的数组赋值、数组运算、绘图的程序编写;(4)了解常用时域离散信号及其特点;(5)掌握MATLAB 产生常用时域离散信号的方法。
二、知识点提示本章节的主要知识点是利用MATLAB 产生数字信号处理的几种常用典型序列、数字序列的基本运算;重点是单位脉冲、单位阶跃、正(余)弦信号的产生;难点是MATLAB 关系运算符“==、>=”的使用。
三、实验内容1. 在MATLAB 中利用逻辑关系式0==n 来实现()0n n -δ序列,显示范围21n n n ≤≤。
(函数命名为impseq(n0,n1,n2))并利用该函数实现序列:()()()632-+-=n n n y δδ;103≤≤-nn 0212. 在MATLAB 中利用逻辑关系式0>=n 来实现()0n n u -序列,显示范围21n n n ≤≤。
(函数命名为stepseq(n0,n1,n2))并利用该函数实现序列:()()()20522≤≤--++=n n u n u n y3. 在MATLAB 中利用数组运算符“.^”来实现一个实指数序列。
如: ()()5003.0≤≤=n n x n4. 在MATLAB 中用函数sin 或cos 产生正余弦序列,如:()()2003.0cos 553.0sin 11≤≤+⎪⎭⎫ ⎝⎛+=n n n n x πππ5. 已知()n n x 102cos 3π=,试显示()()()3,3,+-n x n x n x 在200≤≤n 区间的波形。
6. 参加运算的两个序列维数不同,已知()()6421≤≤-+=n n u n x ,()()8542≤≤--=n n u n x ,求()()()n x n x n x 21+=。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一:数字信号的产生和基本运算
(1) 常用数字信号序列的产生:
熟悉Matlab产生数字信号的基本命令,加深对数字信号概念的理解,并能够用Matlab 产生和绘制出一些常用离散信号序列。
请用Matlab画出下列序列的波形(-10<n<10):
a) δ(n)
b) 单位阶跃序列2u(n-5)
c) 矩形序列R(n)
d) y(n)=2sin(0.3πn)+0.5cos2(0.6πn)
(2)数字信号的基本运算:
a)加、减、尺度(乘除)和移位是数字信号处理中最基本的算术运算,将上述基本序列进行这些基本运算,得到多个序列构成的组合序列。
b)请用您的计算机声卡采用一段您自己的声音x(n),长度为45喵,单声道。
取样频率44.1kHz,16bit/样值,然后与给定的一段背景音乐y(n)按下式叠加为一个声音信号z(n):
z(n)=0.7x(n)+0.3y(n)
(3)要求:
a)在同一个figure中,画出采集声音x(n)、背景音乐y(n)和混音z(n)的时域波形;
b)提交实验报告时,请把声音文件转换成mp3格式,图像转换为jpeg格式,以节省存储空间。
C)通过本次实验,掌握matlab中这些基本运算命令,对数字信号处理有一个基本概念,为后面的数字信号分析和滤波打下了基础。
(1):
a)利用.m文件
M文件代码:
function[x,n]=delta(n0,n1,n2)
if((n0<n1)||(n2<n1)||(n2<n0))
error('false')
end
n=n1:n2;
x=(n-n0)==0;
图象为:
b)利用.m文件
M文件代码:
function[x,n]=u(n0,n1,n2)
if((n0<n1)||(n2<n1)||(n2<n0)) error('false')
end
n=n1:n2;
x=(n-n0)>=0;
实现2u(n-5)的命令是:
>> x=2*u(5,-10,10);
>> n=-10:10;
>> stem(n,x)
图像为:
c)利用.m文件
M文件代码:
function[x,n]=R(n0,n1,n2,n3)
if((n0<n2)||(n1>n3)||(n0>n1)||(n2>n3)) error('false')
end
n=n2:n3;
x=(n>=n0)-(n>=n1);
实现R(n)的命令是:
>> x=R(-2,3,-10,10);
>> n=-10:10;
>> stem(n,x)
图像为:
d)命令如下:
>> n=-10:0.1:10;
>> y=2*sin(0.3*pi*n)+0.5*cos(2*(0.6*pi*n)); >> stem(n,y)
图像为:
(2)
a)
相加:δ(n)+2u(n-5) 命令如下:
>> n=-10:10;
>> y1=delta(0,-10,10); >> y2=2*u(5,-10,10); >> stem(n,y1+y2)
图像为:
乘法:2u(n-5)*R(n) 命令如下:
>> n=-10:10;
>> y1=u(0,-10,10); >> y2=R(-2,3,-10,10); >> stem(n,y1.*y2)
图像为:
移位:y(n)=2sin(0.3πn)+0.5cos2(0.6πn)右移两位命令如下:
>> n=-10:0.1:10;
>> y=2*sin(0.3*pi*(n-2))+0.5*cos(2*(0.6*pi*(n-2))); >> stem(n,y)
图像为:
b)音频处理:
>> [record,fs,bits]=wavread('record.wav');
>> [background,fs,bits]=wavread('background.wav');
>> x=record((fs*0+1:fs*45),:);
>> y=background((fs*0+1:fs*45),:);
>> z=0.7*x+0.3*y;
>> wavwrite(z,fs,bits,'music.wav');
>> subplot(3,1,1),plot(x),title('record');
>> subplot(3,1,2),plot(y),title('background');
>> subplot(3,1,3),plot(z),title('music');
//此时的录音是用audition录的,也可以用matlab自带的wavrecord函数来录音。
图像为:。