[問題] if的語法已回收

看板MATLAB作者 (阿文)時間16年前 (2010/01/16 22:26), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
我現在碰到的問題是要解六個聯立的ODE 用的是matlab裡頭ode45的solver 寫成兩個.m檔 1. function dy = ODE(t,y) dy = zeros(6,1); dy(1) = y(4); dy(2) = y(5); dy(3) = y(6); dy(4) = F(y(1),...,y(6)); dy(5) = G(y(1),...,y(6)); dy(6) = H(y(1),...,y(6)); F,G,H是一大串複雜的方程式 2. option = odeset('RelTol',1e-4,'AbsTol',[1e-3 1e-3 1e-3 1e-4 1e-4 1e-4]); [T,Y] = ode45(@ODE,[0 6],[0 -50 -50 1 0 0],option); loglog(T,Y(:,1),'b-',T,Y(:,2),'r-',T,Y(:,3),'g-') 然後執行第二個讓matlab作圖,因為我的y(1)~y(6)都是以指數形式做圖 其中exp(y(2))會掉到很大的負數,無法再計算下去 我的想法是應該表示y(2)會變成負值,所以exp(y(2))做不下去 想加一個if的指令,讓y(2)一旦小於零就自動跳回正數 我的做法是在第二個.m檔plot前加入 if (y(2)<0) y(2)=-y(2); end 執行後會顯示 ??? Undefined function or method 'y' for input arguments of type 'double'. 這樣的error訊息 想請問版上前輩,這種情況之下要如何修正呢? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.42.100.2
文章代碼(AID): #1BKSoQpf (MATLAB)