matlab数字信号发生器及电子琴设计Word格式.docx

上传人:b****5 文档编号:16104755 上传时间:2022-11-20 格式:DOCX 页数:15 大小:486.35KB
下载 相关 举报
matlab数字信号发生器及电子琴设计Word格式.docx_第1页
第1页 / 共15页
matlab数字信号发生器及电子琴设计Word格式.docx_第2页
第2页 / 共15页
matlab数字信号发生器及电子琴设计Word格式.docx_第3页
第3页 / 共15页
matlab数字信号发生器及电子琴设计Word格式.docx_第4页
第4页 / 共15页
matlab数字信号发生器及电子琴设计Word格式.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

matlab数字信号发生器及电子琴设计Word格式.docx

《matlab数字信号发生器及电子琴设计Word格式.docx》由会员分享,可在线阅读,更多相关《matlab数字信号发生器及电子琴设计Word格式.docx(15页珍藏版)》请在冰豆网上搜索。

matlab数字信号发生器及电子琴设计Word格式.docx

信号发生器又称信号源或振荡器,是一种能提供各种频率、波形和输出电平电信号,常用作测试的信号源或激励源的设备,在生产实践和科技领域中有着广泛的应用。

按信号波形可分为正弦信号、函数(波形)信号、脉冲信号和随机信号发生器等四大类[2]。

各种波形曲线均可以用三角函数方程式来表示。

能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波的电路被称为函数信号发生器。

本文设计了一种可以产生正弦波、余弦波、方波、三角波、锯齿波、白噪声的虚拟数字信号发生器。

2技术路线

虚拟数字信号发生器设计的流程图如图2.1:

图2.1数字信号发生器流程图

在此基础上,将产生的数字信号写入声卡,即可播放出相应音阶的声音,实现电子琴的功能。

3实现方法

3.1数字信号发生器

3.1.1搭建GUI界面

图形用户界面(GraphicalUserInterface,简称GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。

Matlab凭借其强大的计算能力,系统集成能力以及图形处理能力,其图形用户接口(GUI)也日趋成熟。

MatlabGUI的控件丰富,调用方便,可视化效果美观。

GUI可以使得参数的输入和结果的输出可视化更高,操作更加方便。

本次设计使用GUI搭建的界面如图3.1所示。

图3.1数字信号发生器界面

3.1.2编写M文件

搭建好界面后保存,系统将自动生成M文件与Fig文件,并且M文件内部已经按照GUI界面中组件的类别,自动生成了相应的模块调用函数。

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

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

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

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

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

幅值滚动条的回调函数如下:

functionsliderA_Callback(hObject,eventdata,handles)

a=get(hObject,'

value'

);

set(handles.editA,'

string'

a);

幅值可变文本的回调函数如下:

functioneditA_Callback(hObject,eventdata,handles)

val=get(hObject,'

a=str2num(val);

if~isempty(a)&

&

(val>

=0&

val<

=20)

set(handles.sliderA,'

a)

end

下拉菜单回调函数如下:

functionpopupmenu1_Callback(hObject,eventdata,handles)

A=str2num(get(handles.editA,'

));

f=str2num(get(handles.editF,'

d=str2num(get(handles.editD,'

fs=5000;

T=0.05;

dt=1.0/fs;

N=T/dt;

t=linspace(0,T,N);

s=get(hObject,'

switchs

case1

y=A*sin(2*pi*f*t+d);

axes(handles.axes1);

plot(t,y);

case2

y=A*cos(2*pi*f*t+d);

case3

y=A*square(2*pi*f*t+d)

case4

y=A*sawtooth(2*pi*f*t+d,0.5);

case5

y=A*sawtooth(2*pi*f*t+d,1);

case6

y=sqrt

(1)*randn(1,N)

end

3.1.3设计结果

通过数字信号发生器,产生需要的信号,如下图所示:

图3.2正弦波1

图3.3正弦波2

图3.4余弦波

图3.5方波

图3.6三角波

图3.7锯齿波

图3.8白噪声

3.2数字电子琴

3.2.1搭建GUI界面

电子琴GUI界面搭建如图3.9所示:

图3.9数字电子琴

3.2.2编写M文件

波形选择回调函数:

音量大小通过波形的幅值反映,按键对应的波形的回调函数(以按键1为例)如下,其中edit2,slider2为音量控制:

functionpushbutton1_Callback(hObject,eventdata,handles)

globala;

axes(handles.axes1);

a=get(handles.popupmenu1,'

Fs=44100;

strA=get(handles.edit2,'

A=str2double(strA);

str=get(handles.slider2,'

Value'

set(handles.edit2,'

str);

dt=1.0/Fs;

t=0:

dt:

0.1;

ifa==1

y=A*sin(2*pi*131*t);

wavplay(y,Fs);

axis([00.1-100100]);

ifa==2

y=A*cos(2*pi*131*t);

end

ifa==3

y=A*square(2*pi*131*t);

ifa==4

y=A*sawtooth(2*pi*131*t,0.5);

ifa==5%¾

â

³

Ý

²

¨

y=A*sawtooth(2*pi*131*t,1);

3.2.3设计结果

通过鼠标,分别点击按键1-7,产生的波形如下所示。

调节音量,可改变信号幅值。

图3.10电子琴1

图3.11电子琴2

图3.12电子琴3

图3.13电子琴4

图3.14电子琴5

图3.15电子琴6

图3.16电子琴7

4存在的问题

本次设计虽然基本实现了信号发生器和电子琴的要求,但是还是存在一些不足。

比如信号发生器功能简陋,不能输入阶跃信号、脉冲信号等,不能完成有效值、平均值、幅值的转换显示等。

数字电子琴的音阶也只是最基本的7个音阶,且不能导入音频文件,使用电子琴播放等,这些都是以后的学习中可以改进的地方。

参考文献

[1].张志涌等.精通MATLAB[M].北京:

北京航空航天大学出版社,2003.

[2].车子萍.基于Matlab的虚拟信号发生器设计[J].电脑学习,2010.1.

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

当前位置:首页 > 初中教育 > 科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1