load ('e1.mat')syms y d=1.8;%input('請輸入芯層厚度:');for i=0:Nq=i;n=teneff1{i+1,1}r1=sqrt(n^2-n1^2)*k0;r2=sqrt(n2^2-n^2)*k0;r3=sqrt(n^2-n3^2)*k0;a=-atan(r3/r2)+q*pi;if y>dEY1=cos(r2*d+a)*exp(-r1*(y-d))else if 0<y<dEY1=cos(r2*y+a);else y<0EY1=cos(a)*exp(r3*y)endendend這個程序是分段函數,運行時d有問題:無法從 sym 轉換為 logical。出錯 EYy (line 12)if y>d
1 回答

拉莫斯之舞
TA貢獻1820條經驗 獲得超10個贊
是提示EYy么?但這段程序里沒有EYy。
向從鍵盤輸入的話,你的input前面加%做什么?這句直接寫成d=input('請輸入芯層厚度:\n');就行了,\n是為了換行,看著好看,無其他作用。
你要寫分段函數的話,這樣就寫得太麻煩了,不像編程的人寫的。三個判斷應該寫成
if y>d
...
else if y>0
...
else ...
添加回答
舉報
0/150
提交
取消