1,核心代码
initM(MATCOM_VERSION);
CRect m_client;
double lam=500e-9;
double a=2e-3;
double D=1;
double ym=5*lam*D/a;
double xs=ym;
int n=1001;
Mm ys=linspace(-ym,ym,n);
Mm B;
B=zeros(10,n);
for(int i=1;i<=n;i++)
{
double r1=sqrt((ys.r(i)-a/2)*(ys.r(i)-a/2)+D*D);
double r2=sqrt((ys.r(i)+a/2)*(ys.r(i)+a/2)+D*D);
double phi=2*3.1415926*(r2-r1)/lam;
for(int j=1;j<=10;j++)
B.r(j,i)=4*cos(phi/2)*cos(phi/2);
}
//画曲线
Mm hline = winaxes(GetDlgItem(IDC_LINE)->m_hWnd);
GetDlgItem(IDC_LINE)->GetClientRect(m_client);
axesposition(0,0,m_client.Width(),m_client.Height());
Mm m_line=plot((CL(ys),B));
set(m_line,TM("color"),TM("blue"));
//画图形
Mm himage = winaxes(GetDlgItem(IDC_IMAGE)->m_hWnd);
GetDlgItem(IDC_IMAGE)->GetClientRect(m_client);
axesposition(0,0,m_client.Width(),m_client.Height());
imagesc((xs,ys,CL(B)));
//颜色渲染
Mm color;
int colorIndex=64;
color=zeros(colorIndex,3);
for(int k=1;k<=colorIndex;k++)
color.r(k,1)=(double)k/colorIndex;
colormap(color);
drawnow();
exitM();
2,运行结果