79 views (last 30 days)

I'm try in to simulate a Coronae (diffraction of droplet). There are color depends by wavelength, and intensity depends by diffraction. How can I control both color by wavelength (lambda) and intensity (I) ?

I can only control lambda to have different color of diffraction pattern now.

lambda=400; % wavelength [nm]

a=10e3; % obstruct disc radius [nm](um)

x=linspace(-0.2,0.2,1000);

y=x;

[X,Y]=meshgrid(x,y);

r=sqrt(X.^2+Y.^2);

% diffraction pattern

u=2.*pi.*a./lambda;

J=besselj(1,u.*sin(r));

I=sqrt((u.*((1+cos(r))./2).*(J./sin(r))).^2); % Intensity

% colormap

w=lambda;

if (w >= 380) && (w < 440)

R = -(w - 440.) / (440. - 380.);

G = 0.0;

B = 1.0;

elseif (w >= 440) && (w < 490)

R = 0.0;

G = (w - 440.) / (490. - 440.);

B = 1.0;

elseif (w >= 490) && (w < 510)

R = 0.0;

G = 1.0;

B = -(w - 510.) / (510. - 490.);

elseif (w >= 510) && (w < 580)

R = (w - 510.) / (580. - 510.);

G = 1.0;

B = 0.0;

elseif (w >= 580) && (w < 645)

R = 1.0;

G = -(w - 645.) / (645. - 580.);

B = 0.0;

elseif (w >= 645) && (w <= 780)

R = 1.0;

G = 0.0;

B = 0.0;

else

R = 0.0;

G = 0.0;

B = 0.0;

end

c=[R,G,B];

h=linspace(0,1,256); % illumination (intensity) from [0,1]

for i=1:length(h)

S{i}=h(i).*c;

end

map=cell2mat(S');

% figure

pcolor(X,Y,I); shading flat; axis image; title([num2str(lambda)]);

colormap(map);

This is what I'm trying to simulate. (picture from google search)

And this is what I get so far (can change color by wavelength)

Bjorn Gustavsson
on 4 Dec 2020

You could try something like this:

lambda = 400:700; % Wavelengths in nm.

I_of_lambda = % Solar-spectral intensity as a function of wavelength

rgb_of_lambda = % your RGB-colour-map, one tripplet for each wavelength, like yours above

C_of_lambda = ones(size(lambda)); % Relative sensitivity at each wavelength, compare with ccd quantum efficiency. This is jus a placeholder

a=10e3; % obstruct disc radius [nm](um)

x=linspace(-0.2,0.2,1000);

y=x;

[X,Y]=meshgrid(x,y);

r=sqrt(X.^2+Y.^2);

Img_rgb = zeros([size(X),3]);

% diffraction pattern

for i_lambda = 1:numel(lambda)

% Here we calculate the diffraction-pattern wavelength-by-wavelength, and add their

% contributions to the R, G and B-channels together, one by one.

u=2.*pi.*a./lambda(i_lambda);

J=besselj(1,u.*sin(r));

I=sqrt((u.*((1+cos(r))./2).*(J./sin(r))).^2); % Intensity

Img_rgb(:,:,1) = Img_rgb(:,:,1) + I*rgb_of_lambda(i_lambda,1)*C_of_lambda(i_lambda);

Img_rgb(:,:,2) = Img_rgb(:,:,2) + I*rgb_of_lambda(i_lambda,2)*C_of_lambda(i_lambda);

Img_rgb(:,:,3) = Img_rgb(:,:,3) + I*rgb_of_lambda(i_lambda,3)*C_of_lambda(i_lambda);

end

Img_rgb = Img_rgb/max(Img_rgb(:)); % scale to 0-1

imagesc(X(1,:),Y(:,1),Img_rgb); shading flat; axis image; title('4000 - 7000 Å');

This should give you something to work with. You might have to scale the blue channel up. The colour-balancing in these type of tasks are notoriously confusing due to the characteristics of the colour-vision of our eyes.

HTH

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
## 4 Comments

## Direct link to this comment

https://ch.mathworks.com/matlabcentral/answers/677193-how-to-control-color-and-the-intensity-in-a-pcolor-figure#comment_1181978

⋮## Direct link to this comment

https://ch.mathworks.com/matlabcentral/answers/677193-how-to-control-color-and-the-intensity-in-a-pcolor-figure#comment_1181978

## Direct link to this comment

https://ch.mathworks.com/matlabcentral/answers/677193-how-to-control-color-and-the-intensity-in-a-pcolor-figure#comment_1182013

⋮## Direct link to this comment

https://ch.mathworks.com/matlabcentral/answers/677193-how-to-control-color-and-the-intensity-in-a-pcolor-figure#comment_1182013

## Direct link to this comment

https://ch.mathworks.com/matlabcentral/answers/677193-how-to-control-color-and-the-intensity-in-a-pcolor-figure#comment_1182433

⋮## Direct link to this comment

https://ch.mathworks.com/matlabcentral/answers/677193-how-to-control-color-and-the-intensity-in-a-pcolor-figure#comment_1182433

## Direct link to this comment

https://ch.mathworks.com/matlabcentral/answers/677193-how-to-control-color-and-the-intensity-in-a-pcolor-figure#comment_1182968

⋮## Direct link to this comment

https://ch.mathworks.com/matlabcentral/answers/677193-how-to-control-color-and-the-intensity-in-a-pcolor-figure#comment_1182968

Sign in to comment.