助。
需要特别指出的是,当遇到在已经存在的图上再绘制一条或多条曲线,可使用hold on 指令,可保持当前轴及图形保持不被刷新,并准备接收此后绘制的新曲线,hold off 则 取消此功能。对于想画多个独立的图形,则会用到figure(n)指令,这里n 为整数,可顺 序从1 向后排。如果想在特定图形中布置几幅独立的子图,则会用到subplot(m,n,k), 即在(m×n)幅子图中的第k 幅成为当前图;subplot(‘position’,[left botton width height]),表示在指定位置上开辟子图,并成为当前图。使用clf 指令可清除图 形窗的内容。另外MATLAB 还提供了ginput、gtext、legend 等交换指令。
[x,y]=ginput(n),可用鼠标从二维图形上获取n 个点的数据坐标(x,y),该指令只 适用于二维图形,在数值优化、工程设计中十分有用。通常在使用前先对图进行局部放大处 理。
[实验内容]
一.仿照运行,体会数据可视化方法。
1.已知n=0,1,??,12,y=|(n-6)|-1,运行下面程序,体会离散数据可视化方法。
% 用plot 实现离散数据可视化 n=0:12; %产生一组自变量数据 y=1./abs(n-6); %计算相应点的函数值 plot(n,y,'r*','MarkerSize',20) %用红花标出数据点 grid on %画坐标方格 % 用stem 实现离散数据可视化 n=0:12; y=1./abs(n-6); stem(n,y) 说明:
? plot 和stem 指令均可以实现离散数据的可视化,但通常plot 更常用于连续函
数中特殊点的标记;而stem 广泛运行与数字信号处理中离散点的图示。 ? 用户在运行上面例程时会发现在命令窗口出现警告:Warning: Divide by
zero!即警告程序中出现非零数除以0 的指令。MATLAB 对于这种情况并不中止 程序,只是给该项赋值为inf 以做标记。
2.下面时用图形表示连续调制波形y = sin(t)sin(9t) ,仿照运行,分析表现形式 不同的原因。
clear t1=(0:11)/11*pi; y1=sin(t1).*sin(9*t1); t2=(0:100)/100*pi; y2=sin(t2).*sin(9*t2); subplot(2,2,1),plot(t1,y1,'r.'),axis([0,pi,-1,1]),title('子图 (1)') subplot(2,2,2),plot(t2,y2,'r.'),axis([0,pi,-1,1]),title('子图 (2)') subplot(2,2,3),plot(t1,y1,t1,y1,'r.') axis([0,pi,-1,1]),title('子图 (3)') subplot(2,2,4),plot(t2,y2) axis([0,pi,-1,1]),title('子图 (4)')
20
二.编程实现。
1.用图形表示连续调制波形y = sin(t)sin(9t) ,过零点及其包络线,如下图所示。
2. 励条件下二阶系统归一化响应可表现为y(t)?1?21?e??tsin(?t??),其中ξ为阻
1??2尼系数, ??1?? ,??arctg() 。请用不同的颜色或线型,在同一张图上,
?绘制ξ= 0.2 : 0.2 : 2.0取值下系统在t∈[0,18] 区间内的响应曲线,并要求用ξ=
0.2和ξ=2.0对它们相应的两条曲线进行醒目的文字标志。
3. 编写函数[x,n]=stepseq(n0,n1,n2),实现:
?1n0?n?n1 u(n)?? n为整数
0n?n?n20?并编写脚本文件实现:
x(n) = n?[u(n) ? u(n ?10)] +10e-0.3(n-10) [u(n ?10) ? u(n ? 20)], 0 ≤ n ≤ 20
要求在脚本文件中调用stepseq 函数,最后绘出序列x(n) 在给定区间的波形图。 4. 编写一个函数文件 [y,n]=sigadd(x1,n1,x2,n2),实现两个对应样本之间的相加,
其中x1 是长度为n1 的序列,x2 是长度为n2 的序列,n1、n2 分别是x1、x2 的位置 信息(n1、n2 均为整数),如:
n1={ -3,-2,-1,0,1,2,3,4},对应的 x1={ 2, 3, 1,4,1,3,1,2};
21
n2={-4,-3,-2,-1,0,1,2},对应的 x2={ 1, 3, 2, 5,1,3,4}。
当调用函数[y,n]=sigadd(x1,n1,x2,n2)时,我们应该得到: n={-4,-3,-2,-1,0,1,2,3,4},对应的 y={ 1, 5, 5, 6,5,4,7,1,2}。
仔细观察sigadd 函数的功能。编好函数文件程序后,请在命令窗口调用,验证正确 性,记录验证结果。
22
23
实验五 简单数据分析
[实验目的]
1.初步掌握利用MATLAB 实现数据的拟合、插值、简单数据分析等。
[实验原理]
数值计算能力是MATLAB 称雄世界的根本柱石。MATLAB 内建了很多函数可以求解线性方 程、特征值问题以及有关多项式和卷积、数据分析、泛函、信号处理、系统分析等方面的指 令。结合目前的学习进度,本课程内只简单讨论数据的拟合、插值、简单数据分析及在实验 中讨论函数的零极点求法等内容,对其他内容有兴趣的可参看参考书籍。
MATLAB 提供了拟合和插值的相关函数。曲线拟合是研究如何寻找“平滑”曲线最好地表现带噪声的“测量数据”点。而插值是在认定所给“基准数据”完全正确的情况下,研究如何“平滑”地估算出“基准数据”之间其他点的函数值。因此插值所得曲线一定穿过“基 准数据”。而拟合曲线就不一定了。另外,拟合多项式只能在给定数据所限定的区间内使用, 不要任意向往拓展。而每当基准数据之间其他点上函数值没法获得,或获得的代价很好时, 插值就发挥作用。插值指令很多,有interp1,interp2,interp3 等。采用的插值算法 也很多,如线形插值、三次多项式插值算法、样条插值等。对于多项式拟合有polyfit、 poly2str、polyval 等函数,具体请参看帮助和范例。
MATLAB 内建了很多数据分析函数,比如常用的随机数发生器函数rand,randn;统计 分析指令有:min-求最小值,max-求最大值,mediam-求中值,mean-求平均值,std -求标准差,sort-排序指令等。;差分和累计函数diff、prod、sum 等。另外MATLAB还提供了很多泛函指令、信号处理专业工具包、系统分析中的控制工具包以及诸如微分、求 导等符号运算功能等等,有需要的可参看帮助及相关书籍。
[实验内容]
一. 数据拟合及插值
1.下面是对给定数据点(x0,y0)进行多项式三阶拟合的例子,仿照运行,掌握数据拟 合的一般方法。
24
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新幼儿教育MATLAB程序设计实验 (6)全文阅读和word下载服务。
相关推荐: