基于MATLAB的函数信号发生器1

合集下载

matlab制作信号发生器

matlab制作信号发生器

Method
START
Initialize
INPUT: type amplitude frequency phase
Produce digital signal
Show the waveform
Method
• To build a GUI interface
Method
• Write M files
sin a=str2double(get(handles.editfuzhi,'String')); f=str2double(get(handles.editpinlv,'String')); x=str2double(get(handles.editxiangwei,'String')); c=str2double(get(handles.editcaiyang,'String')); t=0:8/(fs):8/f; y=a*sin(2*pi*(f*t+x/360)); plot(t,y);
Method
• Write M files
function sliderfuzhi_Callback(hObject, eventdata, handles) a=get(hObject,'value'); set(handles.editfuzhi,'string',a);
Results
• Sine waveform
Results
• white noise waveform
electric piano
• GUI interface
electric piano
• Write M files

基于MATLAB的信号发生器设计

基于MATLAB的信号发生器设计

因为 PCI-6024E 只有 2 路 DAC,所以输出通道的选择只有这 2 路,或者只输出其 中的一路。运行、停止则是开始和停止计算波形、输出波形的过程。编写 M 文件 来处理 GUI 界面的事件的响应。
本设计的独特之处在于输出通道的可选择性,可选择 NI-DAQ(PCI-6024E), 声卡,或者并行等。考虑到信号幅度范围对于不同硬件也是不同的(PCI-6024E 是-10~10v),超出范围的部分是无效的,程序同样会报错并停止运行。
幅度 amplitude
文件名 filename
默认值
500
1
自定义波参数如表 8 所示。设采样率:samp
说明:本选项是信号发生器的扩展功能之一,通过菜单区操作可以读取保存
为图像和数据的文件,输出信号到输出板卡上。
①读取图像文件(*.bmp)
源程序段:
h1=imread(filename);
h2=rgb2gray(h1)
《MatLab 信号处理》
-----基于 MATLAB 的信号发生器设计
姓名: 学号: 班级: 2010.12
基于 MATLAB 的信号发生器设计
虚拟仪器能充分利用现有计算机资源,通过配以独特设计的软硬件,实现普 通仪器的全部功能以及一些在普通仪器上无法实现的功能的软件或程序。本设计 的主要内容就是基于 MATLAB 来实现一个信号发生器,除具有信号发生器一般功 能外,还应能通过文件或图形获取波形数据,以实现任意波形的生成,并以 PCI-6024 DAQ 卡作为硬件平台输出。
[m,n]=size(h2);
for i=1:n
x(i)=0;
end
for i=1:n
for j=1:m
if (h2(j,i)~=255)

基于matlab的信号发生器设计

基于matlab的信号发生器设计

基于matlab的信号发⽣器设计Digital Signal GeneratorYangXiao M2013705103HuaZhong University of Science and TechnologySchool of Mechanical Science and Engineering Abstract: Matlab Is a numerical analysis, matrix calculation, scientific data visualization and nonlinear dynamic state system modeling and simulation, and other functions of practical software engineering.It’s easy to use the windows environment and cast off a tradition on the interactive programming language (such as C, Fortran) Edit mode In large range. In this report,The task is to design a digital signal generator bu using matlab.It could help us to understand the signal processing by designing the digital signal generator. Which has a certain application value of reference.Keyword:digital signal generator;Matlab1.PrefaceMATLAB is called Matrix Laboratory,which is designed by the United States MathWorks company.It’s a commercial mathematical software. Matlab can be use for Matrix operations, mapping functions and data, algorithm, creating the user interface, connect to other programming languages procedures, mainly used in engineering calculations, control design, signal processing and communications, image processing, signal detection, design and financial modeling analysis and other fields. GUI (Graphical User Interface, referred to as GUI, known Graphical User Interface) is displayed using the graphical user interface of computer operations.. Matlab has a powerful GUl tool. In this report, by using matlab GUI tool we could a designed digital signal generator .2. IntroduceProgram reference implementation of MATLAB Data Acquisition Toolbox. In MATLAB design, there are two designs: the GUI editor and M-file write. This design use GUI editor . The GUI is user interface, which is to select the waveform, set and modify the waveform parameters, set the sampling rate, select the output channel and run. This program GUI interface provided: sin, square, triangle, sawtooth, while noise, to choice. Also we could change waveform parameters to change waveform’s shape. As frequency amplitude phase and sample haveprovided gave us to change.The interface is that:2.1 Interface3. Design PrinciplesThe task is to design the digital signal generator which can generate sine wave, square wave, triangle wave, sawtooth wave, and white noise. All the waveform can use MATLAB function, and could be adjusted by inputting information such as the amplitude, phase and frequency .3.1 Achieve sin signalThe mathematical function of sin wave signal is that:()sin 2y A ft πφ=+A: amplitude; f: frequency;φ: phase;t: 0:1/s:1;(s is sample); The M-program is:A=get(handles.Amplitude,'Value'); f=get(handles.Frequency,'Value'); p=get(handles.Phase,'Value');s=get(handles.Sample,'Value'); x=0:1/s:1;y=A*sin(2*pi*f*x+p); plot(handles.screen,x,y,'r'); legend('sin(x)'); wavplay(y); grid on;axis([0,0.1,-20,20]);We could run the program by setting the parameters:3.1 Image of sin signal3.2 Achieve square signalThe mathematical function of square wave signal is that:(2)y Asquare ft b π=+A: amplitude; f: frequency; b: phase;t: 0:1/s:1;(s is sample); The M-program is:A=get(handles.Amplitude,'Value'); f=get(handles.Frequency,'Value');p=get(handles.Phase,'Value');s=get(handles.Sample,'Value');x=0:1/s:10;y=A*square(2*pi*f*x+p);plot(handles.screen,x,y,'b');legend('square');wavplay(y);grid on;axis([0,0.1,-20,20]);We could run the program by setting the parameters:3.2 Image of square signal3.3 Achieve triangular signalThe mathematical function of triangular wave signal is that:(2,0.5)y Asawtooth ft b π=+A: amplitude; f: frequency; b: phase;t: 0:1/s:1;(s is sample); The M-program is:A=get(handles.Amplitude,'Value'); f=get(handles.Frequency,'Value'); p=get(handles.Phase,'Value'); s=get(handles.Sample,'Value'); x=0:1/s:10;y=A*sawtooth(2*pi*f*x+p,0.5); plot(handles.screen,x,y,'b'); legend(‘triangle ’); wavplay(y); grid on; axis([0,0.1,-20,20]);We could run the program by setting the parameters:3.3 Image of triangular signal3.4 Achieve sawtooth signalThe mathematical function of sawtooth wave signal is that:(2)y Asawtooth ft b π=+A: amplitude; f: frequency; b: phase;t: 0:1/s:1;(s is sample); The M-program is:A=get(handles.Amplitude,'Value'); f=get(handles.Frequency,'Value'); p=get(handles.Phase,'Value');s=get(handles.Sample,'Value');x=0:1/s:10;y=A*sawtooth(2*pi*f*x+p);plot(handles.screen,x,y,'b');legend(‘tooth’);wavplay(y);grid on;axis([0,0.1,-20,20]);We could run the program by setting the parameters:3.4 Image of sawtooth signal3.5 Achieve white noise signalThe mathematical function of white noise wave signal is that:y A rand length x=-2((1,())0.5)A: amplitude;f: frequency;b: phase;t: 0:1/s:1;(s is sample);The M-program is:A=get(handles.Amplitude,'Value');f=get(handles.Frequency,'Value');p=get(handles.Phase,'Value');s=get(handles.Sample,'Value');x=0:1/s:10;y=2* A*(rand(1,length(x))-0.5);plot(handles.screen,x,y,'b');legend('white noise');wavplay(y);grid on;axis([0,0.1,-20,20]);We could run the program by setting the parameters:3.5 Image of white noise signal4 Exist problemThere are many problems in the design because I didn’t use matlab and the GUI modules ever.(1) I am not familiar to the interface and operator of matlab,which lead toI program without efficiency.(2) Without systematic studying of matlab,I could not express my ideas by using succinct matlab language.(3)In the beginning, I don’t understand the handle deep, and don,t have aclear idea.5. ConclusionIn the latter study, I will be more systematic learning MATLAB this powerful engineering software, has a fight on his understanding of the macro, on the basis of multi-programming exercises to strengthen the commonly used functions and concepts of memory, and finally, contact practical, try to solve some common engineering problems.References[1] 薛⼭. MATLAB基础教程. [M] 北京:清华⼤学出版社,2011.3。

基于MATLAB的FSK调制信号发生器的模拟仿真

基于MATLAB的FSK调制信号发生器的模拟仿真

2012年8月第24期科技视界SCIENCE &TECHNOLOGY VISION 科技视界Science &Technology Vision作者简介:葛熠(1991—),男,江苏溧阳人,本科,通信工程专业,研究方向为信息与通信工程。

0引言由于目前大多数信道不适合传输基带信号,为了使基带信号能利用这些信道进行传输,必须使代表信息的原始信号经过一种变换得到另一种新信号,这种变换就是调制。

在数字调制中,频移键控(FSK)[1]方法简单,易于实现,并且解调不须恢复本地载波,可以异步传输,抗噪声和抗衰落性能也较强。

因此,FSK 调制技术在通信行业得到了广泛地应用,并且主要适用于用于低、中速数据传输[2]。

因此本文以通用DSP builder 来实现FSK 调制信号发生器的设计,并借助MATLAB 仿真工具SIMULINK 进行仿真检测。

1MATLAB 和DSP Builder 的简单介绍1.1MATLAB 简介MATLAB 是矩阵实验室的简称,主要包括MATLAB 和Simulink 两大部分。

MATLAB 可以进行矩形运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域[3]。

Simulink 是MATLAB 最重要的组件之一,它提供一个动态系统建模、仿真和综合分析的集成环境。

在该环境中,无需大量书写程序,而只需要通过简单直观的鼠标操作,就可构造出复杂的系统。

Simulink [4]具有适应面广、结构和流程清晰及仿真精细、贴近实际、效率高、灵活等优点。

1.2DSP Builder 简介Altera 可编程逻辑器件中的DSP 系统设计需要高级算法和HDL 开发工具。

Altera DSP Builder 将MATLAB 和Simulink 系统级设计工具的算法开发、仿真和验证功能与VHDL 综合、仿真和Altera 开发工具整合在一起,实现了这些工具的集成[5]。

基于Matlab_DSPBuilder的正弦信号发生器设计.

基于Matlab_DSPBuilder的正弦信号发生器设计.

基于Matlab/DSP Builder的正弦信号发生器设计引言近年来随着通信技术的不断发展,信号的正确传输显得日益重要,也就是说要有一个可靠的能产生稳定确信号的发生器,基于Matlab/DSP Builder的正弦信号发生器是利用Matlab/DSP Builder的模块进行的模快化设计,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁明了、易懂、易学。

使硬件在软件的控制下协调运作。

DSP Builder可以帮助设计者完成基于FPGA的DSP系统设计设计,除了图形化的系统建模外,还可以完成及大部分的设计过程和仿真,直至将设计文件下载到DSP 开发板上。

此次实验的目的就是将两者的优势有机的结合在一起,利用DSP的优势开发正弦信号发生器。

在设计中主要采用DSP Builder库中的模块进行系统的模型设计,然后再进行Simulink仿真。

1.设计思想1.1 DSP Builder特点DSP Builder系统级(或算法级设计工具,它架构在多个软件工具之上,并把系统级(算法仿真建模和RTL(硬件实现两个领域的设计工具连接起来,最大程度的发挥了两种工具的优势。

DSP Builder依赖于MathWorks公司的数学分析工具Matlab/Simulink,可以在Simulink中进行图形化设计和仿真,同时又通过Signal Compilder把Matlab/Simulink的设计文件(.mdl转换成相应的硬件描述语言VHDL 设计文件(.vhd,以及用于控制和编译的tcl脚本。

而对后者的处理可以用Quartus II 来实现。

1.2 QuartusII特点QuartusII提供了完整的多平台设计环境,能满足各种特定设计的需要,是单芯片可编程系统(SOPC设计的综合性环境和SOPC开发的基本设计工具,并且为Altera DSP开发包进行系统模型设计提供了集成综合环境。

QuartusII完全支持VHDL的设计流程,其内部嵌有VHDL逻辑综合器。

基于MATLAB的数字信号发生器报告

基于MATLAB的数字信号发生器报告

基于MATLAB的数字信号发生器设计报告摘要:数字信号发生器是基于软硬件实现的一种波形发生仪器。

在工工程实践中需要检测和分析的各种复杂信号均可分解成各简单信号之和,而这些简单信号皆可由数字信号发生器模拟产生,因此它在工程分析和实验教学有着广泛的应用。

MATLAB是一个数据分析和处理功能十分强大的工程实用软件,他的数据采集工具箱为实现数据的输入和输出提供了十分方便的函数和命令,在数字信号处理方面方便实用。

本文介绍了使用MATLAB建立一个简单数字信号发生器的基本流程,并详细叙述了简单波形(正弦波、方波、三角波、锯齿波、白噪声)信号的具体实现方法。

关键字:MATLAB ,数字信号发生器1前言随着计算机软硬件技术的发展,越来越多现实物品的功能能够由计算机实现。

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

信号发生器是一种常用的信号源,广泛应用于电子技术实验、自控系统和科学研究等领域。

传统的台式仪器如任意函数发生器等加工工艺复杂、价格高、仪器面板单调、数据存储、处理不方便。

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

Matlab是一个数据分析和处理功能十分强大的工程实用软件,他的数据采集工具箱(data acquisition toolbox)为实现数据的输入和输出提供了十分方便的函数和命令,利用这些函数和命令可以很容易地实现对外部物理世界的信号输出和输入。

根据声卡输出信号的原理,采用Matlab软件编程,可以方便地输出所需要的正弦波、三角波、方波等多种信号,有效地实现信号发生器的基本功能。

2 方案设计要设计的数字信号有正弦信号、方波信号、三角波、锯齿波、白噪声、脉冲信号。

其中,前五种波形都可以利用MATLAB 提供的函数实现,并根据输入的幅值、相位、频率等信息进行调整。

脉冲信号由自己编写程序实现,并以定义的时间节点控制脉冲出现的时刻。

基于MATLAB的CDMA信号发生器的设计与仿真

基于MATLAB的CDMA信号发生器的设计与仿真

基于MATLAB的CDMA信号发生器的设计与仿真摘要:本文首先介绍了CDMA技术原理,在应用IS-95标准的链路基础之上,完成CDMA 信号发生器的总体设计和主要模块的设计,最后通过MATLAB软件模拟仿真了CDMA信号发生器工作流程,并对CDMA信号进行了波形仿真。

关键词:CDMA;MATLAB;信号发生器;仿真随着科学技术的不断发展,人们能够随时随刻进行信息交流,不再受到时间和空间的限制。

移动通信技术综合了有线网络和无线网络的传输方式,使人们能够在自由活动中与其他移动终端进行通信,从而有效节约了资源成本,同时提高了工作效率,具有一定的社会效益和经济价值。

一、CDMA技术原理概述(一)码分多址技术在CDMA通信系统中,对用户在信息传输的过程中应用到的信号进行区别不能够完全依靠频率和时隙的不同,而是应该依靠不同的编码序列进行区分(信号的波形)。

CDMA信号从频域和石宇的角度来说是相互重叠的,接收器相关器能够在多个CDMA信号区别出使用预定编码类型的信号,对于其他使用不同编码类型的信号来说,由于与接收机的编码类型不同,所以不能够进行解调,这些信号的存在通常被称为多址干扰[1]。

(二)扩频通信技术扩频是一种传输方式,指的是传输数据信息的信号带宽大于数据信息本身的带宽,频带的扩展与所传输的信息码无关,而是由与数据信息相互独立的扩频码来实现的,在接收端用同步接收来实现解扩频和数据恢复。

通常情况下,一个信息传输速率为9.6kbps的二进制比特流在由扩频通信进行传输时带宽可以达到1.2288MH。

(三)CDMA通信原理在发送端将等待传输的语音数据经过A/D转换成为二进制数据信息,再由高速率的伪随机扩频序列进行调制,将数据信息的频带扩展到较宽的频带,由此,在信道传输中的语音信号的带宽就会大于原始信号的带宽。

由于本地产生的伪码与扩频信号的伪码相同,所以能够将原始的窄带信号还原,从而通过窄带滤波之后恢复语音数据,之后在经过D/A转换将原始语音恢复。

利用matlab移频信号调制代码的方法

利用matlab移频信号调制代码的方法

利用matlab移频信号调制代码的方法摘要:一、引言二、Matlab移频信号调制的基本原理1.移频信号的定义2.移频信号调制的目的3.Matlab实现移频信号调制的方法三、Matlab移频信号调制的代码实现1.信号发生器2.调制器3.解调器4.性能分析四、实例分析1.实例一:频率偏移调制2.实例二:相位调制3.实例三:频移键控(FSK)五、总结与展望正文:一、引言移频信号调制是一种在无线通信中广泛应用的调制技术。

它通过改变信号的频率来传输信息,具有抗干扰性强、传输速率高等优点。

Matlab作为一种数学计算软件,可以方便地模拟移频信号调制的整个过程。

本文将详细介绍如何利用Matlab实现移频信号调制,并给出实例分析。

二、Matlab移频信号调制的基本原理1.移频信号的定义移频信号是指信号的频率随着时间变化而变化的信号。

它的基本表达式为:f(t) = f0 + f1 * cos(ωt + θ)其中,f0为载波频率,f1为频率偏移量,ω为角频率,θ为相位差。

2.移频信号调制的目的移频信号调制的目的是在保持载波功率不变的情况下,通过改变载波频率来传输信息。

这样可以提高信号的抗干扰能力,提高通信质量。

3.Matlab实现移频信号调制的方法在Matlab中,可以利用信号生成函数、调制函数和性能分析函数实现移频信号调制。

三、Matlab移频信号调制的代码实现1.信号发生器使用Matlab的`awgn`函数生成高斯白噪声,`randn`函数生成随机数。

2.调制器利用Matlab的`cos`、`sin`函数实现移频信号的调制。

例如,对于频率偏移调制,可以编写如下代码:```Matlab% 参数设置Fs = 1000; % 采样频率Ts = 1/Fs; % 采样间隔= 1000; % 数据长度% 信号生成t = (0:N-1)"/Ts;f1 = 10; % 频率偏移量f0 = 100; % 载波频率θ= 0; % 相位差% 调制modulated_signal = sin(2 * pi * (f0 + f1 * cos(t)) * t);```3.解调器利用Matlab的信号处理函数解调信号,例如`fft`、`ifft`等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于MATLAB的函数信号发生器1信息系统仿真设计实训报告学院信息电子技术专业****班级******8学号********8姓名***指导教师***2014年7月25日基于MATLAB的函数信号发生器1、目的函数信号发生器是基于软硬件实现的一种波形发生仪器。

在工工程实践中需要检测和分析的各种复杂信号均可分解成各简单信号之和,而这些简单信号可由函数信号发生器模拟产生,因此它在工程分析和实验教学有着广泛的应用。

MATLAB 是一个数据分析和处理功能十分强大的工程实用软件,他的数据采集工具箱为实现数据的输入和输出提供了十分方便的函数和命令,在信号处理方面方便实用。

本文介绍了使MATLAB建立一个简单函数信号发生器的基本流程,并详细叙述了简单波形(正弦波、方波、三角波、锯齿波、白噪声、脉冲)信号的具体实现方法。

通过此次的设计对MATLAB有个更深刻的了解,熟练的使用MATLAB的GUI设计简单的界面程序。

2、工作原理与计算该虚拟信号发生器的设计由GUI界面及其对应的程序组成。

设计函数发生器有正弦信号、方波信号、三角波、锯齿波、白噪声、脉冲信号。

其中,前五种波形都可以利用MATLAB提供的函数实现,并根据输入的幅值、相位、频率等信息进行调整。

根据脉冲信号在某一时刻出现的一冲激特点,可由编写程序来实现。

界面主要由MATLAB创建,之后编写界面所用的函数,从而实现函数信号发生器。

(1)正弦信号的实现正弦波信号的数学表达式如(1)。

ωφ()其中:A为幅值;ω为频率; 为相位。

在MATLAB中,幅值、频率、相位、在用户界面输入。

y的表达式都得到以后,用plot二维作图函数获得波形显示。

(2)方波信号的实现与正弦波一样,从用户界面获得幅值、频率、相位、采样频率等信息,用square 函数获得对应y坐标值,用plot绘图,格式如(2)。

()其中duty为占空比。

(3)三角波和锯齿波的实现这两种波形的表达式皆要借助于sawtooth命令。

Swathooth(t)用来产生周期为2π,幅值为从-1到+1的锯齿波。

当width=1时,产生标准的锯齿波。

其表达式如(3)。

ωφ()其中A为幅值,ω为频率,φ为相位。

Sawtooth(t,width)用于产生三角波,其中width是取值介于0和1之间的一个参数,它决定了在一个周期中峰值的发生点。

本设计中取width=0.5,可以获得标准形状的三角波。

其表达式如(4)。

ωφ()其中A为幅值,ω为频率,φ为相位。

(4)白噪声的实现白噪声,是一种功率频谱密为常数的随机信号或随机过程。

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

相对的,其他不具有这一性质的噪声信号被称为有色噪声。

白噪声在数学处理上比较方便,因此它是系统分析的有力工具。

一般,只要一个噪声过程所具有的频谱宽度远远大于它所作用系统的带宽,并且在该带宽中其频谱密度基本上可以作为常数来考虑,就可以把它作为白噪声来处理。

在MATLAB中白噪声的实现借助于randn函数,它的功能是产生一个均值为零方差为1的随机高斯分布序列,其表达式如(5)。

()(5)脉冲信号的实现脉冲信号是指瞬间突然变化,作用时间极短的电压或电流。

可以是周期性重复的,也可以是非周期性的或单次的。

脉冲信号表现在平面坐标上就是一条有无数断点的曲线,也就是说在周期性的一些地方点的极限不存在。

在MATLAB中脉冲信号可以由表达式(6)()其中A为幅值,在t=n的时候出现脉冲。

3、步骤3.1搭建函数信号发生器GUI图形用于界面(Graphical User Interfaces,GUI)是提供人机交互的工具和方法。

GUI是包含图形对象(如窗口、图标、菜单和文本)的用户界面。

以某种方式选择或激活这些对象时,通常会引起动作或者发生变化。

一个设计优秀的GUI 能够非常直观的让用户知道如何操作MATLAB界面,并且了解设计者的开发意图。

MATLAB的 GUI为开发者提供了一个不脱离MATLAB的开发环境,有助于MATLAB程序的GUI集成。

这样可以使开发者不必理会一大堆烦杂的代码,简化程序,但是同样可以实现向决策者提供图文并茂的界面,甚至达到多媒体的效果。

可以说MATLAB提供了一个简便的开发环境,可以让开发者快速上手,提高了开发者的工作效率。

具体搭建GUI的步骤如下:1)在Command 里面输入GUIDE 或者从菜单里面,或者从快捷按钮均可进入GUIDE,然后新建一个GUI,进入布局编辑器。

2)为GUI添加控件:编辑框(Edit Text)控件、静态文本(Static Text)、滚动条(Slider)控件、按钮(Push Button)控件、坐标轴(Axes)控件等。

按照自己的规划摆放GUI,进行布局设计。

3)设置控件的属性。

可以改变控件的名称、大小字体显示以及颜色等等根据上述步骤做出的GUI如下图1所示图1函数信号发生器界面3.2编写M文件搭建好界面后保存,系统将自动生成M文件与Fig文件,并且M文件内部已经按照GUI界面中组件的类别,自动生成了相应的模块调用函数。

根据需要,我们对生成的各个函数进行补充,完成函数功能的实现及各个函数的调用关系。

本次实训主要对控件的回调函数(callback)下写入相应的程序。

下面这段程序(部分程序)实现了函数根据用户的输入生成不同的正弦波、三角波、方波、锯齿波等,最终将波形显示在坐标轴上。

其中,sliderfuzhi ,editfuzhi 输入幅值,当用户在输入一个新的幅值时,A为对应幅值变量,发生相应改变,并判断选择的是何种波型,然后对相应的波型的幅值进行修改,最终通过绘图函数的调用将新波形显示在图上。

同理,当我们逐渐改变频率和相位时,波形也会对应发生变化,在此不再赘述。

其部分程序如下:1、正弦按钮的回调函数(CallBack)function pushbuttonZHENGXIAN_Callback(hObject, eventdata, handles) global p1;%定义全局变量global p2;global p3;global p4;global p5;global p6;p6=0;p5=0; %按钮正弦波按下p2=0;p3=0;p4=0;p1=get(handles.pushbuttonZHENGXIAN,'value');%获取正弦按钮的当前值并赋给p1j=get(handles.sliderfuzhi,'value');%获取幅值滚动条的值,且赋给jk=get(handles.sliderpinlv,'value');%获取频率滚动条的值,且赋给kl=get(handles.sliderxiangwei,'value');%获取相位滚动条的值,且赋给lset(handles.editfuzhi,'string',num2str(j));%修改editfuzhi 的值为滚动条当前的值set(handles.editpinlv,'string',num2str(k));%修改editpinlv 的值为滚动条当前的值set(handles.editxiangwei,'string',num2str(l));%修改editxiangwei 的值为滚动条当前的值A=str2num(get(handles.editfuzhi,'string'));%获取幅值选择框的值,并且赋给A f=str2num(get(handles.editpinlv,'string'));%获取频率选择框的值,并且赋给f P=str2num(get(handles.editxiangwei,'string'));%获取相位选择框的值,并且赋给Pt=0:0.001:8*pi;y=A*sin(2*pi*f*t+P*2*pi); %正弦波表达式plot(t,y,'r');set(gca,'color',[0,1,0.5]); %设定显示的背景颜色,axis([0,8*pi,-1.2,1.2]); %曲线的颜色同时给出坐标并显示网格grid on;方波、锯齿波、三角波、白噪声、脉冲信号与其类似在此省略其回调函数的代码。

2、关闭按钮的调用(CallBack)p6=0;p5=0;p1=0;p2=0;p3=0;p4=0;set(handles.sliderfuzhi,'value',0);set(handles.sliderpinlv,'value',0);set(handles.sliderxiangwei,'value',0);set(handles.editfuzhi,'string',num2str(0));set(handles.editpinlv,'string',num2str(0));set(handles.editxiangwei,'string',num2str(0));plot(t,y);set(gca,'color',[0,0,0]);axis([0,8*pi,-1.2,1.2]);3、滚动条的回调函数(CallBack)global p1;global p2;global p3;global p4;global p5;global p6;j=get(handles.sliderfuzhi,'value');%获取幅值滚动条的值,并且赋给jk=get(handles.sliderpinlv,'value');%获取频率滚动条的值,并且赋给kl=get(handles.sliderxiangwei,'value');%获取相位滚动条的值,并且赋给l set(handles.editfuzhi,'string',num2str(j));%修改editfuzhi 的值为滚动条当前的值set(handles.editpinlv,'string',num2str(k));set(handles.editxiangwei,'string',num2str(l));A=str2num(get(handles.editfuzhi,'string'));%获取幅值选择框的值,并且赋给Af=str2num(get(handles.editpinlv,'string'));P=str2num(get(handles.editxiangwei,'string'));while 1 %一直判断,遇到有按键就执行,然后退出。

相关文档
最新文档