[已解决] axicon后的艾里光场,根据一个公式写的,第二张图就是生成不出来,求大神指教,我哪里写错了吗

[复制链接]
脚后跟脚后跟 发表于 2021-4-29 16:41:53
代码
clc
clear all
close all

N=200;
lambda=488e-6;
x1=linspace(-1,1,N);
y1=x1;
[x,y]=meshgrid(x1,y1);
[theta,R]=cart2pol(x,y)
w=0.1;
k=2*pi/lambda;
z=100;
n=1.5;
alpha=2.*pi/360;
E0=exp(-R.^2/w^2);

I0=E0.*conj(E0);
I0=I0/max(max(I0));
%figure;imagesc(I0)
figure;mesh(x,y,I0)

x2=linspace(-1,1,N);
y2=x2;
[x2,y2]=meshgrid(x2,y2);
[theta1,r]=cart2pol(x2,y2);
A=besselj(0,k.*R.*r/z);
B=i.*k.*R.^2/(2.*z);
C=i.*k.*(n-1)*alpha.*R;
syms R;
D=int((E0.*A.*exp(B-C)).*R,0,w)
E_1=(-i.*k/z).*exp(i.*k.*z).*exp(i.*k.*r.^2/z);
E1=E_1.*D;
I1=E1.*conj(E1);
I1=I1/max(max(I1));
%figure;imagesc(I1)
figure;mesh(x2,y2,I1)


错误
错误使用 mesh (line 127)
数据输入必须是可转换为双精度值的数值、日期时间、持续时间、分类数组或对象。

出错 Untitled4 (line 37)
figure;mesh(x2,y2,I1)



最佳答案


WarnerChang 发表于 2021-4-29 16:57:22
最后一句改为:
figure;mesh(x2,y2,double(I1))
sym类型数据不能用于绘图
回复此楼

2 条回复


WarnerChang 发表于 2021-4-29 16:57:22
最后一句改为:
figure;mesh(x2,y2,double(I1))
sym类型数据不能用于绘图
回复此楼

脚后跟脚后跟 发表于 2021-4-29 17:49:09
WarnerChang 发表于 2021-4-29 16:57
最后一句改为:
figure;mesh(x2,y2,double(I1))
sym类型数据不能用于绘图

可以了!谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
热门教程
站长推荐
快速回复 返回顶部 返回列表