问下这个是正负无穷的函数,分段函数写的对吗?

load ('e1.mat')
syms y 
d=1.8;%input('请输入芯层厚度:');
for i=0:N
q=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>d
EY1=cos(r2*d+a)*exp(-r1*(y-d))
else if 0<y<d
EY1=cos(r2*y+a);
else y<0
EY1=cos(a)*exp(r3*y)
end
end
end
这个程序是分段函数,运行时d有问题:
无法从 sym 转换为 logical。

出错 EYy (line 12)
if y>d

弑天下
浏览 89回答 1
1回答

拉莫斯之舞

是提示EYy么?但这段程序里没有EYy。向从键盘输入的话,你的input前面加%做什么?这句直接写成d=input('请输入芯层厚度:\n');就行了,\n是为了换行,看着好看,无其他作用。你要写分段函数的话,这样就写得太麻烦了,不像编程的人写的。三个判断应该写成if y>d...else if y>0...else ...
打开App,查看更多内容
随时随地看视频慕课网APP