一种基于Matlab的DSP调试及直接代码生成方法.

一种基于Matlab的DSP调试及直接代码生成方法.

一种基于Matlab的DSP调试及直接代码生成方法

Matlab作为一种有效的信号处理工具,已经渗透到DSP的设计当中。开发者在将一个新的数字信号处理算法应用于实际前,一般是先用Matlab进行模拟验证,当模拟结果满意时再把算法修改成C或DSP汇编语言通过CCS在目标DSP 上实现,并比较实际应用与模拟的结果以发现误差,如此反复进行。在较新版本的Matlab(6.0以上)中提供了Matlab与DSP的统一集成环境后,众多学者对Matlab环境下的DSP调试进行了研究。文献[2-4]从CCSLink的角度出发,对Matl

Matlab作为一种有效的信号处理工具,已经渗透到DSP的设计当中。开发者在将一个新的数字信号处理算法应用于实际前,一般是先用Matlab进行模拟验证,当模拟结果满意时再把算法修改成C或DSP汇编语言通过CCS在目标DSP 上实现,并比较实际应用与模拟的结果以发现误差,如此反复进行。在较新版本的Matlab(6.0以上)中提供了Matlab与DSP的统一集成环境后,众多学者对Matlab环境下的DSP调试进行了研究。文献[2-4]从CCSLink的角度出发,对Matlab环境下的DSP调试进行了原理及思路上的阐述,但均未涉及到直接代码生成。本文在介绍CCSLink的连接对象、嵌入式对象和RTDX对象的基础上,详细阐述Simulink环境下的直接代码生成。

1 CCSLink及ET TIC2000概述

Matlab具有强大的分析、计算和可视化功能,但处理速度慢;DSP具有快速的信号处理能力,但是其CCS的编译环境中数据可编辑和分析能力不如Matlab;而MathWorks公司和TI公司联合开发的Matlab Linkfor CCS Development Tools(CCSLink)和EmbeddedTarget for the TI TMS320C2000 DSP

Platform(ETTIC2000),CCSLink提供了Matlab和CCS的接口,能把Matlab和TI CCS及目标DSP连接起来。利用此工具可以像操作Matlab变量一样来操作TI DSP的存储器或寄存器。CCSLink支持CCS能够识别的任何目标板(C200,C5000,C600),此工具用于DSP程序的调试过程。而CCSLink与ETTIC2000的配合使用,可直接由Matlab的Simulink模型生成TIC2000DSP的可执行代码,能在集成、统一的Matlab环境下完成DSP的整个开发过程。

2 CCSLink环境下的DSP调试

CCSLink向用户提供了3个组件内容,如图1所示。

【含源代码】北邮dsp-MATLAB实验三梳状滤波器的应用

Dsp-matlab实验 实验三:梳状滤波器的应用 设 计 报 告 课题名称:梳状滤波器的应用 学生姓名: 班级: 班内序号: 学号: 日期:2015/06/15

目录 一、实验内容········································· 二、Matlab运行结果(含分析)································· 三、Matlab源代码···························· 四、遇到的难题与解决方法···························· 参考文献·························································

一、实验内容 录制一段自己的话音,时间长度及取样频率自定;对该段声音加入一次反射、三次反射和无穷多次反射。试验报告要求: 1、对试验原理的说明; 回声往往是原始声音衰减后的多个延迟叠加而组成的,因此回声可以用延迟单元来生成。X(n)表示原始声音信号,α为衰减系数,N为延迟周期,回声信号Y(n)=X(n)α*x(n-T)+α^2*x(n-2T)+……+α^N*x(n-NT). Z变换后的系统函数H(Z)可由梳状滤波器实现。MATLAB filter函数可用来仿真差分方程,本次实验用的就是这个函数。 2、在同一张图上,绘制原声音序列() x n、加入一次反射后的声音序列 1() x n、加入三次反射后的声音序列 3() x n和加入无穷多次反射后的声音序列() I x n;

其中蓝色为原声音序列x(n),粉红色为加入一次反射后的声音序列 x1(n),绿色为加入三次反射后的声音序列x3(n),红色为加入无穷多次反射后的声音序列x ∞(n)。 二、Matlab 运行结果(含分析)· 结合上述各序列,分析延时、衰减系数对回声效果的影响(提示:定量考察序列()x n 、1()x n 、3()x n 和()I x n 之间的区别) 延时不变时,衰减系数a 从零增大到1的过程中,回声效果由差变好再变差。a 很小时几乎听不到回声,a 在0.5±0.1时回声效果最明显,a 接近1时声音变得很不清晰,几乎不可识别。衰减系数不变时延时T 从零增大的过程中回声效果由差变好再变差。T 接近0时可以听到回声,但多次回声的层次感不清晰。0.1s1s 三、Matlab 源代码· >> [x,fs]=audioread('a.wav');sound(x,fs);a=0.6;T=0.2; y1=filter([1,zeros(1,T*fs-1),a],1,x);sound(y1,fs);wavwrite(y1,fs,'echo1.wav'); y2=filter([1,zeros(1,T*fs-1),a,zeros(1,T*fs-1),a^2,zeros(1,T*fs-1),a^3],1,x); sound(y2,fs);wavwrite(y2,fs,'echo2.wav');y3=filter(1,[1,zeros(1,T*fs-1),a],x);sound(y3,fs);wavwri te(y3,fs,'echo3.wav');plot(y3,'m'); hold on;plot(y2,'r'); hold on;plot(y1,'g');hold on;plot(x,'b'); 四、遇到的难题与解决办法 最开始遇到的问题是matlab 软件安装问题,因为电脑环境的特殊性尝试了多次才成功; 在建模过程中发现对实验原理因为学习时间过长有些不熟悉,于是翻书查阅复习,熟悉实验原理; 在实验过程中因为粗心,忘记保存,没有打符号等等之类问题使系统开始报错,细心调试之后成功建模

北邮dsp软件matlab仿真实验报告

题目: 数字信号处理MATLAB仿真实验 姓名 学院 专业 班级 学号 班内序号

实验一:数字信号的 FFT 分析 1、实验内容及要求 (1) 离散信号的频谱分析: 设信号 此信号的0.3pi 和 0.302pi 两根谱线相距很近,谱线 0.45pi 的幅度很小,请选择合适的序列长度 N 和窗函数,用 DFT 分析其频谱,要求得到清楚的三根谱线。 (2) DTMF 信号频谱分析 用计算机声卡采用一段通信系统中电话双音多频(DTMF )拨号数字 0~9的数据,采用快速傅立叶变换(FFT )分析这10个号码DTMF 拨号时的频谱。 2、实验目的 通过本次实验,应该掌握: (a) 用傅立叶变换进行信号分析时基本参数的选择。 (b) 经过离散时间傅立叶变换(DTFT )和有限长度离散傅立叶变换(DFT ) 后信号频谱上的区别,前者 DTFT 时间域是离散信号,频率域还是连续的,而 DFT 在两个域中都是离散的。 (c) 离散傅立叶变换的基本原理、特性,以及经典的快速算法(基2时间抽选法),体会快速算法的效率。 (d) 获得一个高密度频谱和高分辨率频谱的概念和方法,建立频率分辨率和时间分辨率的概念,为将来进一步进行时频分析(例如小波)的学习和研究打下基础。 (e) 建立 DFT 从整体上可看成是由窄带相邻滤波器组成的滤波器组的概念,此概念的一个典型应用是数字音频压缩中的分析滤波器,例如 DVD AC3 和MPEG Audio 。 3、程序代码 (1) N=5000; n=1:1:N; x=0.001*cos(0.45*pi*n)+sin(0.3*pi*n)-cos(0.302*pi*n-pi/4); y=fft(x,N); magy=abs(y(1:1:N/2+1)); k=0:1:N/2; w=2*pi/N*k; stem(w/pi,magy) axis([0.25,0.5,0,50]) (2) column=[1209,1336,1477,1633]; line=[697,770,852,941]; fs=10000; N=1024; 00010450303024().*cos(.)sin(.)cos(.)x n n n n ππππ=+--

【含源代码】北邮dsp-MATLAB试验一重叠相加和重叠保留

Dsp-matlab实验 实验一:重叠相加法和重叠保留法的实现 设 计报告课题名称: 学生姓名: 级:班 班内序号: 学号: 2015/06/15 日期: 目录 一、实验原理·········································

二、Matlab源代码································· 运行结果Matlab三、···························· 结果分析Matlab四、···································· 五、遇到的难题与解决方法···························· 参考文献························································· 一、实验原理 1、算法来源 DFT 是连续傅里叶变换在时域和频域上都离散的形式,将时域信号的采样变换为在离散时间傅里叶变换频域的采样。在形式上,变换两端(时域和频域上)的序列是有限长的。DFT 具备明确且合理的物理含义,适合应用于数字系统,同时可以方便地由计算机进行运算。 对于线性非移变离散系统,可由线性卷积表示时域输入输出关系,即 x(n)*h(n)=y(n) 通常采用循环卷积降低运算量,但实际中往往无法满足对信号处理的实时性要求。因此,产生了重叠相加法和重叠保留法两种典型的算法,用以快速计算线性卷积,成为了DFT 的一个重要应用。 2、两种算法基本思想 1)重叠相加法 重叠相加法和重叠保留法的实质都是以逐段地方式通过循环卷积来完成线性卷积的计算。将输入序列x(n)进行分段,每段长为N,且N≥M(M为有限长因果序列h(n)的长度),x(n)逐段

北邮-基于MatLab的Smith圆图演示软件

2013 基于MatLab的Smith圆图演示 程序设计 微波技术课程设计

目录 一.原理介绍 (2) 1.Smith圆图组成 (2) 2.阻抗匹配 (3) 2.1单支节阻抗匹配 (3) 2.2双支节阻抗匹配 (4) 二.软件功能 (5) 三.程序界面 (6) 四.使用演示 (6) 1.求解归一化阻抗,归一化导纳,反射系数及驻波比 (6) 2.画等反射系数图等电阻图等电抗图 (7) 3.求解及演示支节匹配 (8) 3.1 单支路并联短路 (8) 3.2 单支路并联开路 (9) 3.3 单支路串联短路 (11) 3.4 单支路串联开路 (13) 3.5 双支路并联短路 (15) 3.6 双支路并联开路 (16) 3.7 双支路串联短路 (18) 3.8 双支路串联开路 (19) (21) 4. 保存图像 (22) 5.差错检测 (23) 五.总结体会 (23)

一.原理介绍 微波工程中,smith圆图是一种最有效最常见的图形工具。圆图全面反映了反射系数与阻抗/导纳之间的相互管,能够极大的简化传输线及集总参数电路中复杂问题的分析与设计。 1.Smith圆图组成 Smith圆图(阻抗圆图)以反射系数Γ图为基底,所描述的r和x在Γ复平面上的轨迹。 Γ=Z L?Z0 Z L+Z0 =|Γ|e jθT(1.1) 实部:Γr=r2?1+x2 (r+1)2+x2 (1.2) 虚部:Γi=2x (r+1)2+x2 (1.3) 根据式(1.2)和式(1.3)可得到两组圆,当他们叠在一起便构成一张完整的smith圆图。 等电阻圆:(Γr?r 1+r ) 2 +Γi2=(1 1+r ) 2 ,|Γ|≤1

北邮Matlab实验报告概论

《数字信号处理》Matlab 实验 一.实现重叠相加和重叠保留算法,完成线性卷积的分段计算(可任意指定()x n 及()h n ); 1、 对算法的概括性说明; 1)重叠相加法 重叠相加法是将待过滤的信号分割成长为N 的若干段,每一段都可以和有限时宽单位取 样响应作卷积,再将过滤后的各段重叠相加。 具体算法实现:建立缓存序列,每次输 入N 点序列,通过计算x(n)和h(n) 的循环卷积实现线性卷积运算,将缓存的M-1点序 列和卷积结果相加,并输出前N 点作为计算结果,同时缓存后M-1点,如此循环,直至 所有分段计算完毕,则输出序列y(n)为最终计算结果。 2)重叠保留法 重叠保留法相当于将x l (n )和h(n )作循环卷积,然后找出循环卷积中相当于线性卷积的部 分。在这种情况下,将序列y(n)分为长为N 的若干段,每个输入段和前一段有M-1个重 叠点 。此时只需要将发生重叠的前M-1个点舍去,保留重叠的部分并输出,则可获得序 列y(n)。

2、源代码及流程图; 2.1 源代码: function[y] = overlap_add(x,h,N) M = length(h); if N

北邮数字信号处理Matlab仿真实验

《数字信号处理》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 long Q=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('DFT x(n)');xlabel('k');axis([0,35,0,15]); subplot(3,1,2);stem(abs(Xkfft(1:1:32)),'g.');title('FFT x(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 N n Q x n ?≤≤=? <≥?11,011)()()(k k 1 nk 1 -=--===∑∑-=-=N k QW Q QW W n x k X N N n N N n N N n ,

北邮DSP数字信号处理Matlab实验一

实验一:数字信号的产生和基本运算 (1) 常用数字信号序列的产生: 熟悉Matlab产生数字信号的基本命令,加深对数字信号概念的理解,并能够用Matlab 产生和绘制出一些常用离散信号序列。请用Matlab画出下列序列的波形(-10

b)利用.m文件 M文件代码: function[x,n]=u(n0,n1,n2) if((n0=0; 实现2u(n-5)的命令是: >> x=2*u(5,-10,10); >> n=-10:10; >> stem(n,x) 图像为:

MATLAB实验报告北京邮电大学

Matlab实验报告 学院:信息与通信工程学院班级:201321113 学号:2013210381 班内序号:18 姓名:石雪原

实验题目1.实现重叠相加和重叠保留算法一.实验原理 重叠相加法和重叠保留法的实质都是以逐段地方式通过循环卷积来完成线性卷积的计算。将输入序列x(n)进行分段,每段长为N,且N≥M(M为有限长因果序列h(n)的长度),x(n)逐段与h(n)进行循环卷积,在重叠保留法中需在x(n)序列首部加入长度为M-1的0序列。 在算法中,在获得N个点的输入后,进行N+M-1点循环卷积计算,之后输出N个点。通过for循环逐段进行循环卷积,使用FFT和IFFT计算两个有限长序列的N点循环卷积结果。 二.源代码和流程图 重叠相加法代码 function [Y]=overpl(x,h,N) Lx=length(x); %序列长度 M=length(h); %h(n)长度 x=[x,zeros(1,N-1)]; t=zeros(1,M-1); Y=zeros(1,Lx+M-1); a=floor(Lx/N); for k=0:a A=x(k*N+1:k*N+N); y1=fft(A,Lx+M-1); %利用fft进行运算 y2=fft(h,Lx+M-1); y3=y1.*y2; q=ifft(y3,Lx+M-1); Y(k*N+1:k*N+M-1)=q(1:M-1)+t(1:M-1); Y(k*N+M:k*N+N)=q(M:N); t(1:M-1)=q(N+1:N+M-1); end Y(1:Lx+M-1);

对应流程图 图二 图一:每段利用fft和ifft实现循环卷积 图二:对x(n)逐段进行循环卷积然后相加得输出线性卷积结果y(n) 重叠保留法代码 function[Y]=overlpsav(x,h,N) Lx=length(x); M=length(h); M1=M -1; L=N-M1; h=[h,zeros(1,N-M)]; x=[zeros(1,M1),x,zeros(1,N-1)];

北邮matlab物理专业考试题!!

一、Matlab 基本命令,循环排序,函数,矩阵等问题 1、下列命令的意思: det(A) — 求行列式 eig(A)—返回矩阵的特征值和特征向量 fliplr(A)—左右翻转矩阵A mean(A)—求A 的平均值 std(A)—求A 的均方差 angle — 求相位角 ifft — 快速傅里叶变换 sort(A)— 按升序排列 2、a =[3 2 5 6 1 4]。按下列"选择排序法"编程排序. (1)找出全部N 个数据中最小的一个,把它和数列的第1个数字交换位置。 (2)找出剩下N-1个数据中最小的一个,把它和数列的第2个数字交换位置。 (3).......... (4)一直做到只剩下一个数据为止。 clear;clc a=[3 2 5 6 1 4]; for i=1:5 min=a(i);n=i; for j=i+1:6 if a(j)

北邮Matlab仿真 实验

[键入公司名称] Matlab仿真实验 [键入文档副标题] 2010211201陈建文10210987 2012-12-10 实验报告主要内容是对3个实验的完成过程的介绍和总结

目录 数字信号的FFT分析 (2) DTMF信号的编码 (6) FIR数字滤波器的设计和实现 (10) 错误分析 (14) 经验总结 (15) 实验一:数字信号的FFT分析: 实验目的: (1)用傅立叶变换进行分析是基本参数的选择。 (2)经过离散时间傅立叶变换和有限长度离散傅立叶变换后信号频谱上的区别,前者DTMF时间域是离散信号,频率域还是连续的,而DFT在两个区域中都是离散的。 (3)离散傅立叶变换的基本原理、特性,以及经典的快速算法,体会快速算法的效率 (4)获得一个高密度频谱和高分辨率频谱的概念和方法,建立频率分辨率和时间分辨率的概念,为将来进一步进行时域分析的学习和研究大侠基础。 (5)建立DFT从整体上可看成是有窄带相邻滤波器组成的滤波器组的概念,此概念的一个典型应用是数字音频压缩中的分析滤波器,例如DVD AC3和 MPEG Audio。 实验内容和要求: (1)离散信号的频谱分析: 设信号 x(n)=0.001*cos(0.45n*pi)+sin(0.3n*pi)-cos(0.302n*pi-pi/4) 此信号的0.3pi和0.302pi的两根频谱线相距很近,谱线0.45pi的幅度很小,请选择合适的序列长度N和窗函数,用DFT分析其频谱,要求得到清楚的三根谱线。

(2)DTMF信号频谱分析 用计算机声卡采用一段通信系统中电话双音多频(DTMF)拨号数字0——9的数 据,采用快速傅立叶变换(FFT)分析这10个号码DTMF拨号是的频谱。 设计思路1: 只要将x(n)表达式敲入,再利用fft(x(n),N)函数进行傅立叶变换,之后再用subplot函数进行图形绘制,本题关键在于N的确定,只有合适的大小才能满足题目要求。 代码1: N = 1000; % Length of DFT n = [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); xn1=0.001*cos(0.45*n*pi); Xk1 = fft(xn1,N); xn2=sin(0.3*n*pi); Xk2 = fft(xn2,N); xn3=-cos(0.302*n*pi-pi/4); Xk3 = fft(xn3,N); k=[0:1:N/2]; subplot(5,1,1);stem(k,abs(xn(1:1:(N/2+1))),'.');title('x(n)');xlabel( 'k');axis([140,240,0,4]); subplot(5,1,2);stem(k,abs(Xk(1:1:(N/2+1))),'r.');title('DFT 0.001*cos(0.45*n*pi)+sin(0.3*n*pi)-cos(0.302*n*pi- pi/4)');xlabel('k');axis([140,240,0,4]); subplot(5,1,3);stem(k,abs(Xk1(1:1:(N/2+1))),'g.');title('DFpi)');xlab el('k');axis([140,240,0,4]); subplot(5,1,4);stem(k,abs(Xk2(1:1:(N/2+1))),'b');title('DFT sin(0.3*n*pi)');xlabel('k');axis([140,240,0,4]); subplot(5,1,5);stem(k,abs(Xk3(1:1:(N/2+1))));title('DFT - cos(0.302*n*pi-pi/4)');xlabel('k');axis([140,240,0,4]); 3 / 15

北邮大二下 Matlab实验报告

北京邮电大学 《数字信号处理》Matlab实验 学院: 班级: 姓名: 学号: 班内序号:

实验一 【实验要求】 实现重叠相加和重叠保留算法,完成线性卷积的分段计算。 【实验原理】 一、算法产生背景 DFT是连续傅里叶变换在时域和频域上都离散的形式,将时域信号的采样变换为在离散时间傅里叶变换频域的采样。 对于线性非移变离散系统,可由线性卷积表示时域输入输出关系。即y(n)=x(n)*h(n)。 通常采用循环卷积降低运算量,但实际中往往无法满足对信号处理的实时性要求。因此,产生了重叠相加法和重叠保留法两种典型的算法,用以快速计算线性卷积,成为了DFT的一个重要应用。 二、算法基本思想 1.重叠相加法 重叠相加法是将待过滤的信号分割成长为N的若干段,每一段都可以和有限时宽单位取样响应作卷积,再将过滤后的各段重叠相加。 具体算法实现:建立缓存序列,每次输入N点序列,通过计算x(n)和h(n)的循环卷积实现线性卷积运算,将缓存的M-1点序列和卷积结果相加,并输出前N点作为计算结果,同时缓存后M-1点,如此循环,直至所有分段计算完毕,则输出序列y(n)为最终计算结果。

2.重叠保留法 重叠保留法相当于将x(n)和h(n)作循环卷积,然后找出循环卷积中相当于线性卷积的部分。在这种情况下,将序列y(n)分为长为N的若干段,每个输入段和前一段有M-1个重叠点。此时只需要将发生重叠的前M-1个点舍去,保留重叠的部分并输出,则可获得序列y(n)。

【流程图设计】1.重叠相加法

2.重叠保留法

【MATLAB源代码】 1.重叠相加法 (1)function y = ovrlplus (x,h,N) %重叠相加法实现 M = length(h); %获得h(n)的长度 if N N error('N must be>=the length of x1') end if length(x2)>N error('N must be>=the length of x1') end x1=[x1 zeros(1,N-length(x1))]; x2=[x2 zeros(1,N-length(x2))]; m=[0:1:N-1]; x2=x2(mod(-m,N)+1); H=zeros(N,N); for n=1:1:N H(n,:)=cirshftt(x2,n-1,N); end y=x1*conj(H'); (3)function y=cirshftt(x,m,N)%循环移位实现 if length(x)>N error('N must be >= the length of x') end x=[x zeros(1,N-length(x))];%补零函数(x(n)的长度小于N,将不够的地方全部补

北邮MATLab仿真实验报告DSP

北京邮电大学MATLAB仿真实验报告 姓名: 班级: 学号: 班内序号

实验一:数字信号的FFT 分析 1. 实验内容及要求 离散信号的频谱分析: 设信号 此信号的0.3pi 和 0.302pi 两根谱线相距很近,谱线 0.45pi 的幅度很小,请选择合适的序列长度 N 和窗函数,用 DFT 分析其频谱,要求得到清楚的三根谱线。 2. 实验分析 要得到清晰的三根谱线,用matlab 内置函数fft 对时域信号进行快速傅里叶变换,需要选好变换点数N ,以避免出现频谱模糊现象。程序中选择N=1000 由于谱线0.45pi 的幅度很小,在作图时需要对坐标比例进行控制。使用axis 函数实现。 3. 代码及注释 频谱分析: clf; close all;%关闭所有图形窗口 N=1000;%DFT 点数 n=[1:1:N]; x=0.001*cos(0.45*n*pi)+sin(0.3*n*pi)-cos(0.302*n*pi-pi/4); y=fft(x,N); mag=abs(y);%对FFT 结果求模 w=2*pi/N*[0:1:N-1]; %数字角频率w subplot(2,1,1);%将图形窗分为2行1列 stem(n,x,'.');%画脉冲图 title('时域'); xlabel('n'); ylabel('x(n)'); subplot(2,1,2); stem(w/pi,mag);%归一化角频率 axis([0 0.5 0 2]);%控制坐标范围以使谱线幅度合适 title('1000点DFT'); xlabel('数字频率'); ylabel('X(k)'); grid on; 4. 结果截图 00010450303024().*cos(.)sin(.)cos(.)x n n n n ππππ=+--

北京邮电大学MATLAB实验报告

DSP--MATLAB实验报告 实验名称:MATLAB第一次上级实验 学生姓名: 班级: 班内序号: 学号: 日期: 1.实验要求 (1) 常用数字信号序列的产生: 熟悉Matlab 产生数字信号的基本命令,加深对数字信号概念的理解,并能够用Matlab 产生和绘制出一些常用离散信号序列。请用Matlab 画出下列序列的波形(-10> plot(n,x) 单位阶跃序列 2 u(n-5) :x=stepseq(5,-20,120),n=[-20:120];plot(n,2*x) 矩形序列R(n):x1=stepseq(-10,-10,60),n1=[-10:60],x2==stepseq(10,-10,60),n2=[-10:60],y=x1-x2,n= [-10:60],plot(n,y) y(n)=2sin(0.3πn)+ 0.5cos2(0.6πn):n=[0:0.1:20];x=2*sin(0.3*pi*n)+0.5*cos(2*0.6*pi*n);plot(n,x) 加法:δ(n)+ 2 u(n-5):x1=impseq(0,-20,120);n=[-20:120];

北邮DSP Matlab仿真实验

《数字信号处理》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 long Q=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('DFT x(n)');xlabel('k');axis([0,35,0,15]); subplot(3,1,2);stem(abs(Xkfft(1:1:32)),'g.');title('FFT x(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 N n Q x n ?≤≤=? <≥?11,011)()()(k k 1 nk 1 -=--===∑∑-=-=N k QW Q QW W n x k X N N n N N n N N n ,

北邮《数字信号处理》Matlab实验——梳状滤波器的应用

实验题目3:梳状滤波器的应用 实验目的: 录制一段自己的话音,时间长度及取样频率自定;对该段声音加入一次反射、三次反射和无穷多次反射。 试验内容: 1、对试验原理的说明 回声可以认为是由原始声音衰减后的多个延迟叠加组成的,因此回声可以用延迟单元来生成。x(n)表示原始声音信号,a为衰减系数,T为延迟周期,回声信号Y(n)=X(n)+a*x(n‐T)+a^2*x(n‐2T)+……+a^k*x(n‐kT)。Z变换后的系统函数H(z)可由梳状滤波器实现。本实验用MATLAB中的filter(b,a,x)函数可用来仿真差分方程 a(1)*y(n)=b(1)*x(n)+b(2)*x(n‐1)+...+b(nb+1)*x(n‐nb)‐a(2)*y(n‐1)‐...‐a(na+1)*y(n‐na)。 2、在同一张图上,绘制原声音序列x(n)、加入一次反射后的声音序列x1(n)、加入三次反射后的声音序列x3(n)和加入无穷多次反射后的声音序列x I(n)。 [x, fs] = wavread('a.wav'); % sound(x, fs); a = 0.6; T = 0.2; y1 = filter([1, zeros(1,T*fs-1), a], 1, x); % sound(y1, fs); wavwrite(y1, fs, 'echo1.wav'); y2 = filter([1, zeros(1,T*fs-1), a, zeros(1,T*fs-1), a^2, zeros(1,T*fs-1), a^3], 1, x); % sound(y2, fs); wavwrite(y2, fs, 'echo2.wav'); y3 = filter(1, [1, zeros(1,T*fs-1), a], x); % sound(y3, fs); wavwrite(y3, fs, 'echo3.wav'); plot(y3, 'm'); hold on; plot(y2, 'r'); hold on; plot(y1, 'g'); hold on; plot(x, 'b');

北邮DSP Matlab实验一

1.实验要求 ●(1) 常用数字信号序列的产生: ●熟悉 Matlab 产生数字信号的基本命令,加深对数字信号概念的理解,并能够 用 Matlab 产生和绘制出一些常用离散信号序列。请用 Matlab 画出下列序列的波形(-10=0];x=2*x; stem(n,x) xlabel('n');ylabel('x(n)');title('单位阶跃序列2 u(n-5)') grid ●矩形序列: no=0; n01=4;

北邮数字信号处理软件实验Matlab

数字信号处理软件实验 MATLAB仿真 2015年12月16日

实验一:数字信号的 FFT 分析 ● 实验目的 通过本次实验,应该掌握: (a) 用傅立叶变换进行信号分析时基本参数的选择。 (b) 经过离散时间傅立叶变换(DTFT )和有限长度离散傅立叶变换(DFT )后信号频谱上的区别,前者 DTFT 时间域是离散信号,频率域还是连续的,而 DFT 在两个域中都是离散的。 (c) 离散傅立叶变换的基本原理、特性,以及经典的快速算法(基2时间抽选法),体会快速算法的效率。 (d) 获得一个高密度频谱和高分辨率频谱的概念和方法,建立频率分辨率和时间分辨率的概念,为将来进一步进行时频分析(例如小波)的学习和研究打下基础。 (e) 建立 DFT 从整体上可看成是由窄带相邻滤波器组成的滤波器组的概念,此概念的一个典型应用是数字音频压缩中的分析滤波器,例如 DVD AC3 和MPEG Audio 。 ● 实验内容及要求 ? 离散信号的频谱分析 设信号 此信号的0.3pi 和 0.302pi 两根谱线相距很近,谱线 0.45pi 的幅度很小,请选择合适的序列长度 N 和窗函数,用 DFT 分析其频谱,要求得到清楚的三根谱线。 ? DTMF 信号频谱分析 用计算机声卡采用一段通信系统中电话双音多频(DTMF )拨号数字 0~9的数据,采用快速傅立叶变换(FFT )分析这10个号码DTMF 拨号时的频谱。 00010450303024().*cos(.)sin(.)cos(.)x n n n n ππππ=+--

●MATLAB代码及结果 ?离散信号的频谱分析 clf; close all; N=1000; n=1:1:N; x=0.001*cos(0.45*n*pi)+sin(0.3*n*pi)-cos(0.302*n*pi-pi/4); y=fft(x,N); mag=abs(y); w=2*pi/N*[0:1:N-1]; stem(w/pi,mag); axis([0.25 0.5 0 2]); xlabel('频率'); ylabel('X(k)'); grid on;

【VIP专享】北邮《数字信号处理》Matlab实验——周期序列的谱分析

实验题目2:周期序列的谱分析 实验目的: 利用DFT 分析模拟信号()()cos 16a x t t π=之频谱。 试验内容: 1、设定采样周期T 并说明原因 根据奈奎斯特取样条件,fs>=2f=2*8=16Hz ,所以取fs=20Hz ,T=1/f=0.05s 。 2、若令x(n)=cos(16πnT),确定该序列之周期N 并说明原因 因为4()cos()5x n n π=,2542 5 ππ=,所以周期N=5. 3、绘制10个周期内x(n)的取值情况 T = 1/20; t = 0:T:5-T; N = 5; figure(1); xn = cos(16*pi*t); stem(0:10*N-1, xn(1:10*N)); title('10个周期内x(n)的取值情况'); ylabel('x(n)'); xlabel('n');

4、令x1(n)表示x(n)的主值序列,绘制|DFT(x1(n)|,解释取值情况 figure(2); x1n = xn(1:N); stem(0:N-1, x1n); title('x(n)的主值序列'); ylabel('x1(n)'); xlabel('n'); figure(3); Xk = fft(x1n, N); stem(0:N-1, abs(Xk)); title('|DFT(x1(n))|'); ylabel('X1(k)'); xlabel('k');

所得X1(k)取值即为x(n)的5点(一个周期内)DFT结果,为清晰谱线。 5、令x2(n)表示x(n)的任一周期,绘制|DFT(x2(n)|,解释取值情况 figure(4); r = 4; x2n = xn(r:r+N-1); stem(0:N-1, x2n); title('x(n)的任一周期'); ylabel('x2(n)'); xlabel('n'); figure(5); Xk = fft(x2n, N); stem(0:N-1, abs(Xk)); title('|DFT(x2(n))|'); ylabel('X2(k)'); xlabel('k');

北邮Matlab实验报告

《数字信号处理》Matlab 实验 信通十三班 黄嘉慧 2012210389 一.实现重叠相加和重叠保留算法,完成线性卷积的分段计算(可任意指定()x n 及()h n );试验报告包括: 1、 对算法的概括性说明; 重叠相加法是将待过滤的信号分割成长为N 的若干段,每一段都可以和有限时宽单位取样响应作卷积,再将过滤后的各段重叠相加。建立缓存序列,每次输入N 点序列,通过 计算x(n)和h(n) 的循环卷积实现线性卷积运算,将缓存的M ‐1 点序列和卷积结果相加,并 输出前N 点作为计算结果,同时缓存后M ‐1 点,如此循环,直至所有分段计算完毕,则输出序列y(n)为最终计算结果。重叠保留法相当于将想xl(n)和h(n)作循环卷积,然后找出循环卷中相当于线性的部分。在这种情况下,将序列 y(n)分为长N 的若干段,每个输入段和前一段有 M ‐1 个重叠点。此时只需要将发生重叠的前 M ‐1 个点舍去,保留重叠的部分并输出,则可获得序列 y(n)。 2、 源代码及流程图; 流程图: 重叠相加法: 否

源代码:function%循环卷积 X1k = fft(x1,L); X2k = fft(x2,L); Yk = X1k.*X2k; y = ifft(Yk); function [y]=overlaplus(x,h,N)%重叠相加法 lenx=length(x); M=length(h); L=N+(M-1); x=[x,zeros(1,L-1)]; K=floor(lenx/N); for k=0:K xk=x(k*N+1:k*N+N); Y(k+1,:)= circular_conv(xk,h,L); end tn=zeros(1,M-1); for k=0:K Y(k+1,1:M-1)= Y(k+1,1:M-1)+tn; tn=Y(k+1,N+1:L); end Y=Y(:,2:N+1)'; y=(Y(:))'; 结果: > x=[1 2 3 4 5 6 7]; h=[2 3 4 5 6 72 4 56 ]; y=overlaplus(x,h,10) y = 7.0000 16.0000 30.0000 50.0000 142.0000 238.0000 374.0000 500.0000 615.0000 718.0000

相关主题
相关文档
最新文档