Matlab绘制杨氏双缝图像

用Matlab绘制杨氏双缝干涉图像时,得出的图形总是灰色的,我想要呈现出来的图像是其他颜色的时候,代码应该怎么写呢?还请各位大佬帮忙解答!

img

你好!请问你需要什么颜色呢?

clc
close all
clear all
%% %%代码分块运行
lambda = 500e-9;    %%波长500nm
d = 2e-3;   %%双缝间距2mm
D=1;    %%双缝距离观察屏之间的距离1m
ym=5*lambda*D/d;    %%表示最宽的位置为5个亮纹处
xs=ym;
n=101;
ys=linspace(-ym,ym,n);  %%屏面线性间距向量
for i=1:n
    r1=sqrt((ys(i)-d/2).^2+D^2);    %%光程1
    r2=sqrt((ys(i)+d/2).^2+D^2);    %%光程2
    phi=2*pi*(r2-r1)./lambda;   %%相位差
    B(i,:)=4*cos(phi/2).^2;    %%计算光强,假设初始光强为1,不必加sum
end
N=255;
Br=B*55;    %%将光强乘以一个值,以增强图像的区分度,这个值不能太大亦不能太小,可以试一试

subplot(1,2,1);  %%一行两列中的第一幅图
image(xs,ys,Br);    %%从数组显示图像
colormap(gray(N));  %%使图像以灰度图像显示
subplot(1,2,2);  %%一行两列中的第二幅图
plot(B,ys);
title('双缝干涉图样')

只要把原来的colormap(gray(N))改成你需要的就行,比如jet(N)

clc
close all
clear all
%% %%代码分块运行
lambda = 500e-9;    %%波长500nm
d = 2e-3;   %%双缝间距2mm
D=1;    %%双缝距离观察屏之间的距离1m
ym=5*lambda*D/d;    %%表示最宽的位置为5个亮纹处
xs=ym;
n=101;
ys=linspace(-ym,ym,n);  %%屏面线性间距向量
for i=1:n
    r1=sqrt((ys(i)-d/2).^2+D^2);    %%光程1
    r2=sqrt((ys(i)+d/2).^2+D^2);    %%光程2
    phi=2*pi*(r2-r1)./lambda;   %%相位差
    B(i,:)=4*cos(phi/2).^2;    %%计算光强,假设初始光强为1,不必加sum
end
N=255;
Br=B*55;    %%将光强乘以一个值,以增强图像的区分度,这个值不能太大亦不能太小,可以试一试
subplot(1,2,1);  %%一行两列中的第一幅图
image(xs,ys,Br);    %%从数组显示图像
colormap(jet(N));  %%使图像以灰度图像显示 ¥¥¥¥¥¥¥¥(改这里)
subplot(1,2,2);  %%一行两列中的第二幅图
plot(B,ys);
title('双缝干涉图样')

结果是这样的

img

如果改成copper(N),winter(N)之类的又会不一样,自己可以去试一试