作者hongyi0402 (momorin)
看板MATLAB
標題[討論] if函數無法繪製
時間Sun Mar 17 01:53:20 2019
各位好
小弟初入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://webptt.com/m.aspx?n=bbs/MATLAB/M.1552758802.A.3BB.html
1F:推 sin55688: use "hold on" after plot03/17 02:03
Ok I will try thank you
※ 編輯: hongyi0402 (39.9.227.108), 03/17/2019 11:01:08
2F:推 profyang: 這畫法很奇怪啊...你就算有加上1F的hold on 也等於是一03/17 14:59
3F:→ profyang: 一點去化 但plot預設是多點才會連成線讓你可以看到 所以03/17 14:59
4F:→ profyang: 你應該還是看不到任何東西啊03/17 14:59
5F:→ profyang: 你真的堅持要這樣寫只能在每個plot後面加'ro'之類的讓他03/17 15:00
6F:→ profyang: 每點都標出來 例如plot(t,t*2,'ro')03/17 15:00
請問如果是在for迴圈裡面,計算出來只會是一個點這樣嗎?
8F:推 shuncheng: 推樓上細心檢查,小弟學到惹ro跟新的寫法03/17 17:08
9F:→ shuncheng: 窩通常都會這樣寫03/17 17:09
10F:→ shuncheng: y=2*t.*(t>0&t<1)+0.5*(t.^2-4*t+3).*(t>=1&t<3);03/17 17:09
原來可以直接將邏輯放在算式中,一直以為只能利用if來做邏輯判斷
11F:推 profyang: 樓上的寫法比我好耶~簡潔可讀性也比較高 學到了!03/17 17:30
※ 編輯: hongyi0402 (39.9.227.108), 03/17/2019 20:09:06
12F:→ name0625: 你用for,t就是一個一個跑,上面兩位則是設成矩陣一次 03/17 20:40
13F:→ name0625: 跑,要畫出連續線段就需要直接放矩陣,可參考doc plot 03/17 20:40
14F:推 profyang: 就我上面說的 你for t=...就是每次一個t值 然後你把這t 03/17 22:16
15F:→ profyang: 對它函數值畫圖 一次只有一個點 就算有hold on住 每次一 03/17 22:16
16F:→ profyang: 點也要用上面的'ro'這樣的marker才可以看的到 03/17 22:17
感謝大大讓我多學到其他寫法獲益良多
※ 編輯: hongyi0402 (36.224.219.131), 03/17/2019 23:15:40
17F:推 sppmg: 提醒一下,你應該用&&會比較合理。 03/18 22:18