关于振幅型双缝物体函数的编写#matlab

编写振幅型双缝物体函数时遇到输出图形与理想图形不符问题
function[t] =sf(a,b)

t=[];
for x=linspace(-1e-3,1e-3,101)
if -(a+b)/2<=x<=-(b-a)/2
t=[t 1];
else if (b-a)/2<=x<=(b+a)/2
t=[t 1];
else
t=[t 0];
end
end

end

end

运行结果如下

img

这个图形上的输出图形显然与实际函数所对应的不符

img

1.

改成这样试试

function[t] =sf(a,b)

t=[];
for x=linspace(-(a+b),(a+b),101)
    if (-(a+b)/2)<=x&&x<=(-(b-a)/2)
        t=[t 1];
    else if ((b-a)/2)<=x&&(x<=(b+a)/2)
            t=[t 1];
        else
            t=[t 0];
        end
    end
    
end
end

clear all
a=100;b=200;
x=linspace(-(a+b),(a+b),101);
t=sf(a,b);

plot(x,t,'r');
ylim([0 1.2]);