我写了一些快速代码,用于可视化空间中具有不同幅度的两个波的叠加,点源几何。这适用于 khanacademy CS 平台。http://www.khanacademy.org/cs/superposition/1245709541但我无法在 matlab 中重现确切的现象。我得到的只是一个嘈杂的图像。这与随机数生成的差异有关吗?我不知道 random(0,1)(in JS) 和 rand(in 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')