博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
matlab复色光夫琅禾费衍射
阅读量:3923 次
发布时间:2019-05-23

本文共 1032 字,大约阅读时间需要 3 分钟。

%%%多光谱夫琅禾费衍射%j经过验证只要按照三维矩阵方式计算出了RGB的分量就能正常显示RGB图像lamr=650e-9;lamg=520e-9;lamb=450e-9;f=0.3;%定义波长以及透镜长度xmax=0.025e-4;ymax=0.025e-4;sinix=0;siniy=0;%定义矩形孔尺寸以及x,y轴偏移量cx=0.3;cy=0.3;%观察屏尺寸N=10e2;x=linspace(-xmax,xmax,N);y=linspace(-ymax,ymax,N);%如果采用积分法需要使用的光源坐标坐标x1=linspace(-cx,cx,N);y1=linspace(-cy,cy,N);%观察屏坐标numx=length(x);numy=length(y);I=zeros(numx,numy,3);%定义三色矩阵ticfor t=1:numx    for tt=1:numy        alphar=pi*2*xmax/lamr*(x1(t)/f-sinix);        alphag=pi*2*xmax/lamg*(x1(t)/f-sinix);        alphab=pi*2*xmax/lamb*(x1(t)/f-sinix);        betar=pi*2*xmax/lamr*(x1(tt)/f-siniy);        betag=pi*2*xmax/lamg*(x1(tt)/f-siniy);        betab=pi*2*xmax/lamb*(x1(tt)/f-siniy);        I(t,tt,1)=(sin(alphar)/alphar)^2*(sin(betar)/betar)^2;        I(t,tt,2)=(sin(alphag)/alphag)^2*(sin(betag)/betag)^2;        I(t,tt,3)=(sin(alphab)/alphab)^2*(sin(betab)/betab)^2;    endend            I=I/max(max(max(I)));    toc    imshow(255*I)    %最后这一步最重要,因为有了他图像才得到拉伸,在外面乘是不行的,还就得    %在表达式里,否则图像是糊的

最大的一坑就是不知道这个图像拉伸需要乘255,搞了半天以为自己有问题

留此纪念
最后上一点图
f=0.3时候的

sinx,siny有偏移时候的

取更大f时候的

转载地址:http://wmhrn.baihongyu.com/

你可能感兴趣的文章
剑指 Offer 56 - I. 数组中数字出现的次数
查看>>
模式24.访问者模式-Java
查看>>
剑指 Offer 56 - II. 数组中数字出现的次数 II
查看>>
剑指 Offer 57. 和为s的两个数字
查看>>
剑指 Offer 57 - II. 和为s的连续正数序列
查看>>
剑指 Offer 58 - I. 翻转单词顺序
查看>>
剑指 Offer 58 - II. 左旋转字符串
查看>>
剑指 Offer 59 - I. 滑动窗口的最大值
查看>>
剑指 Offer 59 - II. 队列的最大值
查看>>
剑指 Offer 60. n个骰子的点数
查看>>
剑指 Offer 61. 扑克牌中的顺子
查看>>
剑指 Offer 62. 圆圈中最后剩下的数字
查看>>
剑指 Offer 63. 股票的最大利润
查看>>
剑指 Offer 65. 不用加减乘除做加法
查看>>
剑指 Offer 66. 构建乘积数组
查看>>
剑指 Offer 67. 把字符串转换成整数
查看>>
剑指 Offer 68 - I. 二叉搜索树的最近公共祖先
查看>>
剑指 Offer 68 - II. 二叉树的最近公共祖先
查看>>
剑指 Offer 18. 删除链表的节点
查看>>
剑指 Offer 44. 数字序列中某一位的数字
查看>>