[討論] if函數無法繪製

看板MATLAB作者 (momorin)時間2年前 (), 2年前編輯推噓7(7010)
留言17則, 5人參與, 2年前最新討論串1/1
各位好 小弟初入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 希望各位指出錯誤 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.224.219.131 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1552758802.A.3BB.html

03/17 02:03, 2年前 , 1F
use "hold on" after plot
03/17 02:03, 1F
Ok I will try thank you ※ 編輯: hongyi0402 (39.9.227.108), 03/17/2019 11:01:08

03/17 14:59, 2年前 , 2F
這畫法很奇怪啊...你就算有加上1F的hold on 也等於是一
03/17 14:59, 2F

03/17 14:59, 2年前 , 3F
一點去化 但plot預設是多點才會連成線讓你可以看到 所以
03/17 14:59, 3F

03/17 14:59, 2年前 , 4F
你應該還是看不到任何東西啊
03/17 14:59, 4F

03/17 15:00, 2年前 , 5F
你真的堅持要這樣寫只能在每個plot後面加'ro'之類的讓他
03/17 15:00, 5F

03/17 15:00, 2年前 , 6F
每點都標出來 例如plot(t,t*2,'ro')
03/17 15:00, 6F

03/17 15:10, 2年前 , 7F
btw我寫會這樣寫: https://i.imgur.com/CvBXvV2.png
03/17 15:10, 7F
請問如果是在for迴圈裡面,計算出來只會是一個點這樣嗎?

03/17 17:08, 2年前 , 8F
推樓上細心檢查,小弟學到惹ro跟新的寫法
03/17 17:08, 8F

03/17 17:09, 2年前 , 9F
窩通常都會這樣寫
03/17 17:09, 9F

03/17 17:09, 2年前 , 10F
y=2*t.*(t>0&t<1)+0.5*(t.^2-4*t+3).*(t>=1&t<3);
03/17 17:09, 10F
原來可以直接將邏輯放在算式中,一直以為只能利用if來做邏輯判斷

03/17 17:30, 2年前 , 11F
樓上的寫法比我好耶~簡潔可讀性也比較高 學到了!
03/17 17:30, 11F
※ 編輯: hongyi0402 (39.9.227.108), 03/17/2019 20:09:06

03/17 20:40, 2年前 , 12F
你用for,t就是一個一個跑,上面兩位則是設成矩陣一次
03/17 20:40, 12F

03/17 20:40, 2年前 , 13F
跑,要畫出連續線段就需要直接放矩陣,可參考doc plot
03/17 20:40, 13F

03/17 22:16, 2年前 , 14F
就我上面說的 你for t=...就是每次一個t值 然後你把這t
03/17 22:16, 14F

03/17 22:16, 2年前 , 15F
對它函數值畫圖 一次只有一個點 就算有hold on住 每次一
03/17 22:16, 15F

03/17 22:17, 2年前 , 16F
點也要用上面的'ro'這樣的marker才可以看的到
03/17 22:17, 16F
感謝大大讓我多學到其他寫法獲益良多 ※ 編輯: hongyi0402 (36.224.219.131), 03/17/2019 23:15:40

03/18 22:18, 2年前 , 17F
提醒一下,你應該用&&會比較合理。
03/18 22:18, 17F
文章代碼(AID): #1SZJWIEx (MATLAB)
文章代碼(AID): #1SZJWIEx (MATLAB)