点源ジオメトリの空間で異なる振幅を持つ 2 つの波の重ね合わせを視覚化するための簡単なコードをいくつか書きました。これは khanacademy CS プラットフォームで動作します。http://www.khanacademy.org/cs/superposition/1245709541しかし、matlab で正確な現象を再現することはできません。私が得るのは騒々しいイメージだけです。これは乱数生成の違いと関係があるのでしょうか? random(0,1)(JS) と rand(matlab) の違いがわかりません。
ここにmatlabコードがあります
像面上の点 x,y に対する波動重ね合わせ関数
function S = Super(refamp,objamp,x,y,a,lambda)
r1 = sqrt(a*a+x*x+y*y); %a is in z-axis
S = refamp+(objamp*cos(2*pi*r1/(lambda/(10^6))));
テストスクリプト
close all;
clear all;
clc;
a=10; %distance from source to image plane
width = 1024;
height =1024;
im = zeros(width); % the image
x=1;
y=1;
A0 = 3; % amplitude of reference wave
A1 = 1; % amplitude of object wave A0>>A1: A0/A1>=3
lambda = 632; % wavelength in nanometers
% generate the superposition in space width*height at a along z-axis
for y=1:height
for x=1:width
s = Super(A0,A1,x-(width/2),y-(height/2),a, lambda);
r=rand;
if(r<(s/(A0+A1)))
im(x,y) = 1;
end
end
%display the image
figure
imshow(im,[])
title('test image')