繁体   English   中英

MATLAB中的光学格

[英]Optical Lattice in MATLAB

我正在编写脚本以绘制以下图片

在此处输入图片说明

以下代码可以正常工作,并绘制与上述相同的形状,没有球体。

clear all
PS=zeros(100,100); 
A=2.4; 
B=3.4; 

for i=1:100 

  for j=1:100        
   PS(i,j) = cos((.1*i)*A)*cos((.1*j)*B); 
  end 
end 
surfc(PS)

我的问题是,如何绘制这些球体?

一旦在晶格上具有坐标,就可以很容易地绘制原子/球体,也就是说,您需要找到(如Wikipedia文章中所述)潜在的最小值。 我认为您可以弄清楚那部分。 如果没有,我会误解您的问题了!

对于演示,我将使用较小的网格,以使原子更少,并使用scatter3绘制球体。 然后,您可以将我的近似值替换为确切的最小值。

这是完整的代码:

clear
clc
close all

N = 30;
PS=zeros(N,N); 
A=2.4; 
B=3.4; 

for i=1:N

    for j=1:N 

        PS(i,j) = cos((.1*i)*A)*cos((.1*j)*B); 
    end

end

%// Approximate locations of the atoms. You can calculate this more
%// accurately of course.
xAtom = [1 10 10 19 28 28];
yAtom = [13 2 27 13 2 27];

%// Plot atoms at height of .6.
zAtom = repmat(.6,1,numel(xAtom));

surfc(PS)

hold on

%// Scatter plot. You can customize the parameters.
scatter3(xAtom,yAtom,zAtom,200,'k','filled')

rotate3d on

并输出:

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM