有哪位大神可以对这段程序详细解释一下吗?fft的MATLAB程序

fft变换过程
function y=myfft(xr,n)

p=0:n-1 ; % 开始倒位序
nu=log2(n);

p1=p;

b=zeros(1,n);

for t=1:nu;

p2=floor(p1/2);

b=b*2+(p1-2*p2); p1=p2;

end;

yr(p+1)=xr(b+1);

xr=yr; % 倒位序结束
t=0:n/2-1; %计算因子 w 开始 (只计算
for v=0:n/2-1;

w=exp(-2*i*pi*t/n);

end; %计算因子w 结束

for m=1:nu; % 计算x(k)开始

h=2^(m-1);

k=1;

while(k<n+1)

for t=1:h;

y=bitshift(k-1,nu-m,nu)+1; %求w 的幂次数
xch(k)=xr(k)+w(y)*xr(k+h);
k=k+1;

end;

for t=1:h;

y=bitshift(k-1-h,nu-m,nu)+1; %求w 的幂次数

xch(k)=xr(k-h)-xr(k)*w(y);

k=k+1;

end;
end;

xr=xch;

end; % 计算x(k)结束

y=xr %输出变换后的结果