研究生笑笑的个人空间 https://blog.eetop.cn/1418595 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

采用.*+形式的分段函数为什么有段不显示

已有 324 次阅读| 2023-6-1 17:02 |个人分类:matlab|系统分类:芯片设计

Key point:分段函数参与运算过多(超过两次),产生了无法显示的结果(Inf, NaN等)。


Matlab的分段函数表示方式很多,有if-else的选择结构,有piecewise的函数,但我选择的是.*+这种形式的,这种形式可以把分段函数写在一个式子里,比较明了。


简单的例子:

t=0:0.1:30;

v=t.*(t<10)+10*(t>=10 & t<20)+(30-t).*(t<30 & t>=20);

plot(t,v);

axis([0 32 0 12]);

image.png

但在实际操作中,要注意,在取一个分段里的自变量时,其他分段里默认是0。比如t.*(t<10)时,t在10<=t<=30里为零,就是t.*(t<10)+0.*( t>=10 & t<=30)。所以这个时候你看t的话,t是301个值,只不过后面201个值是零。这样就会出现一种情况,可能是NaN*0,比如y=1/t,此时10<=t<=30就是Inf,无法显示。如底下蓝色线所示。

image.png

这个问题知道原理就好解决了,让无意义结果不出现。具体的解决方案就具体分析了。上面只要在10<=t<=30也取t就可以了。

image.png

这是实际中出现的图形,这个是出现了0/0的情况,是NaN的原因。



点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 10

    关注
  • 60

    粉丝
  • 32

    好友
  • 105

    获赞
  • 33

    评论
  • 1777

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-11 13:05 , Processed in 0.015395 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部