光学中泽尼克多项式的matlab表示

泽尼克多项式是一个以1953年获诺贝尔物理学奖荷兰物理学家弗里茨·泽尔尼克命名的正交多项式。泽尼克多项式在光学中有很多应用,最典型的是用来描述光学系统的相差。其一般分为奇、偶两类,维基百科中所给出的定义为[1]:

图片

维基百科给出的各阶泽尼克多项式分布如下[1]:

图片

为了产生泽尼克多项式,我们基于维基百科定义在matlab中给出如下代码用于创建函数文件:


function [Znm]=zernike(n,m,r,fi)
p=(n-abs(m))/2;
q=(n+abs(m))/2;
Znm=0;
for k=0:p
    c=(-1)^k.*factorial(n-k)./(factorial(k).*factorial(q-k).*factorial(p-k));
    Rnm=c*r.^(n-2*k);

    Znm0=Rnm.*exp(1i*m.*fi);

    Znm=Znm0+Znm;
end
end
尼克多项式分布,如下

图片

n=1,m=1

图片

n=1,m=-1

图片

n=2,m=-2

完整matlab代码如下:

tic
clf;
clear
x=linspace(-1,1,400);
y=x;
[X,Y]=meshgrid(x,y);
circ=zeros(400,400);
R=sqrt(X.^2+Y.^2);
circ(R<=1)=1;
r=R.*circ;
fi=atan2(Y,X)+pi*(abs(sign(Y))-sign(Y));
n=2; m=-2;
Znm=zernike(n,m,r,fi);
imshow(Znm,[]); colormap(turbo)
axis equal;
axis tight;

参考文献:

[1] 泽尔尼克多项式 - 维基百科,自由的百科全书 (wikipedia.org)

更多内容关注微信公众号“光学师兄的日常”。

  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值