全息图再现matlab程序,Matlab程序错误原因?菲涅耳积分和全息图的生成与再现

%菲涅耳积分傅里叶变换方法

function [f1,dx1,dy1,x1,y1]=fresnell(f0,M,N,dx0,dy0,z,lambda)

k=2*pi/lambda;

x0=ones(N,1)*[-M/2:M/2-1]*dx0;

y0=[-N/2:N/2-1]'*ones(1,M)*dy0;%Input f0 is in natural order

g=f0.*exp(i*0.5*k*(x0.^2+y0.^2)/z);%First phase factor

G=fftshift(fft2(fftshift(g)));%Fourier transform

du=1./(M*dx0);

dv=1./(N*dy0);

dx1=lambda*z*du;

dy1=lambda*z*dv;

x1=ones(N,1)*[-M/2:M/2-1]*dx1;

y1=[-N/2:N/2-1]'*ones(1,M)*dy1;%Baseline for output

f1=G.*exp(i*0.5*k*(x1.^2+y1.^2)/z);%Second phase factor

f1=f1./(i*lambda*z);

function [f1,dx1,dy1,x1,y1]=fresnel(f0,M,N,dx0,dy0,z,lambda)

k=2*pi/lambda;

du=1./(M*dx0);

dv=1./(N*dy0);

u=ones(N,1)*[0:M/2-1 -M/2:-1]*du; %Noteo order of points for FFT

v=[0:N/2-1 -N/2:-1]'*ones(1,M)*dv;

H=exp(-i*2*pi^2*(u.^2+v.^2)*z/k); %Fourier transform of kernel

f1=ifft2(fft2(f0).*H);%Convolution

dx1=dx0;

dy1=dy0;

x1=ones(N,1)*[-M/2:M/2-1]*dx1;%Baseline for output

y1=[-N/2:N/2-1]*ones(N,l)*dy1

%菲涅耳全息图的生成与再现

clear;

clc;

cm=0.01;

um=1e-6;

N=128;%全息图分辨率

%原始图大小

hx=1*cm;

hy=1*cm;

%原始图各方向增量

dhx=hx/N;

dhy=hy/N;

x=dhx.*(ones(N,1)*[-N/2:N/2-1]);

y=(dhy.*(ones(N,1)*[-N/2:N/2-1]))';

p1=imread('logo.bmp');

figure;

imshow(p1);%原始图

z=4;%菲涅尔传输距离

w=0.63*um;%波长

k=2*pi/w;%波数

[f,dx1,dy1,x1,y1]=fresnel(p1,N,N,dhx,dhy,z,w);

sit=pi/6;%参考光角度

ur=exp(-j*k*y*sin(sit));%参考光的复波函数

f1=f+ur;

f1=abs(f1).^2;

f1=mat2gray(f1);

figure;

imshow(f1);%全息图

rp1=f1.*conj(ur);%再现光照射

a=0.002;

b=0.3;

rp1=pure(rp1,a,b,x1,y1);%消除零级和共轭像

[f2,dx2,dy2,x2,y2]=fresnell(rp1,N,N,dx1,dy1,z,w);

f2=abs(f2).^2;

f2=mat2gray(f2);

figure;

imshow(f2);

运行:

??? Error using ==> fresnel

Too many input arguments.

Error in ==> feinieerhologram at 21

[f,dx1,dy1,x1,y1]=fresnel(p1,N,N,dhx,dhy,z,w);

[本帖最后由 mooni 于 2009-4-14 11:12 编辑]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值