收藏 分享(赏)

基于MATLAB的数字信号发生器报告精品资料.docx

上传人:风样花鼓 文档编号:21124603 上传时间:2023-07-07 格式:DOCX 页数:26 大小:255.80KB
下载 相关 举报
基于MATLAB的数字信号发生器报告精品资料.docx_第1页
第1页 / 共26页
基于MATLAB的数字信号发生器报告精品资料.docx_第2页
第2页 / 共26页
基于MATLAB的数字信号发生器报告精品资料.docx_第3页
第3页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、基于MATLAB的数字信号发生器设计报告蔡辉机电M201070440摘 要:数字信号发生器是基于软硬件实现的一种波形发生仪器。在工工程实践中需要检测和分析的各种复杂信号均可分解成各简单信号之和,而这些简单信号皆可由数字信号发生器模拟产生,因此它在工程分析和实验教学有着广泛的应用。MATLAB是一个数据分析和处理功能十分强大的工程实用软件,他的数据采集工具箱为实现数据的输入和输出提供了十分方便的函数和命令,在数字信号处理方面方便实用。本文介绍了使用MATLAB建立一个简单数字信号发生器的基本流程,并详细叙述了简单波形(正弦波、方波、三角波、锯齿波、白噪声)信号的具体实现方法。关键字:MATLAB

2、 ,数字信号发生器1 概述随着计算机软硬件技术的发展,越来越多现实物品的功能能够由计算机实现。信号发生器原本是模拟电子技术发展的产物,到后来的数字信号发生器也是通过硬件实现的,本文将给出通过计算机软件实现的数字信号发生器。信号发生器是一种常用的信号源,广泛应用于电子技术实验、自控系统和科学研究等领域。传统的台式仪器如任意函数发生器等加工工艺复杂、价格高、仪器面板单调、数据存储、处理不方便。以Matlab和LabVlEW为代表的软件的出现,轻松地用虚拟仪器技术解决了这些问题。Matlab是一个数据分析和处理功能十分强大的工程实用软件,他的数据采集工具箱(data acquisition tool

3、box)为实现数据的输入和输出提供了十分方便的函数和命令,利用这些函数和命令可以很容易地实现对外部物理世界的信号输出和输入。根据声卡输出信号的原理,采用Matlab软件编程,可以方便地输出所需要的正弦波、三角波、方波等多种信号,有效地实现信号发生器的基本功能。2 设计原理要设计的数字信号有正弦信号、方波信号、三角波、锯齿波、白噪声、脉冲信号。其中,前五种波形都可以利用MATLAB提供的函数实现,并根据输入的幅值、相位、频率等信息进行调整。脉冲信号由自己编写程序实现,并以定义的时间节点控制脉冲出现的时刻。2.1 正弦信号的实现正弦波信号的数学表达式如2.1, 2.1其中:为幅值; 为频率; 为相

4、位。在MATLAB中,相应的数字信号可以由下式2.2计算, 2.2式中时间变量t可构造为一个一维数组,并由式2.3进行付值, 2.3其中:采样频率。幅值、频率、相位、采样频率等在用户界面输入。在t与y的表达式都得到以后,用plot二维作图函数获得波形显示。2.2 方波信号实现像正弦波一样,从用户界面获得幅值、频率、相位、采样频率等信息,用square函数获得对应y坐标值,用plot绘图,格式如式2.4 2.4其中,占空比。2.3 三角波和锯齿波的实现这两种波形的y坐标表达式皆要借助于sawtooth命令。Sawtooth(t)用于产生周期为,幅值从-1 +1的锯齿波,波形的斜率为。Sawtoo

5、th(t,width)用于产生三角波,其中width是取值介于0和1之间的一个参数,它决定了在一个周期中峰值的发生点。本设计中取width=0.5,可以获得标准形状的三角波。完整y坐标表达式如式2.5, 2.52.4 白噪声的实现白噪声的定义:白噪声是指功率谱密度在整个频域内均匀分布的噪声。换句话说,此信号在各个频段上的功率是一样的,由于白光是由各种频率(颜色)的单色光混合而成,因而此信号的这种具有平坦功率谱的性质被称作是“白色的”,此信号也因此被称作白噪声。白噪声的实现借助于randn函数,它的功能是产生一个均值为零方差为1的随机高斯分布序列,如式2.6 2.6其中,幅值; 2.5 脉冲信号

6、的实现考虑到脉冲信号出现的时刻可以进行调节,借助图形界面输入相位信息设置时间节点,如式 2.73 设计方法(1)图形界面设计打开MATLAB,新建一个空白的图形界面文件,计算需要添加的控件种类及个数并设计它们的布局。(a) 添加1个axes控件,用于显示波形;(b) 添加5个static text 控件作为窗口说明使用;(c) 添加4个Slider 控件用于输入幅值、频率等信号信息;(d) 添加4个edit text 控件用于显示幅值、频率等信号信息;(e) 添加7个push button 空间用于各种操作的开始控制;双击各个控件并修改其颜色、大小及string属性。得到界面如下:(2)各控件

7、对应的回调函数的编辑界面控件及布局创建完成以后,自动生成包含各控件回调函数在内的m文件。点击保存时可以修改fig及m文件名。系统自动生成的m文件包括:function varargout = signalgenerator(varargin)function signalgenerator_OpeningFcn(hObject, eventdata, handles, varargin)function varargout = signalgenerator_OutputFcn(hObject, eventdata, handles以及各个控件对应的回调函数的框架,如:function a_C

8、allback(hObject, eventdata, handles)等等。在前面已经介绍了各个波形的实现原理及方法,现仅以正弦函数的实现为例介绍回调函数的使用及编辑。回调函数即在一定的操作下自动执行的指令代码。注意回调函数中定义的变量只在其内部有效。正弦波按钮的回调函数如下:% - Executes on button press in pushbuttonzhengxian.function pushbuttonzhengxian_Callback(hObject, eventdata, handles)% hObject handle to pushbuttonzhengxian (s

9、ee GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)a=str2double(get(handles.editFUZHI,String);f=str2double(get(handles.editPINLU,String);x=str2double(get(handles.editXIANGWEI,String);cf=str2double(get(handles.editk,St

10、ring);t=0:1/cf:0.5 ;%按设定的采样频率将时间均匀分割y=a*sin(2*pi*(f*t+x/360);plot(t,y);wavplay(y);%播放生成的信号grid on;i=10;if aI %定义了不同情况下x轴及y轴上的坐标显示范围 axis(0,0.5,-i,i); else axis(0,0.5,-(a+1),(a+1);%超出预定值则重设坐标范围end4 波形显示(1) 正弦波(2)三角波以下分别是:(3)锯齿波(4)方波(5)白噪声(6)脉冲信号。5 存在的问题由于是初次使用MATLAB的GUIDE模块,在设计时暴露出了许多问题:(1) 对其界面和一些操作

11、还不熟悉,直接导致编程中效率很低;(2) 对于基本的MATLAB语句和常用的函数的学习不系统,有时好的思路无法用MATLAB语言干净利落的表达;(3) 在初期对句柄的理解不够深刻,思路不够清晰。6 结束语在后面的学习中,我将更系统的学习MATLAB这一强大的工程软件,争取对他有一个宏观的认识,在此基础上多进行编程练习,加强对常用函数和概念的记忆,最后,联系实际,尝试解决一些常见的工程问题。致谢工程数字信号处理算法与实践是一门理论与实践相结合但更偏重于实践的课程,对于提高我们学生自己的动手能力有很大的帮助。在课程的学习过程中,何岭松老师一直强调学以致用,在每一阶段给我们设置了一个任务,让我们带着

12、问题去学习,从查找文献到提取有用信息,从软件安装到实际操作,从编程到最后的调试,在这一过程中我自主能动性被激发出来,迫使我克服一个有一个难题。老师提倡的这种“无形”的自主学习方式,正是我接下来的研究生阶段发现问题解决问题模式。通过这样的一次训练,我对今如何进行学习研究有了清晰的理解,在这里向他表示感谢。同时,在设计的完成过程中,我从实验室师兄那里得到了宝贵的建议和帮助,有时他们的一个字,一句话就让我有醍醐灌顶,茅塞顿开之感。同时,寝室室友之间的交流也让我收益匪浅,在此一并表示诚挚的谢意。参考文献1 车子萍. 基于Matlab的虚拟信号发生器设计. 电脑学习. 2010.2 No.12 薛年喜M

13、ATLAB在数字信号处理中的应用.M 北京:清华大学出版社,2005.3 唐向宏,岳恒立等. MATLAB及在电子信息类课程中的应用.M 北京:电子工业出版社,2005.8附录资料:MATLAB的30个方法1 内部常数pi 圆周率 exp(1)自然对数的底数ei 或j 虚数单位Inf或 inf 无穷大 2 数学运算符a+b 加法a-b减法a*b矩阵乘法a.*b数组乘法a/b矩阵右除ab矩阵左除a./b数组右除a.b数组左除ab 矩阵乘方a.b数组乘方-a负号 共轭转置.一般转置3 关系运算符=等于大于=大于或等于=不等于4 常用内部数学函数 指数函数exp(x)以e为底数对数函数log(x)自

14、然对数,即以e为底数的对数log10(x)常用对数,即以10为底数的对数log2(x)以2为底数的x的对数开方函数sqrt(x)表示x的算术平方根绝对值函数abs(x)表示实数的绝对值以及复数的模三角函数(自变量的单位为弧度)sin(x)正弦函数cos(x)余弦函数tan(x)正切函数cot(x)余切函数sec(x)正割函数csc(x)余割函数反三角函数 asin(x)反正弦函数acos(x)反余弦函数atan(x)反正切函数acot(x)反余切函数asec(x)反正割函数acsc(x)反余割函数双曲函数 sinh(x)双曲正弦函数cosh(x)双曲余弦函数tanh(x)双曲正切函数coth(

15、x)双曲余切函数sech(x)双曲正割函数csch(x)双曲余割函数反双曲函数 asinh(x)反双曲正弦函数acosh(x)反双曲余弦函数atanh(x)反双曲正切函数acoth(x)反双曲余切函数asech(x)反双曲正割函数acsch(x)反双曲余割函数求角度函数atan2(y,x)以坐标原点为顶点,x轴正半轴为始边,从原点到点(x,y)的射线为终边的角,其单位为弧度,范围为( , 数论函数gcd(a,b)两个整数的最大公约数lcm(a,b)两个整数的最小公倍数排列组合函数factorial(n)阶乘函数,表示n的阶乘 复数函数 real(z)实部函数imag(z)虚部函数abs(z)求

16、复数z的模angle(z)求复数z的辐角,其范围是( , conj(z)求复数z的共轭复数求整函数与截尾函数ceil(x)表示大于或等于实数x的最小整数floor(x)表示小于或等于实数x的最大整数round(x)最接近x的整数最大、最小函数max(a,b,c,)求最大数min(a,b,c,)求最小数符号函数 sign(x)5 自定义函数-调用时:“返回值列=M文件名(参数列)”function 返回变量=函数名(输入变量) 注释说明语句段(此部分可有可无)函数体语句 6进行函数的复合运算compose(f,g) 返回值为f(g(y)compose(f,g,z) 返回值为f(g(z)compo

17、se(f,g,x,.z) 返回值为f(g(z)compose(f,g,x,y,z) 返回值为f(g(z)7 因式分解syms 表达式中包含的变量 factor(表达式) 8 代数式展开syms 表达式中包含的变量 expand(表达式)9 合并同类项syms 表达式中包含的变量 collect(表达式,指定的变量)10 进行数学式化简syms 表达式中包含的变量 simplify(表达式)11 进行变量替换syms 表达式和代换式中包含的所有变量 subs(表达式,要替换的变量或式子,代换式)12 进行数学式的转换调用Maple中数学式的转换命令,调用格式如下:maple(Maple的数学式转

18、换命令) 即:maple(convert(表达式,form)将表达式转换成form的表示方式 maple(convert(表达式,form, x) 指定变量为x,将依赖于变量x的函数转换成form的表示方式(此指令仅对form为exp与sincos的转换式有用) 13 解方程solve(方程,变元) 注:方程的等号用普通的等号: = 14 解不等式调用maple中解不等式的命令即可,调用形式如下: maple(maple中解不等式的命令)具体说,包括以下五种:maple( solve(不等式)) maple( solve(不等式,变元) ) maple( solve(不等式,变元) ) map

19、le( solve(不等式,变元) ) maple( solve(不等式,变元) )15 解不等式组调用maple中解不等式组的命令即可,调用形式如下: maple(maple中解不等式组的命令) 即:maple( solve(不等式组,变元组) )16 画图方法:先产生横坐标的取值和相应的纵坐标的取值,然后执行命令: plot(x,y) 方法2:fplot(f(x),xmin,xmax) fplot(f(x),xmin,xmax,ymin,ymax) 方法3:ezplot(f(x) ezplot(f(x) ,xmin,xmax) ezplot(f(x) ,xmin,xmax,ymin,yma

20、x) 17 求极限(1)极限:syms x limit(f(x), x, a) (2)单侧极限:左极限:syms x limit(f(x), x, a,left)右极限:syms x limit(f(x), x, a,right) 18 求导数diff(f(x) diff(f(x),x) 或者:syms x diff(f(x) syms x diff(f(x), x) 19 求高阶导数 diff(f(x),n) diff(f(x),x,n)或者:syms x diff(f(x),n)syms x diff(f(x), x,n) 20 在MATLAB中没有直接求隐函数导数的命令,但是我们可以根据

21、数学中求隐函数导数的方法,在中一步一步地进行推导;也可以自己编一个求隐函数导数的小程序;不过,最简便的方法是调用Maple中求隐函数导数的命令,调用格式如下: maple(implicitdiff(f(x,y)=0,y,x) 在MATLAB中,没有直接求参数方程确定的函数的导数的命令,只能根据参数方程确定的函数的求导公式 一步一步地进行推导;或者,干脆自己编一个小程序,应用起来会更加方便。21 求不定积分 int(f(x) int (f(x),x)或者:syms x int(f(x) syms x int(f(x), x) 22 求定积分、广义积分 int(f(x),a,b) int (f(x

22、),x,a,b)或者:syms x int(f(x),a,b) syms x int(f(x), x,a,b) 23 进行换元积分的计算自身没有提供这一功能,但是可以调用Maple函数库中的changevar命令,调用方法如下:maple( with(student) ) 加载student函数库后,才能使用changevar命令maple( changevar( m(x)=p(u), Int(f(x),x) ) ) 把积分表达式中的m(x)代换成p(u)24 进行分部积分的计算自身没有提供这一功能,但是可以调用Maple函数库中的intparts命令,调用方法如下: maple( with(

23、student) ) 加载student函数库后,才能使用intparts命令maple(intparts(Int(f(x),x),u) ) 指定u,用分部积分公式 进行计算25 对数列和级数进行求和 syms n symsum(f(n), n a ,b )26 进行连乘 maple(product(f(n),n=a.b)27 展开级数syms x taylor(f(x), x, n, a )28 进行积分变换syms s t laplace( f(t), t, s ) 拉普拉斯变换 ilaplace( F(s), s, t ) 拉普拉斯变换的逆变换 syms t fourier( f(t),

24、 t, ) 傅立叶变换 ifourier( F(), , t ) 傅立叶变换的逆变换 syms n z ztrans( f(n), n, z) Z变换 iztrans( F(z), z, n ) Z变换的逆变换 在matlab中,矩形法、梯形法和辛普森法求近似积分可以用自身的命令,也可调用Maple的相应命令。调用方法如下: maple(with(student) ) maple(Maple中求定积分近似值的命令)29 解微分方程dsolve(微分方程,自变量) dsolve(微分方程,初始条件或边界条件,自变量)30 解微分方程组dsolve(微分方程组,自变量) dsolve(微分方程组,初始条件或边界条件,自变量)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 网络科技 > 其他相关文档

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报