function cjh(M,BOE,p,w,z) 
%宽度 M=4mm,BOE=150mm,迭代次数p=260,
%波长 w=0.6328e-3mm AB间距z=1e3mm
% Part Ⅰ
r=0.849; %高斯半径(从0.1到250)
M=4;
BOE=150;
p=260;
w=0.6328e-3;
z=1e3;
N=BOE/(w*z);
X=[-M/2:1/N:M/2];
Y=X;
m=length(X)
A=zeros(9,9);
Z1=exp(-(X.^2+Y.^2)./(2*r*r))/(2*pi*r*r); %高斯分布
A=Z1;
B=zeros(9,9);
B(2:3,2:3)=1;    %理想的矩阵
B(2:3,6:7)=1;
B(6:7,2:3)=1;
B(6:7,6:7)=1;
figure(1)
mesh(B);
% Part Ⅱ  实现FFT 
FB=ifft2(B);
FB0=FB; %初值
FBi=angle(FB0);
FBi0=exp(i*FBi);
FBB=FBi0;
for k =1:p
AA = A.*FBB;   %振幅替换为高斯分布
FA=fft2(AA);
FAm=abs(FA);
FAi1=angle(FA);
FAi=exp(i*FAi1);
BB=B.*FAi;     %振幅替换为矩阵分布
FB=ifft2(BB);
FBi1=angle(FB);
FBi=exp(i*FBi1);
FBB=FBi;
end

算法的大概意思是用理想的输出方波,用这一算法实行逆变换,进行设计
方波是二维的,红色字体那边在运行时出错了,说矩阵维数必须相同。感觉应该是“A”那边出错了,不知道要怎么修改,是不是高斯函数可以改成二维的?如果是,应该怎么做,希望大家帮帮忙!