X=fft(x,N) %对离散序列进行离散傅立叶变换
说明:x可以是向量、矩阵和多维数组;N为输入变量x的序列长度,可省略,如果X的长度小于N,则会自动补零;如果X的长度大于N,则会自动截断;当N取2的整数幂时,傅立叶变换的计算速度最快。通常取大于又最靠近x长度的幂次。
一般情况下,fft求出的函数为复数,可用abs及angle分别求其幅值和相位。 ? ifft:一维快速傅立叶逆变换。 语法:
X=ifft(x,N) %对离散序列进行离散傅立叶逆变换
【例2.27】利用傅立叶变换和卷积公式求两个离散序列的卷积。
已知:A(n)???0?1其它?0 B(n)??n?2,3,?10?1其它
n?4,5,?9 A=ones(1,10); A(1)=0
A =
0 1 1 1 1 1 1 1 1 1 B=ones(1,9); B([1 2 3])=0
B =
0 0 0 1 1 1 1 1 1 C=conv(A,B) %计算卷积
C =
Columns 1 through 13
0 0 0 0 1 2 3 4 5 6 6 6 6
Columns 14 through 18
5 4 3 2 1 N=32; %序列长度为32
AF=fft(A,N); %傅立叶变换 BF=fft(B,N); CF=AF.*BF;
CC=real(ifft(CF)); %过滤掉虚部
图2.10 卷积结果
程序分析:可以看到直接计算的卷积结果C和用傅立叶变换求卷积的CC结果相同,如图2.10所示。其中序列长度N的取值应为2的整数幂,必须不小于length(A)+length(B)-1。
2.6.4向量函数
? 两个向量的矢量积(叉乘) 语法: cross(a,b)
? 两个向量的数量积(点乘) 语法: dot(a,b)
说明:通常a、b为包含3个元素的向量。 【例2.28】计算向量的叉乘和点乘。
a=[1 2 3]; b=[4 5 6]; c=cross(a,b)
c =
-3 6 -3 c=dot(a,b)
c =
32