Matlab信号与系统实验.docVIP

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Matlab信号与系统实验

实验一: 利用Matlab来实现函数的绘制,主要思想就是我们给定一个定义域,然后再通过定义一个对应法则,使之生成一个对应的值域,两个集合存储于向量中,然后再一一对应,如果将两个向量看作两个集合,那么就可以将其视作两个集合满射。 Exp: There are { -5, 2, 3, 13, 10 } 我们定义对应法则f(x) = 2 * x – 1 We get { -11,3, 5,25, 19 } 这就是值域了 然后画图过程就是建立平面坐标系,x轴用来标识定义域的值,y轴用来标识值域的值,绘制出来的图形就可以算是对f(x) 的仿真了。 该实验要用到的函数: 1. sin( x ) 这里对x变量要理解,x可以支持符号变量,即我们平时说的x,真正的未知数,然而由于这一实验我们运用的是如何通过Matlab中的向量(集合)来仿真信号,所以会用到一有限的定义域(向量),我们要做的就是将这个有限的集合当作变量传递给sin( x ),其内部是这样计算的。 K = { a, b, c, d, … , z } // K 是我们所给定的有限的定义域。 sin( K ) 的返回值为 T = { sin(a), sin(b), sin(c), sin(d), … , sin(z) } 很显然,K与T的长度也会是相同的。 在整个Matlab 编程时一定要有向量(向量也算是一维的矩阵,Matlab可是叫矩阵实验室呀)的思想。在仿真的过程中一定要考虑到这个函数是不是支持向量以点列独立的身份代入运算,如果是的话,那么是最好进行仿真的,给定一个有限的定义域(例如 K = -10 : 0.01 : 10, 产生向量 K,其值从-10 到 10,每个相邻的数差值为0.01,K的长度为 2001 )括号内的K的长度达到了2001,在很小的区间内打印2001个点,就一定能够模拟出原函数的连续图形了。 我们来看下面这个函数 function y = jump( x ) %阶跃函数 if( x 0 ) y = 0; elseif( x 0 ) y = 1; else y = 0.5; end end 咋看起来是没有什么问题的,学过c语言的我们知道,这个阶跃函数应该是对的。当问题就是,这个函数不支持输入的向量或者矩阵以点列的形式来处理,为什么,我们来一条条语句进行分析。 首先是if( x 0 ),现假设x就是前面的K向量(矩阵),x是一个一维的向量, x 0 的结果是这样来判定的,首先 x 0 会返回一个boolean值的与x等长的向量,这个向量中的每一个元素对应与x中每一个元素进行一次 “ 0” 的判断,如果返回向量中有一个大于零的元素,那么x 0为假,如果返回向量中有一个元素小于零那么 x 0为假,所以K 代入后就是既不大于零又不小于零,所以结果就是返回的就是一个 1 * 1 的矩阵,y = 0.5;所以结果就只有一个点,这和我们的期望相去甚远啊。那么怎么改呢,有一种直接解决麻烦的改法: function y = jump( x ) %阶跃函数 len = length( x ); for( i = 1 : len ) if( x(i) 0 ) %直接对每一个元素进行判断 y(i) = 1; %赋值同样是对应赋值,不要动不动就y= 1了,这时赋值矩阵了 elseif( x(i) 0 ) y(i) = 0; else y(i) = 0.5; end end end 如果我们不太苛求阶跃函数在 x = 0时的值,那么我们可以这样写的简便点,也就是实验指导书中的写法了。 function y = jump( x ) %阶跃函数 y = x 0; %大于操作符是直接对每一个元素进行判定,返回等长的向量 end 这样写的话,就是利用了 操作符的性质,这在前面已经进行了说明。这个写法注意函数的返回值是boolean类型,也即逻辑值,也就是说,如果要使得x = 0时,y = 0.5的话,还要将先其转化为double类型。 function y = jump( x ) %阶跃函数 y = x 0; y = double( y ); fix = ( x == 0 ) .*

文档评论(0)

panguoxiang + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档