[讨论] if函数无法绘制

楼主: hongyi0402 (momorin)   2019-03-17 01:53:20
各位好
小弟初入matlab的世界
最近练习if指令却遇到绘制出来出现空白的状况
希望能得到各位的帮助
for t=linspace(-5,5)
if t>0 & t<1
plot(t,t*2)
elseif t>=1 & t<3
plot(t,0.5*((t.^2)-4*t+3))
else
plot(t,t*0)
end
end
附上Code 希望各位指出错误
作者: sin55688 (单手挑藏獒)   2019-03-17 02:03:00
use "hold on" after plot
作者: profyang (prof)   2019-03-17 14:59:00
这画法很奇怪啊...你就算有加上1F的hold on 也等于是一一点去化 但plot默认是多点才会连成线让你可以看到 所以你应该还是看不到任何东西啊你真的坚持要这样写只能在每个plot后面加'ro'之类的让他每点都标出来 例如plot(t,t*2,'ro')btw我写会这样写: https://i.imgur.com/CvBXvV2.png
作者: shuncheng (shuncheng)   2019-03-17 17:08:00
推楼上细心检查,小弟学到惹ro跟新的写法窝通常都会这样写y=2*t.*(t>0&t<1)+0.5*(t.^2-4*t+3).*(t>=1&t<3);
作者: profyang (prof)   2019-03-17 17:30:00
楼上的写法比我好耶~简洁可读性也比较高 学到了!
作者: name0625 (lawpy)   2019-03-17 20:40:00
你用for,t就是一个一个跑,上面两位则是设成矩阵一次跑,要画出连续线段就需要直接放矩阵,可参考doc plot
作者: profyang (prof)   2019-03-17 22:16:00
就我上面说的 你for t=...就是每次一个t值 然后你把这t对它函数值画图 一次只有一个点 就算有hold on住 每次一点也要用上面的'ro'这样的marker才可以看的到
作者: sppmg (sppmg)   2019-03-18 22:18:00
提醒一下,你应该用&&会比较合理。

Links booklink

Contact Us: admin [ a t ] ucptt.com