快速傅里叶变换MATLABWord文档格式.docx
- 文档编号:13219879
- 上传时间:2022-10-08
- 格式:DOCX
- 页数:8
- 大小:78.09KB
快速傅里叶变换MATLABWord文档格式.docx
《快速傅里叶变换MATLABWord文档格式.docx》由会员分享,可在线阅读,更多相关《快速傅里叶变换MATLABWord文档格式.docx(8页珍藏版)》请在冰豆网上搜索。
下面略去推导和证明,仅以长度为8的序列为例子说明这两种算法。
1.DIT-FFT
N=8点DIT-FFT运算流图x(0)x(4)
x
(2)
x(6)x
(1)x(5)
x(3)
(0)
(1)
(2)
(3)(4)(5)(6)x(7)NL=1级L=2
L=3X(7)
相应的MATLAB程序:
%自编FFT
%基2时域抽取DIT-FFT
%输入x,输出X均为行向量
functionX=myfft1(x)
iflength(x)~=2^fix(log2(length(x)))%如果长度超出,补足下一个幂的0。
x=[x,zeros(1,2^ceil(log2(length(x)))-length(x))];
end
%时域序列倒序
x=x(invertorder([0:
length(x)-1]));
N=length(x);
K=log2(N);
X2=zeros(1,N);
X1=x;
W_n=exp(-1j*2*pi/N);
%旋转因子
fork=1:
K
fori=0:
2^(K-k)-1
forj=0:
2^(k-1)-1
ifmod(k,2)==1%奇数
X2(j+i*2^k+1)=X1(j+i*2^k+1)+W_n^(j*2^(K-k))*X1(j+i*2^k+2^(k-1)+1);
X2(j+i*2^k+2^(k-1)+1)=X1(j+i*2^k+1)-W_n^(j*2^(K-k))*X1(j+i*2^k+2^(k-1)+1);
else%偶数
X1(j+i*2^k+1)=X2(j+i*2^k+1)+W_n^(j*2^(K-k))*X2(j+i*2^k+2^(k-1)+1);
X1(j+i*2^k+2^(k-1)+1)=X2(j+i*2^k+1)-W_n^(j*2^(K-k))*X2(j+i*2^k+2^(k-1)+1);
if(mod(K,2)==1)
X=X2;
else
X=X1;
2.DIF―FFT
x(0)x
(1)x
(2)x(3)
x(4)x(5)x(6)x(7)x
(0)
(4)
(2)
(6)
X
(1)
X(5)
X(3)
X(7)
x(0)
N
相应的MATLAB程序:
%自编FFT
%基2频域抽取DIF-FFT
%输入x,输出X均为行向量
functionX=myfft2(x)
x=[x,zeros(1,2^ceil(log2(length(x)))-length(x))];
X2(j+i*2^(K-k+1)+1)=X1(j+i*2^(K-k+1)+1)+X1(j+i*2^(K-k+1)+2^(K-k)+1);
X2(j+i*2^(K-k+1)+2^(K-k)+1)=(X1(j+i*2^(K-k+1)+1)-X1(j+i*2^(K-k+1)+2^(K-k)+1))*W_n^(j*2^(k-1));
X1(j+i*2^(K-k+1)+1)=X2(j+i*2^(K-k+1)+1)+X2(j+i*2^(K-k+1)+2^(K-k)+1);
X1(j+i*2^(K-k+1)+2^(K-k)+1)=(X2(j+i*2^(K-k+1)+1)-X2(j+i*2^(K-k+1)+2^(K-k)+1))*W_n^(j*2^(k-1));
%频域序列倒序
X=X(invertorder([0:
length(X)-1]));
3.倒序处理
%输入为自然序列,从0开始,2^M。
%输出为它的倒序数,从1开始。
functions=invertorder(t)
iflength(t)~=2^fix(log2(length(t)))%
N=length(t);
M=log2(N);
s=zeros(1,N);
J=t
(1);
%从0开始
s
(1)=1;
fori=2:
forj=1:
M
ifJ>
=N/2^j
J=J-N/2^j;
s(i)=J+N/2^j+1;
J=s(i)-1;
break;
4.二维傅里叶变换
思想:
先对矩阵每行作变换,再对每列变换,但要注意MATLAB里转置是共轭转置,单独的转置是.’。
%自编二维傅里叶变换
functionF=myfftdimention2(X)
%先对每一行向量变换,再对每一列向量变换。
[m,n]=size(X);
if(m~=2^nextpow2(m))
M=2^nextpow2(m);
M=m;
if(n~=2^nextpow2(n))
N=2^nextpow2(n);
N=n;
F=zeros(M,N);
x=zeros(1,n);
y=zeros(1,m);
fx=zeros(1,N);
fy=zeros(1,M);
fori=1:
x=X(i,:
);
fx=myfft1(x);
F(i,:
)=fx;
y=F(:
j).'
;
%转置但不共轭
fy=myfft1(y);
F(:
j)=fy;
温馨推荐
您可前往XX文库小程序
享受更优阅读体验
不去了
立即体验
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 快速 傅里叶变换 MATLAB