用两种方法进行运算,一次用循环和选择语句,另一次用逻辑数组。
程序设计的基本步骤必须采用用自上而下的编程方法。
用循环和选择语句实现,实验源程序(整理好执行正确的源程序,并加上注释)
symsty;
fort=-6*pi:
pi:
6*pi%用for语句循环变量
ifsin(t)>0%用if语句来条件判断
y=sin(t);
else
y=0;
end
end
y
用逻辑数组实现,实验源程序(整理好执行正确的源程序,并加上注释)
symsty;
t=-6*pi:
pi:
6*pi
ifsin(t)>0
y=sin(t);
else
y=0;
end
y
3、实验中遇到的问题分析及实验心得
实验二中要用到c语言的for语句,很久没写c程序,都生疏了,只好再看一遍书,勉强弄懂了循环语句和条件语句,不过看到程序能运行还是很开心的,下次多做一些实验应该就熟练了。
实验三MATLAB的函数
一、实验目的1、掌握MATLAB自定义函数的设计。
2、掌握MATLAB输入输出函数的使用。
二、实验内容(详见实验指导书)
1、在M文件中输入实验程序的函数的程序代码并调试。
2、通过调试实验程序,实现函数的按值传递机制和全局变量分享机制。
3、通过调试实验程序,实现函数的子函数功能和私有函数功能。
4、通过调试实验程序,实现各类文件在MATLAB中的读写。
三、思考题
1、脚本文件与函数的区别是什么?
答:
脚本文件可以理解为简单的M文件,脚本文件中的变量都是全局变量。
函数文件是在脚本文件的基础之上多添加了一行函数定义行,其代码组织结构和调用方式与对应的脚本文件截然不同。
函数文件是以函数声明行“function...”作为开始的,其实质就是用户往MATLAB函数库里边添加了子函数,函数文件中的变量都是局部变量,除非使用了特别声明。
函数运行完毕之后,其定义的变量将从工作区间中清除。
而脚本文件只是将一系列相关的代码结合封装,没有输入参数和输出参数,即不自带参数,也不一定要返回结果。
而多数函数文件一般都有输入和输出变量,并见有返回结果
2、当一个函数被调用,数据是是怎样从调用者传递到函数的。
函数是怎样把结果返回给调用者?
答:
首先,做一个自定义函数的文件,如函数名为f(x),然后,在命令窗口和执行文件中,写入f(x),此时matlab调用了f(x)函数,进而把结果传给调用者
3、用mat存储数据的优缺点?
答:
优点:
1 1.这些命令易于使用
2 2.mat文件的平台独立,在一个支持MATLAB的计算机里编写的文件,在另一个支持MATLAB的计算机上也可以被读取,且这种格式可以在不同版本间互相转换
3 3.mat文件所存储数据是高精度的
4 Mat文件存储了工作区的每一个变量的所有信息,包括它的类属和名字。
缺点:
生成的mat文件只能由MATLAB调用,其他的程序不可能利用它共享数据,所以有诸多限制
4、什么时侯应当用格式化I/O操作?
什么时侯应当有二进制I/O操作?
答:
函数fprint把以户自定义格式编写的格式化数据写入一个文件,当需要使用到I/O函数时,即进行二进制操作
5、编写MATLAB语句,需要以只读模式打开一个无格式的二进制输入文件input.dat。
检测文件是否存在,如果不存在,它就产生一个合适的错误信息。
实验源程序(整理好执行正确的源程序,并加上注释)
6、编写一个函数,利用函数random0在[low,high]产生一个随机数,其中low,high分别代表输入参数。
把random0函数成为你新函数的一个私有函数。
实验源程序(整理好执行正确的源程序,并加上注释)
functionr=random(low,high)%生成一个[low,high]随机数
r=(high-low)*rand+low;
end
7、编写MATLAB语句创建一个表,由x的正弦值和余弦值(x=0,0.1pi,...,pi),在表上有标题和标签。
实验源程序(整理好执行正确的源程序,并加上注释)
[u,v]=meshgrid(0:
0.1:
2*pi,0:
0.1:
2*pi);
x=3*u.*cos(v);
y=4*u.*sin(v);
z=u.^2;
mesh(x,y,z)
8、实验中遇到的问题分析及实验心得
这次的实验难度更大了,很多函数我都没听说过,只好XX了,万幸的是XX看懂了一点,但也没有完全理解,可能是编程的时间太少了,以后一定要多加练习才是呀。
实验四MATLAB的作图
一、实验目的
1、掌握MATLAB的二维作图方法。
2、掌握MATLAB的三维作图方法。
二、实验内容(详见实验指导书)
1、完成实验教材中MATLAB的二维作图例题的设计与调试。
2、完成实验教材中MATLAB的三维作图例题的设计与调试。
三、思考题
1、欧拉公式。
公式定义如下:
eiθ=cosθ+isinθ
创建一个二维图象,θ的取值0到2π之间。
创建一个三维图象,θ的取值0到2π之间。
实验源程序(整理好执行正确的源程序,并加上注释)
2、实验中遇到的问题分析及实验心得
实验五离散时间信号的产生和基本运算实验
一、实验目的
1、了解常用的时域离散信号及其特点。
2、进一步了解离散时间序列时域的基本运算。
3、掌握MATLAB产生常用时域离散信号的方法。
4、了解MATLAB语言进行离散序列运算的常用函数,掌握离散序列运算程序的编写方法。
二、实验内容(详见实验指导书)
1、用MATLAB生成离散信号须注意的问题。
2、常用的时域离散信号及程序。
3、离散序列的基本运算。
三、思考题
1、通过例题程序,说明采样频率Fs,采样点数N,采样时间间隔dt在程序编写中存在怎样的联系,使用时需注意什么问题?
(试通过例程分析加以说明)
采样点数
2、当进行离散序列的相加,相乘运算时,如果参加运算的两个序列向量维数不同,应进行怎样的处理?
(试通过例程分析加以说明)
3、先任意找一个模拟信号X(t),对它进行采样得到一个序列X(n),再对这个序列进行分别进行左移和右移变换得到y1(n)和y2(n),最后对y1(n)和y2(n)分别进行相加和相乘操作得到z1(n)和z2(n)。
4、实验中遇到的问题分析及实验心得
实验六卷积的原理及其应用
一、实验目的
1、通过实验进一步理解卷积定理。
2、掌握应用线性卷积求解离散时间系统响应的基本方法。
3、了解MATLAB中有关卷积的子函数及其应用方法。
二、实验内容(详见实验指导书)
1、直接使用conv进行卷积运算。
2、复杂序列的卷积运算。
3、卷积积分的动态过程演示。
三、思考题
1、调用子函数convnew进行卷积积分处理前要做哪些准备,与使用conv有何不同?
(试通过例程分析加以说明)
2、任意找两个序列x(n),h(n),计算y(n)=x(n)*h(n),并把结果画出来。
(试通过例程分析加以说明)
3、实验中遇到的问题分析及实验心得
实验七离散系统的频率响应及其零极点分析
一、实验目的
1、掌握进行Z变换和Z反变换的基本方法,及部分分式法在Z反变换中的应用。
2、熟悉离散系统的基本描述模型。
3、熟悉离散系统的零极点与系统因果性和稳定性的关系。
4、熟悉离散系统的零极点与频率响应特性之间的关系。
5、掌握各种模型相互间的关系及其转换方法。
二、实验内容(详见实验指导书)
1、用ztrans子函数求无限长序列的Z变换。
2、用iztrans子函数求无限长序列的Z反变换。
3、用部分分式法求z反变换。
4、离散系统的基本描述模型。
5、离散系统的因果性和稳定性。
6、系统极点和零点对系统函数的影响。
三、思考题
1、系统函数零极点的位置与系统冲激响应有何关系?
(试通过例程分析加以说明)
2、已知一个差分方程满足
,求满足这个差分方程的系统的冲激响应。
3、实验中遇到的问题分析及实验心得
实验八离散傅立叶变换(DFT)
一、实验目的
1、加深对离散傅立叶变换(DFT)基本概念的理解。
2、了解有限长序列傅立叶变换(DFT)与周期级数(DFS)、离散时间傅里叶变换(DTFT)的联系。
3、掌握用MATLAB语言进行离散傅立叶变换和逆变换的方法。
4、理解时域循环卷积特性。
二、实验内容(详见实验指导书)
1、有限长序列的傅立叶变换(DFT)和逆变换(IDFT)。
2、有限长序列DFT与离散时间傅里叶变换DTFT的联系。
3、时域循环卷积特性演示。
三、思考题
1、有限长序列的离散傅里叶变换(DFT)与周期序列的傅里叶级数(DFS)有何联系与区别?
有限长序列的离散傅里叶变换(DFT)有何特点?
(试通过例程分析加以说明)
2、有限长序列的离散傅里叶变换(DFT)与离散时间傅里叶变换(DTFT)有何联系与区别?
(试通过例程分析加以说明)
3、简述离散傅里叶变换(DFT)时域循环卷积的基本方法,其与DTFT、DFS时域卷积有何联系与区别?
(试通过例程分析加以说明)
4、实验中遇到的问题分析及实验心得
实验九快速傅里叶变换(FFT)
一、实验目的
1、加深对快速傅里叶变换(FFT)基本理论的理解。
2、了解使用快速傅里叶变换(FFT)计算有限长和无限长序列信号频谱的方法。
3、掌握用MATLAB语言进行快速傅里叶变换时常用的子函数。
二、实验内容(详见实验指导书)
1、用MATLAB提供的子函数进行快速傅里叶变换。
2、用FFT计算有限长序列的频谱。
3、用FFT计算无限长序列的频谱。
三、思考题
1、快速傅里叶变换(FFT)与离散傅里叶变换(DFT)有何联系?
简述使用快速傅里叶变换(FFT)的必要性(试通过例程分析加以说明)
2、使用MATLAB语言提供的快速傅里叶变换(FFT)有关子函数,进行有限长和无限长序列频谱分析时,需要注意那些问题?
(试通过例程分析加以说明)
3、实验中遇到的问题分析及实验心得
实验十频域抽样与恢复和数字滤波器结构
一、实验目的
1、加深对离散序列频域抽样定理的理解。
2、理解从频域抽样序列恢复离散时域信号的条件和方法。
3、了解由频谱通过IFFT计算连续时间信号的方法。
4、掌握MATLAB语言进行频域抽样与恢复时程序的编写方法。
5、加深对数字滤波器分类与结构的了解。
6、明确数字滤波器的基本结构及其相互间的转换方法。
7、掌握MATLAB进行数字滤波器各种结构相互转换的子函数及程序编写方法。
二、实验内容(详见实验指导书)
1、频域抽样定理的应用。
2、数字滤波器的分类。
三、思考题
1、从频域抽样序列不失真地恢复离散时域信号的条件是什么?
(试通过例程分析加以说明)
2、试归纳出用IFFT数值计算方法从频谱恢复离散时间序列的方法和步骤。
(试通过例程分析加以说明)
3、从频谱恢复连续时间信号与恢复离散时间序列有何不同?
有哪些特点?
(试通过例程分析加以说明)
4、什么是数字滤波器?
数字滤波器是如何分类的?
5、试归纳出各类数字示波器基本结构。
(试通过例程分析加以说明)
6、实验中遇到的问题分析及实验心得
实验十一IIR滤波器的设计
一、实验目的
1、加深对脉冲响应不变法和双线性变换法设计IIR数字滤波器方法的了解。
2、掌握使用模拟滤波器原型进行脉冲响应变换的方法。
3、掌握用双线性变换法设计滤波器的方法。
4、了解MATLAB有关脉冲响应变换和双线性变换的子函数。
二、实验内容(详见实验指导书)
1、用脉冲响应不变法设计低通、高通、带通、带阻IIR数字滤波器。
2、用双线性变换法设计低通、高通、带通、带阻IIR数字滤波器。
三、思考题
1、比较四种模拟滤波器的特点。
(试通过例程分析加以说明)
2、为什么脉冲响应不变法不能用于设计数字高通滤波器和带阻滤波器?
数字滤波器的频率响应与模拟滤波器的频率响应有何区别?
(试通过例程分析加以说明)
3、使用双线性变换法时,模拟频率与数字频率有何关系?
会带来什么影响?
如何解决?
(试通过例程分析加以说明)
4、实验中遇到的问题分析及实验心得
实验十二FIR滤波器的设计
一、实验目的
1、加深对窗函数法设计FIR数字滤波器的基本原理的理解。
2、加深对频率采样法设计FIR数字滤波器的基本原理的理解。
3、掌握在频域优化设计FIR数字滤波器的方法。
4、学习使用MATLAB语言提供的fir1和fir2子函数设计FIR数字滤波器。
二、实验内容(详见实验指导书)
1、各种窗函数特性比较。
2、用窗函数法设计FIR数字高通、低筒、带通、带阻滤波器。
3、用频率采样法设计FIR数字高通、低筒、带通、带阻滤波器。
4、采样点数对频率采样法设计滤波器的影响。
5、在频域优化设计FIR数字滤波器。
三、思考题
1、用MATLAB设计窗函数的步骤?
(试通过例程分析加以说明)
2、使用频率采样优化设计FIR数字滤波器,有几种基本方法?
有何优缺点?
(试通过例程分析加以说明)
3、用MATLAB提供的fir2子函数,如何确定理想滤波器的幅频特性?
如何在过渡带增加采样点数?
(试通过例程分析加以说明)
4、实验中遇到的问题分析及实验心得
实验十三MATLAB的用户图形界面
一、实验目的
1、熟悉句柄图形体系的对象树结构。
2、熟练掌握句柄图形体系的对象属性的创建、设置、查询。
3、熟练掌握句柄的获取。
4、熟练掌握图形用户界面(GUI)的制作。
二、实验内容(详见实验指导书)
1、句柄的获取。
2、句柄图形体系的对象属性的创建、设置、查询。
3、对象属性的缺省设置和查询。
4、界面菜单、快捷菜单、现场菜单的制作:
figure、set、uimenu的使用。
5、用户控件、对话框的制作。
三、思考题
1、句柄语句什么意思?
MATLAB图形对象的优先级是怎样的?
答:
2、什么是回叫函数?
MATLAB的GUIs是如何使用回叫函数的?
答:
3、MATLABGUI中是如何保存应用程序数据的?
为什么要保存GUI中的应用程序数据?
答:
4、
(1)创建一个GUI,显示不同的类型的随机数分布。
程序应该能够产生200,000个随机数并用hist创建柱状图显示出来。
注意正确设置标题和坐标轴的标签。
程序应能支持统一、高斯和瑞利分布,用下拉菜单来选择分布类型,此外,还必须提供一个编辑框,以便用户可以修改柱状图的柱数。
确保用户的输入合法(必须为正整数)。
(2)修改课堂例程中的温度转换GUI,添加一支“温度计”,温度计的红色“液柱”显示了当前摄氏温度值,范围在0-100ºC之间。
(3)修改
(2)中的温度转换GUI,允许用鼠标调节显示的温度。
(本练习需要用到本章中没有讨论到的材料,在线参阅figure图形对象的CurrentPoint属性。
)
实验源程序(整理好执行正确的源程序,并加上注释)
5、实验中遇到的问题分析及实验心得
实验十四Simulink仿真基础
一、实验目的
1、熟悉Simulink的模型窗口。
2、掌握Simulink模型的创建。
3、掌握连续系统和离散系统的模型分析。
4、了解子系统和封装。
二、实验内容(详见实验指导书)
1、Simulink的文件操作和模型窗口。
2、创建简单的Simulink模型。
3、Simulink的基本模块调试。
4、封装和子系统的创建。
三、思考题
1、调用MATLAB工作空间中的信号矩阵作为模型输入。
要求输入为:
2、实验中遇到的问题分析及实验心得
实验十五数字信号处理综合实验
一、实验目的
1、能综合利用信号处理的理论和Matlab编程实现对信号进行分析和处理。
2、掌握图形用户界面GUI的操作和设计流程。
二、实验内容
设计和实现基于GUI的信号分析系统,具体任务和要求如下:
任务1:
基本连续信号的产生
功能描述:
可以产生单位冲激函数、单位阶跃函数、复指数函数几种连续信号。
只需在信号的时间区间的编辑框中输入信号显示区间、脉冲宽度dt编辑框中输入脉冲宽度(同时作为时间间隔),在信号的突变点编辑框中输入信号的突变点(用于单位冲激函数和单位阶跃函数信号的突变点),在频率和相位框输入相应的参数,然后从下拉菜单中选择相应的信号选项,就可以在输出框中输出相应数据,在图形框中输出相应的图形。
参考界面:
任务2:
基本离散信号的产生
功能描述:
可以产生单位脉冲序列、单位阶跃序列、矩形序列、实指数序列、正弦序列、余弦序列、复指数序列、周期序列几种离散信号。
只需在输入框中输入相应信号的各种控制参数,然后从下拉菜单中选择相应的信号选项,就可以在输出框中输出相应数据,在图形框中输出相应的图形。
参考界面:
任务3:
序列的基本计算
功能描述:
可以用于对两离散序列进行以下几种计算:
相加、相乘、改变信号的比例系数、信号的折叠、抽样和、抽样积、信号功率、信号能量。
用户只需在“信号区间n1”中输入信号x1的区间n1,在“信号区间n2”中输入信号x2的区间n2,在输入框中的下拉菜单中选择“信号相加”或“信号相乘”选项;或是在比例系数编辑框输入相应的系数,在输入框中的下拉菜单中选择“改变信号的比例”选项;或是在“信号区”输入信号区间n,在“信号x”中输入信号x,在输入框中的下拉菜单中选择“抽样和”、“抽样积”、“信