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

关键字:MATLAB ,数字信号发生器

概述

随着计算机软硬件技术的发展,越来越多现实物品的功能能够由计算机实现。信号发生器原本是模拟电子技术发展的产物,到后来的数字信号发生器也是通过硬件实现的,本文将给出通过计算机软件实现的数字信号发生器。

信号发生器是一种常用的信号源,广泛应用于电子技术实验、自控系统和科学研究等领域。传统的台式仪器如任意函数发生器等加工工艺复杂、价格高、仪器面板单调、数据存储、处理不方便。以 Matlab

和LabVlEW 为代表的软件的出现,轻松地用虚拟仪器技术解决了这些问题。

Matlab 是一个数据分析和处理功能十分强大的工程实用软件,他的数据采集工具箱(data acquisition toolbox)为实现数据的输入和输出提供了十分方便的函数和命令,利用这些函数和命令可以很容易地实现对外部物理世界的信号输出和输入。根据声卡输出信号的原理, 采用Matlab 软件编程,可以方便地输出所需要的正弦波、三角波、方波等多种信号,有效地实现信号发生器的基本功能。

设计原理

要设计的数字信号有正弦信号、方波信号、三角波、锯齿波、白噪声、脉冲信号。其中,前五种波形都可以利用 MATLAB 提供的函数实现,并根据输入的幅值、相位、频率等信息进行调整。脉冲信号由自己编写程序实现,并以定义的时间节点控制脉冲出现的时刻。

正弦信号的实现

正弦波信号的数学表达式如 2.1,

yAsin 2ft

2.1

其中: A 为幅值;

f 为频率;

为相位。

在MATLAB 中,相应的数字信号可以由下式 2.2 计算,

ynt   Asin2fnt

2.2

式中时间变量t 可构造为一个一维数组,并由式 2.3 进行付值,

t  0 :1 / cf : 0.5

2.3

其中: cf ——采样频率。

幅值、频率、相位、采样频率等在用户界面输入。在t 与y 的表达式都得到以后,用plot 二维作图函数获得波形显示。

方波信号实现

像正弦波一样,从用户界面获得幅值、频率、相位、采样频率等信息,用square 函数获得对应 y 坐标值,用plot 绘图,格式如式 2.4

ysquaret, duty

2.4

其中, duty ——占空比。

三角波和锯齿波的实现

这两种波形的y 坐标表达式皆要借助于sawtooth 命令。

Sawtooth(t)用于产生周期为2,幅值从-1 ~ +1 的锯齿波,波形的斜率为1/

Sawtooth(t,width)用于产生三角波,其中 width 是取值介于 0 和

1 之间的一个参数,它决定了在一个周期中峰值的发生点。本设计中取width=0.5,可以获得标准形状的三角波。

完整y 坐标表达式如式 2.5,

yasawtooth 2ft/ 360, 0.5

2.5

白噪声的实现

白噪声的定义:白噪声是指功率谱密度在整个频域内均匀分布的噪声。换句话说,此信号在各个频段上的功率是一样的,由于白光是由各种频率(颜色)的单色光混合而成,因而此信号的这种具有平坦功率谱的性质被称作是“白色的”,此信号也因此被称作白噪声。

白噪声的实现借助于randn 函数,它的功能是产生一个均值为零

方差为 1 的随机高斯分布序列,如式 2.6

ya * randnsizet 

2.6

其中, a ——幅值;

t  1:1 / cf : 0.5

脉冲信号的实现

考虑到脉冲信号出现的时刻可以进行调节,借助图形界面输入相

位信息设置时间节点,如式

t  0 :1 / cf : 0.5; n  0.5* x / 360; y  t  n

2.7

设计方法

  1. 图形界面设计

打开MATLAB,新建一个空白的图形界面文件,计算需要添加的控件种类及个数并设计它们的布局。

  1. 添加 1 个axes 控件,用于显示波形;
  1. 添加 5 个static text 控件作为窗口说明使用;
  2. 添加 4 个Slider 控件用于输入幅值、频率等信号信息;
  3. 添加 4 个edit text 控件用于显示幅值、频率等信号信息;
  4. 添加 7 个push button 空间用于各种操作的开始控制; 双击各个控件并修改其颜色、大小及string 属性。得到界面如下:
  1. 各控件对应的回调函数的编辑

界面控件及布局创建完成以后,自动生成包含各控件回调函数在内的m 文件。点击保存时可以修改fig 及m 文件名。系统自动生成的m 文件包括:

function varargout = signalgenerator(varargin)function signalgenerator_OpeningFcn(hObject, eventdata, handles, varargin) function varargout = signalgenerator_OutputFcn(hObject, eventdata, handles

以及各个控件对应的回调函数的框架,如:

function a_Callback(hObject, eventdata, handles)等等。

在前面已经介绍了各个波形的实现原理及方法,现仅以正弦函数的实现为例介绍回调函数的使用及编辑。

回调函数即在一定的操作下自动执行的指令代码。注意回调函数中定义的变量只在其内部有效。正弦波按钮的回调函数如下:

% --- Executes on button press in pushbuttonzhengxian.

function pushbuttonzhengxian_Callback(hObject, eventdata, handles)

% hObject handle to pushbuttonzhengxian (see 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,'String')); 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 a<I %定义了不同情况下x 轴及y 轴上的坐标显示范围

axis([0,0.5,-i,i]);

else

axis([0,0.5,-(a+1),(a+1)]);%超出预定值则重设坐标范围

end

波形显示

正弦波

三角波

以下分别是:(3)锯齿波(4)方波(5)白噪声(6)脉冲信号。

存在的问题

由于是初次使用MATLAB 的GUIDE 模块,在设计时暴露出了许多问题:

  1. 对其界面和一些操作还不熟悉,直接导致编程中效率很低;
  2. 对于基本的MATLAB 语句和常用的函数的学习不系统,有时好的思路无法用MATLAB 语言干净利落的表达;
  3. 在初期对句柄的理解不够深刻,思路不够清晰。

结束语

学长建议,你们在后面的学习中,我将更系统的学习 MATLAB 这一强大的工程软件,争取对他有一个宏观的认识,在此基础上多进行编程练习,加强对常用函数和概念的记忆,最后,联系实际,尝试解决一些常见的工程问题。

参考文献

  1. 车子萍. 基于Matlab 的虚拟信号发生器设计. 电脑学习. 2010.2 No.1
  2. 薛年喜.MATLAB 在数字信号处理中的应用.[M] 北京:清华大学出版社,2005.
  3. 唐向宏,岳恒立等. MATLAB 及在电子信息类课程中的应用.[M] 北京:电子工业出版社,2005.8

基于 MATLAB 的数字信号发生器相关推荐

  1. 用matlab编程简单电子琴,基于MATLAB的数字信号发生器及简易电子琴设计论文.doc...

    基于MATLAB的数字信号发生器及简易电子琴设计论文 基于MATLAB的数字信号发生器及简易电子琴设计 摘 要 数字信号发生器是一种基于软硬件结合实现的函数波形产生仪器.在工程实践中需要检测和分析的各 ...

  2. 基于matlab的数字信号发生器及简易电子琴设计,简易电子琴电路的设计仿真与实现课程设计...

    简易电子琴电路的设计仿真与实现课程设计 课程设计任务书 学生姓名: 专业班级: 指导教师: 工作单位: 信息工程学院 题 目: 简易电子琴电路的设计仿真与实现 初始条件: 可选元件:集成运算放大器LM ...

  3. 信号的解调与调制matlab,基于MATLAB常用数字信号调制与解调

    内容简介: 本科毕业设计 基于MATLAB常用数字信号调制与解调 数字通信|MATLAB|ASK|PSK|FSK|调制与解调|毕业设计 文件格式:word+PPT 本科毕业设计 基于MATLAB常用数 ...

  4. matlab分析数字信号,基于matlab的数字信号分析.doc

    基于matlab的数字信号分析.doc 题目二.已知有一频率为50赫兹幅度为1V的方波信号被频率为1600赫兹幅度为2V的正弦波干扰,请设计方案将方波信号提取出来,要求被衰减的信号要衰减60DB以上, ...

  5. 基于matlab下数字信号的课程设计,数字信号课程设计--基于MATLAB的语音滤波实验...

    数字信号课程设计--基于MATLAB的语音滤波实验 数字信号课程设计 数字信号课程设计 题目基于基于 MATLAB 的语音滤波实验 姓名 班级 电信 1002 班 学号 数字信号课程设计 摘要摘要 数 ...

  6. 基于MATLAB的数字信号滤波器设计

    一.课题目的 1.学会MATLAB的使用,掌握其程序设计方法,学会对信号进行分析和处理: 2.掌握语音信号的采集.存储和时频分析: 3.要求掌握IIR数字滤波器的设计原理.设计方法和设计步骤: 4.学 ...

  7. 基于matlab的航迹发生器模拟,仿真输出经纬度、高度、俯仰、航向角等

    目录 1.算法仿真效果 2.MATLAB源码 3.算法概述 4.部分参考文献 1.算法仿真效果 matlab2022a仿真结果如下: <

  8. 【数字信号】基于matlab GUI多音双频(DTMF)拨号音频解码仿真系统【含Matlab源码 1084期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[数字信号]基于matlab GUI多音双频(DTMF)拨号音频解码仿真系统[含Matlab源码 1084期] 点击上面蓝色字体,直接付费 ...

  9. 【数字信号去噪】基于matlab稀疏性BEADS色谱基线估计和去噪【含Matlab源码 1887期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[数字信号去噪]基于matlab稀疏性 BEADS色谱基线估计和去噪[含Matlab源码 1887期] 点击上面蓝色字体,直接付费下载,即可 ...

最新文章

  1. 421. Maximum XOR of Two Numbers in an Array——本质:利用trie数据结构查找
  2. java与sql用windows身份连接,使用Windows身份验证将我的Sql Server 2008数据库连接到我的Java项目...
  3. mybatis 取查询值_MyBatis-SELECT基本查询
  4. 163邮箱:退信代码(对照表) - 说明篇
  5. 【Flink】Flink AscendingTimestampExtractor - Timestamp monotony violated
  6. 链表的逆置,归并,拆分以及其他函数集合
  7. ajax验证作用,通过正则表达式使用ajax检验注册信息功能
  8. R语言学习笔记:路径设置与安装包
  9. 计算机通信职称评定,2017年通信工程师中级职称评定条件说明
  10. 更新i40e网卡驱动程序
  11. gridview的sort_GRIDVIEW排序的动态实现...
  12. Android 手机修改 WiFi MAC 地址
  13. 计算机cpu多大,电脑cpu多少容量
  14. 电脑迷你世界,迷你世界电脑版
  15. ZigBee入门之基础概念3
  16. 一个超级实用的单片机调试技巧!DWT组件
  17. 网关和路由器交换机功能的有哪些不同
  18. 将苹果通讯录.contacts文件导入安卓通讯录提取.contacts文件联系人的教程
  19. 【史上最强】据说是气死了99名老师的作文
  20. 程序网络访问出错:lacked sufficient buffer space

热门文章

  1. selenium中强制等待,隐式等待,显示等待的区别
  2. 美国机械比计算机工资高,听说美国机械工程年薪十万美金以上?快来了解下!...
  3. CreateMutex、WaitForSingleObject、ReleaseMutex——创建互斥对象
  4. 计算机一切存储转化都是二进制,计算机基础知识讲稿三.doc
  5. 第二证券|抖音发布三季度安全透明度报告,整治贩卖焦虑广告近3万条
  6. 最大权闭合子图(最小割模型)
  7. 求三角锥体积用c语言,求三角锥体积公式的推导?
  8. cpu的频率可以反映计算机系统的运行速度,cpu运行速度是多少
  9. 计算机网络对青少年健康的影响吗,网络对青少年影响调查报告
  10. 玄子Share-BCSP助学手册-JAVA开发