:
本人做光学仿真实验,要求用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,:)=4cos(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];
现在结果是黑白的
不知道代码有没有多余的部分,都是我在网上找的
想生成带色彩的