题主的代码执行后matlab不出图?其最根本的原因:就是没有正确使用好点运算符,即y的表达式书写错误(少了一个点除符号,其结果得到一个数值,而不是一组向量数值),应该为
y=sqrt((1+0.5*T*n-exp(-n)*(0.5*T*n.*cos(4*l*x)+sin(2*l*x))-(abs(Na)^2)*T*(1-exp(-n).*sin(2*l*x)).^2)./(4*(abs(Na)^2)*T*n*exp(-2*n)*(l.^2).*cos(2*l*x)));
修改后,即可正常出图。
程序里面y也是一个数组,y的值根据相应的x值会变,它这样做就是每次在y中添加一个元素,最后得到的y中的元素与x是一一对应的。如果用你的写法,y的值在循环中会不停地被覆盖掉,最后输出的y就是一个数,即x=10时的y值,所以这个方法是不对的,你可以换种写法。
x=[0:0.1:10];
y=zeros(1,101);
for
ii=1:101
if
x(ii)>=8
y(ii)=1;
elseif
x(ii)>=6
y(ii)=5-x(ii)/2;
elseif
x(ii)>=4
y(ii)=2;
elseif
x(ii)>=0
y=sqrt(x(ii));
end
end
plot(x,y)
这样应该也可以。