如何把这两个函数合并,生成一个带色彩的干涉图

问题遇到的现象和发生背景


本人做光学仿真实验,要求用matlab,但是本人没有学过

问题相关代码,请勿粘贴截图

回调函数1 :
function pushbutton1_ShF_Callback(hObject, eventdata, handles)

lambda=500e-9;

% d=0.002; %双缝间距d
d=str2num(get(handles.ShF_jianju,'string'));
D=str2num(get(handles.D_or_f,'string')); %
ymax=0.0015; %y轴
xs=ymax;
ny=101;
ys=linspace(-ymax,ymax,ny);
for i=1:ny
L1=sqrt((ys(i)-d/2).^2+D/2);
L2=sqrt((ys(i)+d/2).^2+D/2);
phi=2pi(L1-L2)/lambda;
% b(i,:)=4cos(phi/2).^2; %每个元素的平方,
b(i,:)=4
cos(phi/2)^2; %整体的平方
end
figure(gcf);
nclevels=255;
br=(b/4.014)*nclevels;
% subplot(1,2,1)
% title('双缝干涉');
figure(1);
image(xs,ys,br);
colormap(gray(nclevels));

函数2:

function Value=WavelenghToRGB(Wavelength)

Gamma = 0.8;
IntensityMax = 255;

Blue=0;
Green=0;
Red=0;
factor=0;

if and(Wavelength >= 380, Wavelength <= 439)

Red = -(Wavelength - 440) / (440 - 350);
Green = 0.0;
Blue = 1.0;

elseif and(Wavelength >= 440 , Wavelength <= 489)

Red = 0.0;
Green = (Wavelength - 440) / (490 - 440);
Blue = 1.0;

elseif and(Wavelength >= 490 , Wavelength <= 509)

Red = 0.0;
Green = 1.0;
Blue = -(Wavelength - 510) / (510 - 490);

elseif and(Wavelength >= 510 , Wavelength <= 579)

Red = (Wavelength - 510) / (580 - 510);
Green = 1.0;
Blue = 0.0;

elseif and(Wavelength >= 580 , Wavelength <= 644)

Red = 1.0;
Green = -(Wavelength - 645) / (645 - 580);
Blue = 0.0;

elseif and(Wavelength >= 645 , Wavelength <= 780)

Red = 1.0;
Green = 0.0;
Blue = 0.0;

else

Red = 0.0;
Green = 0.0;
Blue = 0.0;

end

if and(Wavelength >= 350 , Wavelength <= 419)

factor = 0.3 + 0.7*(Wavelength - 380) / (420 - 380);

elseif and(Wavelength >= 420 , Wavelength <= 700)

factor = 1.0;

elseif and(Wavelength >= 701,Wavelength <= 780)

factor = 0.3 + 0.7*(780-Wavelength)/(780-700);

else

factor = 0.0;

end

R = Adjust(Red, factor, IntensityMax, Gamma);
G = Adjust(Green, factor, IntensityMax, Gamma);
B = Adjust(Blue, factor, IntensityMax, Gamma);    

Value=[R, G, B];

运行结果及报错内容

现在结果是黑白的

不知道代码有没有多余的部分,都是我在网上找的

想生成带色彩的

img